diff --git a/BMA.EHR.Insignia/Controllers/InsigniaRequestController.cs b/BMA.EHR.Insignia/Controllers/InsigniaRequestController.cs index 8a71e214..98c0f652 100644 --- a/BMA.EHR.Insignia/Controllers/InsigniaRequestController.cs +++ b/BMA.EHR.Insignia/Controllers/InsigniaRequestController.cs @@ -281,6 +281,126 @@ namespace BMA.EHR.Insignia.Service.Controllers #region " จัดทำรายชื่อครูที่มีสิทธิในการยืนขอเครื่องราชฯ " + /// + /// list รายการคำขอเครื่องราช ผู้ได้รับ,คนไม่ยื่น,คนที่ถูกลบ + /// + /// Id รอบเครื่องราช + /// Id สังกัด + /// ชื่อตำแหน่งระหว่างสกจ กับ เขต (ตอนนี้ให้ส่ง officer ก่อน) + /// pending=ผู้ได้รับ, reject=คนไม่ยื่น, delete=คนที่ถูกลบ + /// officer or employee + /// + /// + /// ค่าตัวแปรที่ส่งมาไม่ถูกต้อง + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpGet("{insigniaPeriodId:length(36)}/{ocId:length(36)}/{role}/{status}/{isDeputy}/{type}")] + public async Task> GetInsignaiRequestBkkByTypeAsync(Guid insigniaPeriodId, Guid ocId, string role, string status, bool isDeputy, string type = "officer") + { + var result = await _repository.GetInsigniaRequest(insigniaPeriodId, ocId); + if (result != null) + { + Guid period = result.PeriodId; + var periodName = result.Name; + string requestStatus = result.RequestStatus; + string requestNote = result.RequestNote; + + var resend = new InsigniaResults + { + PeriodId = result.PeriodId, + Year = result.Year, + Round = result.Round, + Name = result.Name, + RequestId = result.RequestId, + RequestStatus = result.RequestStatus, + RequestNote = result.RequestNote, + IsLock = result.IsLock, + OrganizationName = result.OrganizationName, + Document = result.Document, + Items = new List() + }; + GetIsOfficerDto RoleInsignia = await _userProfileRepository.GetIsOfficerRootAsync(AccessToken, "SYS_INSIGNIA_MANAGE"); + if (RoleInsignia.isOfficer == true && isDeputy == false && result.RequestStatus != "st6") + return Success(resend); + if (RoleInsignia.isDirector == true && (result.RequestStatus == "st1" || result.RequestStatus == "st2")) + return Success(resend); + + // Jack Remark Remove เพื่อให้เรียกขข้อมูลออกมาเร็สวขึ้น + //var candidate = await _repository.GetInsigniaCandidateBKK(period, ocId); + + //// ตรวจสอบว่ารายการอยู่ใน table insignia_request_new + //if (requestStatus == null) + //{ + // // บันทึกรายชื่อ + // await _repository.InsertCandidate(period, ocId, candidate); + //} + if (role.Trim().ToUpper() == "OFFICER") + { + resend.Items = (await _repository.InsigniaHasProfile(result.PeriodId, ocId, status)) + .Where(x => x.ProfileType!.ToLower() == type.ToLower()).ToList(); + return Success(resend); + } + else + { + var passData = _context.InsigniaRequests.AsQueryable() + .Include(x => x.RequestProfiles) + .Where(x => x.OrganizationId == ocId) + .Where(x => x.Period.Id == period) + .Select(ir => new + { + requstID = ir.Id, + requstStatus = ir.RequestStatus, + requstStatusName = GetRequestlStatusText(ir.RequestStatus), + fkInstituteId = -1, + fkInstitute = "", + fkPeriodId = ir.Period.Id, + insigniaRequestHasProfile = FormatRequestProfiles(ir.RequestProfiles.AsQueryable() + .Include(x => x.RequestInsignia) + .ThenInclude(x => x.InsigniaType) + .Where(x => x.IsApprove) + .Where(x => x.ProfileType!.ToLower() == type.ToLower()) + .ToList()) + }) + .ToList() + .FirstOrDefault(); + + var failData = _context.InsigniaRequests.AsQueryable() + .Include(x => x.RequestProfiles) + .Where(x => x.OrganizationId == ocId) + .Where(x => x.Period.Id == period) + .Select(ir => new + { + requstID = ir.Id, + requstStatus = ir.RequestStatus, + requstStatusName = GetRequestlStatusText(ir.RequestStatus), + fkInstituteId = -1, + fkInstitute = "", + fkPeriodId = ir.Period.Id, + insigniaRequestHasProfile = FormatRequestProfiles(ir.RequestProfiles.AsQueryable() + .Include(x => x.RequestInsignia) + .ThenInclude(x => x.InsigniaType) + .Where(x => !x.IsApprove) + .Where(x => x.ProfileType!.ToLower() == type.ToLower()) + .ToList()) + }) + .ToList() + .FirstOrDefault(); + + var period_data = (from p in _context.InsigniaPeriods.AsQueryable() + where p.Id == period + select new + { + periodName = p.Name, + periodYear = p.Year, + }).FirstOrDefault(); + + return Success(new { passData = passData, failData = failData, period = period_data }); + } + } + + return Success(); + } + /// /// list รายการคำขอเครื่องราช ผู้ได้รับ,คนไม่ยื่น,คนที่ถูกลบ ///