using IRaCIS.Application.Contracts;
using IRaCIS.Core.Domain.Share;

namespace IRaCIS.Application.Services
{
    public interface IUserService
    {
        Task<IResponseOutput<UserAddedReturnDTO>> AddUser(UserCommand userAddModel);
        Task<IResponseOutput> DeleteUser(Guid userId);
        Task<UserDetailDTO> GetUser(Guid id);
        Task<PageOutput<UserListDTO>> GetUserList(UserListQueryDTO param);
        Task<IResponseOutput<LoginReturnDTO>> Login(string userName, string password);
        Task<IResponseOutput> ModifyPassword(EditPasswordCommand editPwModel);
        Task<IResponseOutput> ResetPassword(Guid userId);
      
        Task<IResponseOutput> UpdateUser(UserCommand model);
        Task<IResponseOutput> UpdateUserState(Guid userId, UserStateEnum state);

        //Task<IResponseOutput> SendVerificationCode(string emailOrPhone, VerifyType verificationType, bool isReviewer = false);
        //Task<IResponseOutput> SetNewPassword(ResetPasswordCommand resetPwdModel);
    }
}