diff --git a/BMA.EHR.Application/Repositories/Leaves/GenericLeaveRepository.cs b/BMA.EHR.Application/Repositories/Leaves/GenericLeaveRepository.cs index 04e46ec1..d2263e74 100644 --- a/BMA.EHR.Application/Repositories/Leaves/GenericLeaveRepository.cs +++ b/BMA.EHR.Application/Repositories/Leaves/GenericLeaveRepository.cs @@ -2,12 +2,7 @@ using BMA.EHR.Domain.Models.Base; using Microsoft.AspNetCore.Http; using Microsoft.EntityFrameworkCore; -using System; -using System.Collections.Generic; -using System.Linq; using System.Security.Claims; -using System.Text; -using System.Threading.Tasks; namespace BMA.EHR.Application.Repositories.Leaves { @@ -60,8 +55,8 @@ namespace BMA.EHR.Application.Repositories.Leaves { if (entity is EntityBase) { - (entity as EntityBase).CreatedUserId = UserId!; - (entity as EntityBase).CreatedFullName = FullName!; + (entity as EntityBase).CreatedUserId = UserId ?? ""; + (entity as EntityBase).CreatedFullName = FullName ?? "System Administrator"; (entity as EntityBase).CreatedAt = DateTime.Now; } diff --git a/BMA.EHR.Infrastructure/Persistence/LeaveSeeder.cs b/BMA.EHR.Infrastructure/Persistence/LeaveSeeder.cs index d7357d0b..8ea12eb8 100644 --- a/BMA.EHR.Infrastructure/Persistence/LeaveSeeder.cs +++ b/BMA.EHR.Infrastructure/Persistence/LeaveSeeder.cs @@ -34,6 +34,10 @@ namespace BMA.EHR.Infrastructure.Persistence Id = Guid.Parse(workSheet?.Cells[row, 1]?.GetValue()!), Name = workSheet?.Cells[row, 2]?.GetValue()!, Code = workSheet?.Cells[row, 3]?.GetValue()!, + + CreatedFullName = "System Administrator", + CreatedAt = DateTime.Now, + }; await service.AddAsync(inserted); diff --git a/BMA.EHR.Leave.Service/BMA.EHR.Leave.Service.csproj b/BMA.EHR.Leave.Service/BMA.EHR.Leave.Service.csproj index 24c08814..ca624d56 100644 --- a/BMA.EHR.Leave.Service/BMA.EHR.Leave.Service.csproj +++ b/BMA.EHR.Leave.Service/BMA.EHR.Leave.Service.csproj @@ -1,4 +1,4 @@ - + net7.0 @@ -66,4 +66,10 @@ + + + PreserveNewest + + + diff --git a/BMA.EHR.Leave.Service/Controllers/LeaveTypeController.cs b/BMA.EHR.Leave.Service/Controllers/LeaveTypeController.cs new file mode 100644 index 00000000..95548490 --- /dev/null +++ b/BMA.EHR.Leave.Service/Controllers/LeaveTypeController.cs @@ -0,0 +1,96 @@ +using BMA.EHR.Application.Repositories; +using BMA.EHR.Application.Repositories.Leaves.LeaveRequests; +using BMA.EHR.Domain.Common; +using BMA.EHR.Infrastructure.Persistence; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Swashbuckle.AspNetCore.Annotations; +using System.Security.Claims; + +namespace BMA.EHR.Leave.Service.Controllers +{ + [Route("api/v{version:apiVersion}/leave-types")] + [ApiVersion("1.0")] + [ApiController] + [Produces("application/json")] + [Authorize] + [SwaggerTag("API ระบบลงเวลาและการลา (ประเภทการลา)")] + public class LeaveTypeController : BaseController + { + #region " Fields " + + private readonly LeaveTypeRepository _leaveTypeRepository; + private readonly LeaveDbContext _context; + private readonly IHttpContextAccessor _httpContextAccessor; + private readonly IWebHostEnvironment _hostingEnvironment; + private readonly IConfiguration _configuration; + private readonly UserProfileRepository _userProfileRepository; + + #endregion + + #region " Constuctor and Destructor " + + public LeaveTypeController(LeaveTypeRepository leaveTypeRepository, + LeaveDbContext context, + IHttpContextAccessor httpContextAccessor, + IWebHostEnvironment hostingEnvironment, + IConfiguration configuration, + UserProfileRepository userProfileRepository) + { + _leaveTypeRepository = leaveTypeRepository; + _context = context; + _httpContextAccessor = httpContextAccessor; + _hostingEnvironment = hostingEnvironment; + _configuration = configuration; + _userProfileRepository = userProfileRepository; + } + + #endregion + + #region " Properties " + + private string? UserId => _httpContextAccessor?.HttpContext?.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value; + + private string? FullName => _httpContextAccessor?.HttpContext?.User?.FindFirst("name")?.Value; + + private bool? PlacementAdmin => _httpContextAccessor?.HttpContext?.User?.IsInRole("placement1"); + + private Guid OcId + { + get + { + if (UserId != null || UserId != "") + return _userProfileRepository.GetUserOCId(Guid.Parse(UserId!)); + else + return Guid.Empty; + } + } + + #endregion + + #region " Methods " + + /// + /// List รายการประเภทการลา + /// + /// + /// + /// เมื่อทำรายการสำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpPost] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + public async Task> GetAllAsync() + { + var leaveTypes = (await _leaveTypeRepository.GetAllAsync()).AsQueryable() + .OrderBy(l => l.Code) + .ToList(); + + return Success(leaveTypes); + } + + #endregion + } +} diff --git a/BMA.EHR.Leave.Service/DTOs/LeaveTypes/CreateLeaveTypeDto.cs b/BMA.EHR.Leave.Service/DTOs/LeaveTypes/CreateLeaveTypeDto.cs new file mode 100644 index 00000000..69c59138 --- /dev/null +++ b/BMA.EHR.Leave.Service/DTOs/LeaveTypes/CreateLeaveTypeDto.cs @@ -0,0 +1,16 @@ +using System.ComponentModel.DataAnnotations; + +namespace BMA.EHR.Leave.Service.DTOs.LeaveTypes +{ + public class CreateLeaveTypeDto + { + [Required] + public Guid Id { get; set; } = Guid.Empty; + + [Required] + public string Name { get; set; } = string.Empty; + + [Required] + public string Code { get; set; } = string.Empty; + } +}