using Countries.NET.Database; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using MTWorkHR.Application.Filters; using MTWorkHR.Application.Identity; using MTWorkHR.Application.Models; using MTWorkHR.Identity.Services; namespace MTWorkHR.API.Controllers { [Route("api/[controller]")] [ApiController] [AppAuthorize] public class UserController : ControllerBase { private readonly IUserService _userService; public UserController(IUserService userService) { this._userService = userService; } [HttpPost("GetAll")] public async Task>> GetAll([FromBody] UserPagingInputDto pagingInput) { return Ok( await _userService.GetAll(pagingInput)); } [HttpGet("GetAllCompanyEmployees")] public async Task>> GetAllCompanyEmployees() { return Ok(await _userService.GetAllCompanyEmployees()); } [HttpGet("Get")] public async Task> Get() { return Ok(await _userService.GetById()); } [HttpGet("GetById")] public async Task> GetById(string userId) { return Ok(await _userService.GetById(userId)); } [HttpGet("GetByEmail")] public async Task> GetByEmail(string userId) { return Ok(await _userService.GetByEmail(userId)); } [HttpPost("Create")] [ProducesResponseType(StatusCodes.Status200OK)] [Consumes("multipart/form-data")] public async Task> Create([FromForm] UserDto input) { return await _userService.Create(input); } [HttpPost("Update")] [Consumes("multipart/form-data")] [ProducesResponseType(StatusCodes.Status200OK)] public async Task> Update([FromForm] UserUpdateDto input) { return Ok(await _userService.Update(input)); } [HttpDelete("Delete")] [ProducesResponseType(StatusCodes.Status200OK)] public async Task Delete([FromQuery] string id) { await _userService.Delete(id); } [HttpPost("ResetPassword")] [ProducesResponseType(StatusCodes.Status200OK)] public async Task ResetPassword([FromBody] ResetPasswordDto input) { return await _userService.ResetPassword(input); } [HttpGet("GetBlobFile")] [ProducesResponseType(StatusCodes.Status200OK)] public async Task GetBlobFile([FromQuery] string filePath) { var res = await _userService.Download(filePath); return File(res.Content, res.ContentType); } } }