using LSFE.Infrastructure.Dto;
using LSFE.Infrastructure.Entities;
using LSFE.Infrastructure.Model;
using Microsoft.AspNetCore.Identity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;

namespace LSFE.Domain.Contracts
{
    public interface IAccountService
    {
        Task<List<RoleDto>> GetUserRole();
        Task<List<UserWithRoleDto>> GetUsers(string company);
        Task<List<Departments>> GetDepartment();
        Task<AppsUsers?> GetUserById(string userId);
        Task<string> CreateToken(AppsUsers user);
        Task<Response> PostPutDepartmentAsync(Departments dto);
        Task<Response> RegisterUserAsync(RegisterUserDto dto);
        Task<Response> UpdateUserAsync(UpdateUserDto dto);
        Task<Response> AddUserToRoleAsync(string userId, string roleName);
        Task<Response> AddClaimToUserAsync(string userId, Claim claim);
    }

}
