From 0a626fb393132f2ca9bd27dfeb84fc066da9f773 Mon Sep 17 00:00:00 2001 From: Kittapath Date: Wed, 5 Jul 2023 19:08:38 +0700 Subject: [PATCH] =?UTF-8?q?api=20=E0=B9=83=E0=B8=9A=E0=B8=9B=E0=B8=A3?= =?UTF-8?q?=E0=B8=B0=E0=B8=81=E0=B8=AD=E0=B8=9A=E0=B8=A7=E0=B8=B4=E0=B8=8A?= =?UTF-8?q?=E0=B8=B2=E0=B8=8A=E0=B8=B5=E0=B8=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Models/Placement/PlacementCareer.cs | 30 ---------- .../Models/Placement/PlacementCertificate.cs | 22 +++++++ .../Models/Placement/PlacementProfile.cs | 2 +- BMA.EHR.Domain/Shared/GlobalMessages.cs | 4 ++ .../Persistence/ApplicationDBContext.cs | 2 +- .../Controllers/PlacementController.cs | 59 +++++++++++++++++-- .../Requests/PersonCertificateRequest.cs | 8 ++- .../Requests/PersonFamilyRequest.cs | 32 +++++----- 8 files changed, 104 insertions(+), 55 deletions(-) delete mode 100644 BMA.EHR.Domain/Models/Placement/PlacementCareer.cs create mode 100644 BMA.EHR.Domain/Models/Placement/PlacementCertificate.cs diff --git a/BMA.EHR.Domain/Models/Placement/PlacementCareer.cs b/BMA.EHR.Domain/Models/Placement/PlacementCareer.cs deleted file mode 100644 index a689c7c6..00000000 --- a/BMA.EHR.Domain/Models/Placement/PlacementCareer.cs +++ /dev/null @@ -1,30 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using System.ComponentModel.DataAnnotations; -using BMA.EHR.Domain.Models.Base; - -namespace BMA.EHR.Domain.Models.Placement -{ - public class PlacementCareer : EntityBase - { - [Required, Comment("Id ผู้สมัคร")] - public virtual PlacementProfile? PlacementProfile { get; set; } - - [Required, Comment("ระยะเวลาเริ่ม")] - public DateTime DurationStart { get; set; } = DateTime.Now.Date; - - [Required, Comment("ระยะเวลาสิ้นสุด")] - public DateTime DurationEnd { get; set; } = DateTime.Now.Date; - - [Required, Comment("สถานที่ทำงาน/ฝึกงาน")] - public string Name { get; set; } = string.Empty; - - [Required, Comment("ตำแหน่ง/ลักษณะงาน")] - public string Position { get; set; } = string.Empty; - - [Required, MaxLength(20), Comment("เงินเดือนสุดท้ายก่อนออก")] - public int Salary { get; set; } - - [Required, Comment("เหตุผลที่ออก")] - public string Reason { get; set; } = string.Empty; - } -} diff --git a/BMA.EHR.Domain/Models/Placement/PlacementCertificate.cs b/BMA.EHR.Domain/Models/Placement/PlacementCertificate.cs new file mode 100644 index 00000000..7b6d20e7 --- /dev/null +++ b/BMA.EHR.Domain/Models/Placement/PlacementCertificate.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore; +using System.ComponentModel.DataAnnotations; +using BMA.EHR.Domain.Models.Base; + +namespace BMA.EHR.Domain.Models.Placement +{ + public class PlacementCertificate : EntityBase + { + [Required, Comment("Id ผู้สมัคร")] + public virtual PlacementProfile? PlacementProfile { get; set; } + [MaxLength(20), Comment("เลขที่ใบอนุญาต")] + public string? CertificateNo { get; set; } + [MaxLength(200), Comment("หน่วยงานผู้ออกใบอนุญาต")] + public string? Issuer { get; set; } + [Comment("วันที่ออกใบอนุญาต")] + public DateTime? IssueDate { get; set; } + [Comment("วันที่หมดอายุ")] + public DateTime? ExpireDate { get; set; } + [MaxLength(100), Comment("ชื่อใบอนุญาต")] + public string? CertificateType { get; set; } + } +} diff --git a/BMA.EHR.Domain/Models/Placement/PlacementProfile.cs b/BMA.EHR.Domain/Models/Placement/PlacementProfile.cs index 02d0f0bf..390b0960 100644 --- a/BMA.EHR.Domain/Models/Placement/PlacementProfile.cs +++ b/BMA.EHR.Domain/Models/Placement/PlacementProfile.cs @@ -236,7 +236,7 @@ namespace BMA.EHR.Domain.Models.Placement [Comment("ผลสมัครสอบ")] public string? Pass { get; set; } - public virtual List PlacementCareers { get; set; } = new List(); + public virtual List PlacementCertificates { get; set; } = new List(); public virtual List PlacementEducations { get; set; } = new List(); } } diff --git a/BMA.EHR.Domain/Shared/GlobalMessages.cs b/BMA.EHR.Domain/Shared/GlobalMessages.cs index c5b6b0b3..3b9627bc 100644 --- a/BMA.EHR.Domain/Shared/GlobalMessages.cs +++ b/BMA.EHR.Domain/Shared/GlobalMessages.cs @@ -54,5 +54,9 @@ public static readonly string PositionEmployeePositionSideNotFound = "ไม่พบข้อมูลด้านของตำแหน่ง"; public static readonly string PositionEmployeePositionNotFound = "ไม่พบข้อมูลตำแหน่ง"; #endregion + + #region " Placement " + public static readonly string CertificateNotFound = "ไม่พบข้อมูลใบประกอบอาชีพ"; + #endregion } } diff --git a/BMA.EHR.Infrastructure/Persistence/ApplicationDBContext.cs b/BMA.EHR.Infrastructure/Persistence/ApplicationDBContext.cs index 532d14ec..405cc2a2 100644 --- a/BMA.EHR.Infrastructure/Persistence/ApplicationDBContext.cs +++ b/BMA.EHR.Infrastructure/Persistence/ApplicationDBContext.cs @@ -239,7 +239,7 @@ namespace BMA.EHR.Infrastructure.Persistence #region " Placements " public DbSet Placements { get; set; } - public DbSet PlacementCareers { get; set; } + public DbSet PlacementCertificates { get; set; } public DbSet PlacementEducations { get; set; } public DbSet PlacementIsProperties { get; set; } public DbSet PlacementProfiles { get; set; } diff --git a/BMA.EHR.Placement.Service/Controllers/PlacementController.cs b/BMA.EHR.Placement.Service/Controllers/PlacementController.cs index a342384d..46079038 100644 --- a/BMA.EHR.Placement.Service/Controllers/PlacementController.cs +++ b/BMA.EHR.Placement.Service/Controllers/PlacementController.cs @@ -1,5 +1,6 @@ using BMA.EHR.Application.Repositories; using BMA.EHR.Domain.Common; +using BMA.EHR.Domain.Models.Placement; using BMA.EHR.Domain.Shared; using BMA.EHR.Infrastructure.Persistence; using BMA.EHR.Placement.Service.Requests; @@ -541,16 +542,64 @@ namespace BMA.EHR.Placement.Service.Controllers return Success(); } - [HttpGet("certificate/{personalId:length(36)}")] + [HttpPut("certificate/{personalId:length(36)}")] public async Task> UpdateCertificate([FromBody] PersonCertificateRequest req, Guid personalId) { - var person = await _context.PlacementProfiles.FindAsync(personalId); + var person = await _context.PlacementProfiles + .Include(x => x.PlacementCertificates) + .FirstOrDefaultAsync(x => x.Id == personalId); if (person == null) return Error(GlobalMessages.DataNotFound, 404); - person.LastUpdateFullName = FullName ?? "System Administrator"; - person.LastUpdateUserId = UserId ?? ""; - person.LastUpdatedAt = DateTime.Now; + if (req.Id == null) + { + var data = new PlacementCertificate + { + PlacementProfile = person, + CertificateNo = req.CertificateNo, + Issuer = req.Issuer, + IssueDate = req.IssueDate, + ExpireDate = req.ExpireDate, + CertificateType = req.CertificateType, + CreatedUserId = FullName ?? "", + CreatedFullName = UserId ?? "System Administrator", + CreatedAt = DateTime.Now, + LastUpdateFullName = FullName ?? "System Administrator", + LastUpdateUserId = UserId ?? "", + LastUpdatedAt = DateTime.Now, + }; + } + else + { + var certificate = person.PlacementCertificates.FirstOrDefault(x => x.Id == req.Id); + if (certificate == null) + return Error(GlobalMessages.CertificateNotFound, 404); + certificate.CertificateNo = req.CertificateNo; + certificate.Issuer = req.Issuer; + certificate.IssueDate = req.IssueDate; + certificate.ExpireDate = req.ExpireDate; + certificate.CertificateType = req.CertificateType; + certificate.LastUpdateFullName = FullName ?? "System Administrator"; + certificate.LastUpdateUserId = UserId ?? ""; + certificate.LastUpdatedAt = DateTime.Now; + } + _context.SaveChanges(); + + return Success(); + } + + [HttpDelete("certificate/{personalId:length(36)}/{certificateId:length(36)}")] + public async Task> DeleteCertificate(Guid personalId, Guid certificateId) + { + var person = await _context.PlacementProfiles + .Include(x => x.PlacementCertificates) + .FirstOrDefaultAsync(x => x.Id == personalId); + if (person == null) + return Error(GlobalMessages.DataNotFound, 404); + var certificate = person.PlacementCertificates.FirstOrDefault(x => x.Id == certificateId); + if (certificate == null) + return Error(GlobalMessages.CertificateNotFound, 404); + _context.PlacementCertificates.Remove(certificate); _context.SaveChanges(); return Success(); diff --git a/BMA.EHR.Placement.Service/Requests/PersonCertificateRequest.cs b/BMA.EHR.Placement.Service/Requests/PersonCertificateRequest.cs index 497826da..f77c0675 100644 --- a/BMA.EHR.Placement.Service/Requests/PersonCertificateRequest.cs +++ b/BMA.EHR.Placement.Service/Requests/PersonCertificateRequest.cs @@ -5,7 +5,11 @@ namespace BMA.EHR.Placement.Service.Requests { public class PersonCertificateRequest { - public string Name { get; set; } - public bool Value { get; set; } + public Guid? Id { get; set; } + public string? CertificateNo { get; set; } + public string? Issuer { get; set; } + public DateTime? IssueDate { get; set; } + public DateTime? ExpireDate { get; set; } + public string? CertificateType { get; set; } } } diff --git a/BMA.EHR.Placement.Service/Requests/PersonFamilyRequest.cs b/BMA.EHR.Placement.Service/Requests/PersonFamilyRequest.cs index e786cc89..243c7434 100644 --- a/BMA.EHR.Placement.Service/Requests/PersonFamilyRequest.cs +++ b/BMA.EHR.Placement.Service/Requests/PersonFamilyRequest.cs @@ -11,31 +11,31 @@ namespace BMA.EHR.Placement.Service.Requests public string? CoupleLastName { get; set; } public string? CoupleLastNameOld { get; set; } public string? CoupleCareer { get; set; } - public string? CoupleCitizenId { get; set; } - public bool CoupleLive { get; set; } + // public string? CoupleCitizenId { get; set; } + // public bool CoupleLive { get; set; } public Guid? FatherPrefixId { get; set; } public string? FatherFirstName { get; set; } public string? FatherLastName { get; set; } public string? FatherCareer { get; set; } - public string? FatherCitizenId { get; set; } - public bool FatherLive { get; set; } + // public string? FatherCitizenId { get; set; } + // public bool FatherLive { get; set; } public Guid? MotherPrefixId { get; set; } public string? MotherFirstName { get; set; } public string? MotherLastName { get; set; } public string? MotherCareer { get; set; } - public string? MotherCitizenId { get; set; } - public bool MotherLive { get; set; } - public virtual List Childrens { get; set; } = new List(); - } - public class ProfileChildrenRequest - { - public Guid? ChildrenPrefixId { get; set; } - public string? ChildrenFirstName { get; set; } - public string? ChildrenLastName { get; set; } - public string? ChildrenCareer { get; set; } - public string? ChildrenCitizenId { get; set; } - public string ChildrenLive { get; set; } + // public string? MotherCitizenId { get; set; } + // public bool MotherLive { get; set; } + // public virtual List Childrens { get; set; } = new List(); } + // public class ProfileChildrenRequest + // { + // public Guid? ChildrenPrefixId { get; set; } + // public string? ChildrenFirstName { get; set; } + // public string? ChildrenLastName { get; set; } + // public string? ChildrenCareer { get; set; } + // public string? ChildrenCitizenId { get; set; } + // public string ChildrenLive { get; set; } + // } }