hrms-api-backend/BMA.EHR.Insignia.Service/Controllers/InsigniaRequestController.cs

654 lines
38 KiB
C#

using System.Security.Claims;
using BMA.EHR.Application.Repositories;
using BMA.EHR.Application.Requests;
using BMA.EHR.Domain.Common;
using BMA.EHR.Domain.Models.Insignias;
using BMA.EHR.Domain.Shared;
using BMA.EHR.Infrastructure.Persistence;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
using Swashbuckle.AspNetCore.Annotations;
namespace BMA.EHR.Insignia.Service.Controllers
{
[Route("api/v{version:apiVersion}/insignia/request")]
[ApiVersion("1.0")]
[ApiController]
[Produces("application/json")]
[Authorize]
[SwaggerTag("เครื่องราช")]
public class InsigniaRequestController : BaseController
{
private readonly ApplicationDBContext _context;
private readonly MinIOService _documentService;
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly InsigniaPeriodsRepository _repository;
private readonly string Royal_Type = "Royal";
public InsigniaRequestController(ApplicationDBContext context,
MinIOService documentService,
InsigniaPeriodsRepository repository,
IHttpContextAccessor httpContextAccessor)
{
_context = context;
_documentService = documentService;
_repository = repository;
_httpContextAccessor = httpContextAccessor;
}
#region " Properties "
private string? UserId => _httpContextAccessor?.HttpContext?.User?.FindFirst(ClaimTypes.NameIdentifier)?.Value;
private string? FullName => _httpContextAccessor?.HttpContext?.User?.FindFirst("name")?.Value;
#endregion
#region " Private "
private static string GetRequestlStatusText(string status)
{
switch (status.ToLower())
{
case "st1": return "จัดทำรายชื่อ";
case "st2": return "รอ ผอ. โรงเรียนรับรอง";
case "st3": return "รอเจ้าหน้าที่เขตตรวจสอบ";
case "st3p": return "รอนำเสนอผู้อำนวยการเขต";
case "st4": return "รอเสนอสำนักการศึกษา";
case "st5": return "รอเจ้าหน้าที่ สนศ. ตรวจสอบ";
case "st5p": return "เจ้าหน้าที่ สนศ. ตรวจสอบแล้ว";
case "pending": return "รอออกคำสั่ง";
case "finish": return "ออกคำสั่งแล้ว";
default: return "สถานะไม่ถูกต้อง";
}
}
#endregion
#region " ดึงเครื่องราชฯ ล่าสุดของครู (GetInsigniaLast) "
// private InsigniaItem GetInsigniaLast(Guid? id)
// {
// var insignia = _context.Insignias.AsQueryable()
// .Where(i => id != null ? i.Id == id : i.Name.Contains("ตริตาภรณ์มงกุฎไทย")).Select(i => new InsigniaItem
// {
// Id = i.Id,
// Name = i.Name,
// ShortName = i.ShortName,
// Level = i.InsigniaType == null ? null : i.InsigniaType.Name,
// LevelId = i.InsigniaType == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : i.InsigniaType.Id
// }).FirstOrDefault();
// return insignia;
// }
#endregion
#region " จัดทำรายชื่อครูที่มีสิทธิในการยืนขอเครื่องราชฯ "
// [HttpGet("old/{role}/{ocId:length(36)}")]
// public async Task<ActionResult<ResponseObject>> GetInsignaiRequest(Guid id, Guid ocId, string role)
// {
// var result = await _repository.GetInsigniaRequest(id, ocId);
// if (result != null)
// {
// Guid period = result.PeriodId;
// string periodName = result.Name;
// string requestStatus = result.RequestStatus;
// var resend = new InsigniaResults
// {
// PeriodId = period,
// Year = result.Year,
// Name = periodName,
// RequestStatus = requestStatus,
// OrganizationName = result.OrganizationName,
// Items = new List<dynamic>()
// };
// var candidate = await _repository.GetInsigniaCandidate(period, ocId);
// // ตรวจสอบว่ารายการอยู่ใน table insignia_request_new
// if (requestStatus == null)
// {
// // บันทึกรายชื่อ
// _repository.InsertCandidate(period, ocId, candidate);
// }
// if (role == "officer")
// {
// resend.Items = await _repository.InsigniaHasProfile(period, ocId);
// return Success(resend);
// }
// else
// {
// var passData = _context.InsigniaRequests.AsQueryable()
// .Include(x => x.Organization)
// .Include(x => x.RequestProfiles)
// .Where(x => x.Organization.Id == ocId)
// .Where(x => x.Period.Id == period)
// .Select(ir => new
// {
// requstID = ir.Id,
// requstStatus = ir.RequestStatus,
// requstStatusName = GetRequestlStatusText(ir.RequestStatus),
// fkInstituteId = -1,
// // fkDivisionId = ir.Organization.Id,
// // fkDivision = ir.Organization.Name,
// fkInstitute = "",
// fkPeriodId = ir.Period.Id,
// insigniaRequestHasProfile = ir.RequestProfiles.AsQueryable()
// .Include(x => x.Profile)
// .ThenInclude(x => x.Position)
// .Include(x => x.Profile)
// // .ThenInclude(x => x.PositionNumber)
// .Include(x => x.Profile)
// // .ThenInclude(x => x.AcademicStanding)
// .Include(x => x.RequestInsignia)
// .ThenInclude(x => x.InsigniaType)
// .Select(irp => new
// {
// request_id = irp.Request.Id,
// isApprove = irp.IsApprove,
// statusInstitute = irp.IsApprove.ToString(),
// request_date = irp.RequestDate,
// profileId = irp.Profile.Id,
// // prefix = irp.Profile.Prefix,
// firstname = irp.Profile.FirstName,
// lastname = irp.Profile.LastName,
// // posno = irp.Profile.PositionNumber.Id,
// type = irp.Profile.ProfileType,
// // position = irp.Profile.Position.Name,
// // rank = irp.Profile.AcademicStanding.Name,
// instituteName = "",
// instituteId = -1,
// // divisionName = irp.Profile.OrganizationOrganization.Name,
// // divisionId = irp.Profile.OrganizationOrganization.Id,
// lastInsigniaName = "",
// requestInsigniaLevel = irp.RequestInsignia.InsigniaType == null ? null : irp.RequestInsignia.InsigniaType.Name,
// requestInsigniaName = irp.RequestInsignia.Name,
// requestQua = irp.QualificationStatus,
// requestDoc = irp.DocumentStatus,
// requestNote = irp.Note,
// requestSalary = irp.Salary,
// })
// .Where(x => x.isApprove)
// .OrderBy(y => y.profileId)
// .ToList()
// })
// .ToList()
// .FirstOrDefault();
// var failData = _context.InsigniaRequests.AsQueryable()
// .Include(x => x.Organization)
// .Include(x => x.RequestProfiles)
// .Where(x => x.Organization.Id == ocId)
// .Where(x => x.Period.Id == period)
// .Select(ir => new
// {
// requstID = ir.Id,
// requstStatus = ir.RequestStatus,
// requstStatusName = GetRequestlStatusText(ir.RequestStatus),
// fkInstituteId = -1,
// // fkDivisionId = ir.Organization.Id,
// // fkDivision = ir.Organization.Name,
// fkInstitute = "",
// fkPeriodId = ir.Period.Id,
// insigniaRequestHasProfile = ir.RequestProfiles.AsQueryable()
// .Include(x => x.Profile)
// .ThenInclude(x => x.Position)
// .Include(x => x.Profile)
// // .ThenInclude(x => x.PositionNumber)
// .Include(x => x.Profile)
// // .ThenInclude(x => x.AcademicStanding)
// .Include(x => x.RequestInsignia)
// .ThenInclude(x => x.InsigniaType)
// .Select(irp => new
// {
// request_id = irp.Request.Id,
// isApprove = irp.IsApprove,
// statusInstitute = irp.IsApprove.ToString(),
// request_date = irp.RequestDate,
// profileId = irp.Profile.Id,
// // prefix = irp.Profile.Prefix,
// firstname = irp.Profile.FirstName,
// lastname = irp.Profile.LastName,
// // posno = irp.Profile.PositionNumber.Id,
// type = irp.Profile.ProfileType,
// // position = irp.Profile.Position.Name,
// // rank = irp.Profile.AcademicStanding.Name,
// instituteName = "",
// instituteId = -1,
// // divisionName = irp.Profile.OrganizationOrganization.Name,
// // divisionId = irp.Profile.OrganizationOrganization.Id,
// lastInsigniaName = "",
// requestInsigniaLevel = irp.RequestInsignia.InsigniaType == null ? null : irp.RequestInsignia.InsigniaType.Name,
// requestInsigniaName = irp.RequestInsignia.Name,
// requestQua = irp.QualificationStatus,
// requestDoc = irp.DocumentStatus,
// requestNote = irp.Note,
// requestSalary = irp.Salary,
// })
// .Where(x => !x.isApprove)
// .OrderBy(y => y.profileId)
// .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 });
// }
// // select data to display
// }
// return Success();
// }
/// <summary>
/// list รายการคำขอเครื่องราช ผู้ได้รับ,คนไม่ยื่น,คนที่ถูกลบ
/// </summary>
/// <param name="insigniaPeriodId">Id รอบเครื่องราช</param>
/// <param name="ocId">Id สังกัด</param>
/// <param name="role">ชื่อตำแหน่งระหว่างสกจ กับ เขต (ตอนนี้ให้ส่ง officer ก่อน)</param>
/// <param name="status">pending=ผู้ได้รับ, reject=คนไม่ยื่น, delete=คนที่ถูกลบ</param>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpGet("{insigniaPeriodId:length(36)}/{ocId:length(36)}/{role}/{status}")]
public async Task<ActionResult<ResponseObject>> GetInsignaiRequestBkk(Guid insigniaPeriodId, Guid ocId, string role, string status)
{
// var profile = await _context.Profiles.AsQueryable()
// .FirstOrDefaultAsync(x => x.KeycloakId == (UserId != null && UserId != "" ? Guid.Parse(UserId) : Guid.Parse("00000000-0000-0000-0000-000000000000")));
// if (profile == null)
// return Error(GlobalMessages.DataNotFound);
// var organizationAgencyId = await _context.ProfilePositions.AsQueryable()
// .Where(x => x.Profile == profile)
// .Where(x => x.OrganizationPosition != null)
// .Where(x => x.OrganizationPosition.Organization != null)
// .Where(x => x.OrganizationPosition.Organization.OrganizationAgencyId != null)
// .Select(x => x.OrganizationPosition.Organization.OrganizationAgencyId)
// .FirstOrDefaultAsync();
// if (organizationAgencyId == null)
// return Error(GlobalMessages.OrganizationNotFound);
// var ocId = organizationAgencyId.Value;
var result = await _repository.GetInsigniaRequest(insigniaPeriodId, ocId);
if (result != null)
{
Guid period = result.PeriodId;
string periodName = result.Name;
string requestStatus = result.RequestStatus;
var resend = new InsigniaResults
{
PeriodId = period,
Year = result.Year,
Name = periodName,
RequestStatus = requestStatus,
OrganizationName = result.OrganizationName,
Items = new List<InsigniaRequestItem>()
};
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(period, ocId, status);
return Success(resend);
}
else
{
// var passData = _context.InsigniaRequests.AsQueryable()
// .Include(x => x.Organization)
// .Include(x => x.RequestProfiles)
// .Where(x => x.Organization.Id == ocId)
// .Where(x => x.Period.Id == period)
// .Select(ir => new
// {
// requstID = ir.Id,
// requstStatus = ir.RequestStatus,
// requstStatusName = GetRequestlStatusText(ir.RequestStatus),
// fkInstituteId = -1,
// // fkDivisionId = ir.Organization.Id,
// // fkDivision = ir.Organization.Name,
// fkInstitute = "",
// fkPeriodId = ir.Period.Id,
// insigniaRequestHasProfile = ir.RequestProfiles.AsQueryable()
// .Include(x => x.Profile)
// .ThenInclude(x => x.Position)
// .Include(x => x.Profile)
// // .ThenInclude(x => x.PositionNumber)
// .Include(x => x.Profile)
// // .ThenInclude(x => x.AcademicStanding)
// .Include(x => x.RequestInsignia)
// .ThenInclude(x => x.InsigniaType)
// .Select(irp => new
// {
// request_id = irp.Request.Id,
// isApprove = irp.IsApprove,
// statusInstitute = irp.IsApprove.ToString(),
// request_date = irp.RequestDate,
// profileId = irp.Profile.Id,
// // prefix = irp.Profile.Prefix,
// firstname = irp.Profile.FirstName,
// lastname = irp.Profile.LastName,
// // posno = irp.Profile.PositionNumber.Id,
// type = irp.Profile.ProfileType,
// // position = irp.Profile.Position.Name,
// // rank = $"{irp.Profile.PositionType.Name}/{irp.Profile.PositionLevel.Name}",
// instituteName = "",
// instituteId = -1,
// // divisionName = irp.Profile.OrganizationOrganization.Name,
// // divisionId = irp.Profile.OrganizationOrganization.Id,
// lastInsigniaName = "",
// requestInsigniaLevel = irp.RequestInsignia.InsigniaType.Name,
// requestInsigniaName = irp.RequestInsignia.Name,
// requestQua = irp.QualificationStatus,
// requestDoc = irp.DocumentStatus,
// requestNote = irp.Note,
// requestSalary = irp.Salary,
// matchingConditions = JsonConvert.DeserializeObject<List<MatchingCondition>>(irp.MatchingConditions)
// })
// .Where(x => x.isApprove)
// .OrderBy(y => y.profileId)
// .ToList()
// })
// .ToList()
// .FirstOrDefault();
// var failData = _context.InsigniaRequests.AsQueryable()
// .Include(x => x.Organization)
// .Include(x => x.RequestProfiles)
// .Where(x => x.Organization.Id == ocId)
// .Where(x => x.Period.Id == period)
// .Select(ir => new
// {
// requstID = ir.Id,
// requstStatus = ir.RequestStatus,
// requstStatusName = GetRequestlStatusText(ir.RequestStatus),
// fkInstituteId = -1,
// // fkDivisionId = ir.Organization.Id,
// // fkDivision = ir.Organization.Name,
// fkInstitute = "",
// fkPeriodId = ir.Period.Id,
// insigniaRequestHasProfile = ir.RequestProfiles.AsQueryable()
// .Include(x => x.Profile)
// .ThenInclude(x => x.Position)
// .Include(x => x.Profile)
// // .ThenInclude(x => x.PositionNumber)
// .Include(x => x.Profile)
// // .ThenInclude(x => x.AcademicStanding)
// .Include(x => x.RequestInsignia)
// .ThenInclude(x => x.InsigniaType)
// .Select(irp => new
// {
// request_id = irp.Request.Id,
// isApprove = irp.IsApprove,
// statusInstitute = irp.IsApprove.ToString(),
// request_date = irp.RequestDate,
// profileId = irp.Profile.Id,
// // prefix = irp.Profile.Prefix,
// firstname = irp.Profile.FirstName,
// lastname = irp.Profile.LastName,
// // posno = irp.Profile.PositionNumber.Id,
// type = irp.Profile.ProfileType,
// // position = irp.Profile.Position.Name,
// // rank = irp.Profile.AcademicStanding.Name,
// instituteName = "",
// instituteId = -1,
// // divisionName = irp.Profile.OrganizationOrganization.Name,
// // divisionId = irp.Profile.OrganizationOrganization.Id,
// lastInsigniaName = "",
// requestInsigniaLevel = irp.RequestInsignia.InsigniaType.Name,
// requestInsigniaName = irp.RequestInsignia.Name,
// requestQua = irp.QualificationStatus,
// requestDoc = irp.DocumentStatus,
// requestNote = irp.Note,
// requestSalary = irp.Salary,
// matchingConditions = JsonConvert.DeserializeObject<List<MatchingCondition>>(irp.MatchingConditions)
// })
// .Where(x => !x.isApprove)
// .OrderBy(y => y.profileId)
// .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();
}
// select data to display
}
return Success();
}
#endregion
// #region " บันทึกหมายเหตุ "
// [HttpPut("note/{profileId}")]
// public async Task<ActionResult<ResponseObject>> SaveNote(Guid profileId, SaveRequsetNote items)
// {
// var id = await _repository.GetRequestId(items.PeriodId, items.OcId);
// var note = _context.InsigniaRequestProfiles.AsQueryable()
// .Where(d => d.Profile.Id == profileId && d.Request.Id == id).FirstOrDefault();
// if (note != null)
// note.Note = items.Note;
// _context.SaveChanges();
// return Success();
// }
// #endregion
// #region " บันทึกรายชื่อครูในการขอยื่นเครื่องราชฯ เเต่ยังไม่ส่งไปยัง ผอ.โรงเรียน "
// [HttpPut("approve/{ocId:length(36)}")]
// public async Task<ActionResult<ResponseObject>> SaveRequestList(Guid id, Guid ocId, InsigniaApproveRequest items)
// {
// var result = await _repository.GetInsigniaRequest(id, ocId);
// if (result != null)
// await _repository.SaveAprove(result.PeriodId, ocId, items);
// return Success();
// }
// #endregion
// #region " เปลี่ยน status เป็น st2 รอ ผอ.สำนักรับรอง "
// [HttpPost("status/officer/send/{ocId:length(36)}")]
// public async Task<ActionResult<ResponseObject>> ChangeStatusToSt2(Guid id, Guid ocId, InsigniaApproveRequest items)
// {
// var result = await _repository.GetInsigniaRequest(id, ocId);
// if (items != null)
// {
// _repository.SaveAprove(result.PeriodId, ocId, items);
// }
// var requestId = await _repository.GetRequestId(result.PeriodId, ocId);
// var requestNew = await _context.InsigniaRequests.FirstOrDefaultAsync(i => i.Id == requestId);
// if (requestNew != null)
// {
// requestNew.RequestStatus = "st2";
// _context.SaveChanges();
// return Success();
// }
// else
// return Error(GlobalMessages.InsigniaRequestNotFound);
// }
// #endregion
// #region " เปลี่ยน status สำหรับ ผอ.สำนัก "
// [HttpPost("status/director/approve/{ocId:length(36)}")]
// public async Task<ActionResult<ResponseObject>> ChangeStatusToSt5p(Guid id, Guid ocId)
// {
// var result = await _repository.GetInsigniaRequest(id, ocId);
// if (result == null)
// return Error(GlobalMessages.InsigniaRequestNotFound);
// var requestId = await _repository.GetRequestId(result.PeriodId, ocId);
// if (requestId == null)
// return Error(GlobalMessages.InsigniaRequestNotFound);
// var requestNew = await _context.InsigniaRequests.FirstOrDefaultAsync(i => i.Id == requestId);
// if (requestNew != null)
// {
// requestNew.RequestStatus = "st5p";
// _context.SaveChanges();
// return Success();
// }
// else
// return Error(GlobalMessages.InsigniaRequestNotFound);
// }
// [HttpPost("status/director/reject/{ocId:length(36)}")]
// public async Task<ActionResult<ResponseObject>> ChangeStatusToSt1(Guid id, Guid ocId)
// {
// var result = await _repository.GetInsigniaRequest(id, ocId);
// if (result == null)
// return Error(GlobalMessages.InsigniaRequestNotFound);
// var requestId = await _repository.GetRequestId(result.PeriodId, ocId);
// if (requestId == null)
// return Error(GlobalMessages.InsigniaRequestNotFound);
// var requestNew = await _context.InsigniaRequests.FirstOrDefaultAsync(i => i.Id == requestId);
// if (requestNew != null)
// {
// requestNew.RequestStatus = "st1";
// _context.SaveChanges();
// return Success();
// }
// else
// return Error(GlobalMessages.InsigniaRequestNotFound);
// }
// #endregion
/// <summary>
/// ย้ายขอมูลไปเป็น คนที่ไม่ยื่นขอ
/// </summary>
/// <param name="profileId">Id ผู้ยื่นขอ</param>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpGet("status/reject/{profileId:length(36)}")]
public async Task<ActionResult<ResponseObject>> RejectProfileInsignia(Guid profileId)
{
var profile = await _context.Profiles.AsQueryable()
.FirstOrDefaultAsync(x => x.Id == profileId);
if (profile == null)
return Error(GlobalMessages.DataNotFound);
var insigniaRequestProfile = await _context.InsigniaRequestProfiles.FirstOrDefaultAsync(x => x.Profile == profile);
if (insigniaRequestProfile == null)
return Error(GlobalMessages.InsigniaPeriodNotFound);
insigniaRequestProfile.Status = "REJECT";
_context.SaveChanges();
return Success();
}
/// <summary>
/// ย้ายขอมูลไปเป็น คนที่ถูกลบออก
/// </summary>
/// <param name="profileId">Id ผู้ยื่นขอ</param>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpGet("status/delete/{profileId:length(36)}")]
public async Task<ActionResult<ResponseObject>> DeleteProfileInsignia(Guid profileId)
{
var profile = await _context.Profiles.AsQueryable()
.FirstOrDefaultAsync(x => x.Id == profileId);
if (profile == null)
return Error(GlobalMessages.DataNotFound);
var insigniaRequestProfile = await _context.InsigniaRequestProfiles.FirstOrDefaultAsync(x => x.Profile == profile);
if (insigniaRequestProfile == null)
return Error(GlobalMessages.InsigniaPeriodNotFound);
insigniaRequestProfile.Status = "DELETE";
_context.SaveChanges();
return Success();
}
/// <summary>
/// สรุปจำนวนการยื่นขอในแต่ละรอบ
/// </summary>
/// <param name="insigniaPeriodId">Id รอบการยื่นขอ</param>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpGet("dashboard/{insigniaPeriodId:length(36)}")]
public async Task<ActionResult<ResponseObject>> DashboardInsigniaPeriod(Guid insigniaPeriodId)
{
var insigniaPeriod = await _context.InsigniaPeriods.FirstOrDefaultAsync(x => x.Id == insigniaPeriodId);
if (insigniaPeriod == null)
return Error(GlobalMessages.InsigniaRequestNotFound);
var orgSendCount = await _context.InsigniaRequests
.Where(x => x.Period == insigniaPeriod)
.CountAsync();
var allUserUser = await _context.InsigniaRequests
.Where(x => x.Period == insigniaPeriod)
.Select(x => x.RequestProfiles.Count())
.SumAsync();
var orgAllCount = await _context.Organizations
.Where(x => x.OrganizationType != null)
.Where(x => x.OrganizationType.Name == "หน่วยงาน")
.CountAsync();
return Success(new { OrgAllCount = orgAllCount, OrgSendCount = orgSendCount, OrgNoSendCount = orgAllCount - orgSendCount, AllUserUser = allUserUser });
}
/// <summary>
/// หน่วยงานทียังไม่ส่งรายชื่อ
/// </summary>
/// <returns></returns>
/// <response code="200"></response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpGet("org/no-send/{insigniaPeriodId:length(36)}")]
public async Task<ActionResult<ResponseObject>> ListOrgDontSentUser(Guid insigniaPeriodId)
{
var insigniaPeriod = await _context.InsigniaPeriods.FirstOrDefaultAsync(x => x.Id == insigniaPeriodId);
if (insigniaPeriod == null)
return Error(GlobalMessages.InsigniaRequestNotFound);
var orgIdSend = await _context.InsigniaRequests
.Where(x => x.Period == insigniaPeriod)
.Select(x => x.Organization.Id)
.ToListAsync();
var orgAllCount = await _context.Organizations
.Where(x => x.OrganizationOrganization != null)
.Where(x => x.OrganizationType != null)
.Where(x => x.OrganizationType.Name == "หน่วยงาน")
.Where(x => !orgIdSend.Contains(x.Id))
.Select(x => new
{
OrgId = x.Id,
OrgName = x.OrganizationOrganization.Name
})
.ToListAsync();
return Success();
}
}
}