using FamilyTreeAPI.Entities;

namespace FamilyTreeAPI.Interface;

public interface IPerson
{
    Task<ResultModel<TreeNode<string>>> GetByFamilyAsync(int id);
    Task<ResultModel<List<TreeNode<string>>>> GetFamilyTreeBy(FamilyCriteria criteria);
    Task<ResultModel<List<PersonDto>>> GetChildren(ChildCriteria criteria);
    Task<ResultModel<List<PersonDto>>> GetPerson(PersonCriteria criteria);
    Task<ResultModel<Dictionary<int,PersonDto>>> GetDicFamily();
    Task<ResultModel<PersonDto>> GetByIdAsync(int id);
    Task<ResultModel<int>> DeleteAsync(int id);

    Task<ResultModel<string>> UploadImage(UploadCriteria criteria);
    ResultModel<int> DeleteUploadFile(DeleteFileCriteria criteria);
    Task<ResultModel<int>> SaveAsync(PersonForSave dto);
}
