using Nirvana.Common.ApiBase;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using YBDevice.Entity;
using YBDevice.NApi.Application.FamilyInfo;
using YBDevice.NApi.Application.ThirdClient;

namespace YBDevice.NApi
{
    /// <summary>
    /// 家庭成员管理
    /// </summary>
    public interface IFamilyService
    {
        /// <summary>
        /// 家庭成员列表
        /// </summary>
        /// <returns></returns>
        Task<ResultInfo> GetListAsync();
        /// <summary>
        /// 计算成员的类型
        /// </summary>
        /// <param name="brithday">出生年月</param>
        /// <returns></returns>
        FamilyType GetType(DateTime brithday);

        /// <summary>
        /// 家庭成员信息修改
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        Task<ResultInfo> SubmitAsync(FamilySubmitModel model);

        /// <summary>
        /// 家庭成员删除
        /// </summary>
        /// <param name="id">家庭成员ID</param>
        /// <returns></returns>
        Task<ResultInfo> DeleteAsync(int id);

        /// <summary>
        /// 家庭成员详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<ResultInfo> DetailAsync(int id);
        /// <summary>
        /// 家庭成员详情
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<YB_Family> InfoAsync(int id);

        /// <summary>
        /// 设置目标体重
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        Task<ResultInfo> SetTargetAsync(YB_FamilyTarget model);
        /// <summary>
        /// 家庭成员模式切换
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        Task<ResultInfo> SetTypeAsync(FamilyTypeSetC2SDto data);
    }
}
