api รายงานประกาศเกษียณลูกจ้างประจำ

This commit is contained in:
Harid Promsri (Bright) 2023-08-22 17:24:21 +07:00
parent 9abb9c5422
commit 81b2ad210b
5 changed files with 211 additions and 29 deletions

View file

@ -1,6 +1,7 @@
using BMA.EHR.Application.Repositories;
using BMA.EHR.Application.Repositories.Commands;
using BMA.EHR.Application.Repositories.MessageQueue;
using BMA.EHR.Application.Repositories.Reports;
using Microsoft.Extensions.DependencyInjection;
namespace BMA.EHR.Application
@ -23,6 +24,7 @@ namespace BMA.EHR.Application
services.AddTransient<InboxRepository>();
services.AddTransient<NotificationRepository>();
services.AddTransient<RetirementRepository>();
services.AddTransient<RetireReportRepository>();
return services;
}

View file

@ -1,13 +1,10 @@
using BMA.EHR.Application.Common.Interfaces;
using BMA.EHR.Domain.Extensions;
using BMA.EHR.Domain.Models.Retirement;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//using Telerik.Reporting;
//using Telerik.Reporting.Processing;
namespace BMA.EHR.Application.Repositories.Reports
{
@ -16,46 +13,137 @@ namespace BMA.EHR.Application.Repositories.Reports
#region " Fields "
private readonly IApplicationDBContext _dbContext;
private readonly IWebHostEnvironment _hostingEnvironment;
#endregion
#region " Constructor and Destructor "
public RetireReportRepository(IApplicationDBContext dbContext)
public RetireReportRepository(IApplicationDBContext dbContext, IWebHostEnvironment hostEnvironment)
{
_dbContext = dbContext;
_hostingEnvironment = hostEnvironment;
}
#endregion
#region " Methods "
public async Task<List<RetirementPeriod>> GetListRetirePeriodAsync()
//public async Task<List<RetirementPeriod>> GetListRetirePeriodAsync(Guid Id)
//{
// try
// {
// // 1. query
// //var data = await _dbContext.Set<RetirementPeriod>()
// // .Include(x => x.RetirementProfiles)
// // .ThenInclude(x => x.Profile)
// // .ToListAsync();
// // 2. data not found throw exception
// // 3. Load Report File
// //return data;
// }
// catch
// {
// throw;
// }
//}
public async Task<dynamic> GetProfileRetirementdAsync(Guid retireId)
{
try
var retire = await _dbContext.Set<RetirementPeriod>()
.Include(x => x.RetirementProfiles)
.FirstOrDefaultAsync(x => x.Id == retireId);
if (retire == null)
{
// 1. query
var data = await _dbContext.Set<RetirementPeriod>()
.Include(x => x.RetirementPeriodHistorys)
.Include(x => x.RetirementProfiles)
.ThenInclude(x => x.Profile)
.ToListAsync();
var retireHistorys = await _dbContext.Set<RetirementPeriodHistory>().AsQueryable()
.FirstOrDefaultAsync(x => x.Id == retireId);
if (retireHistorys == null)
return null;
// 2. data not found throw exception
// 3. Load Report File
return data;
var profile_retireHistory = await _dbContext.Set<RetirementProfile>()
.Where(x => x.RetirementPeriod == retire)
.OrderBy(x => x.Order)
.Select(x => new
{
order = x.Order,
id = x.Id,
reason = x.Reason,
remove = x.Remove,
profileId = x.Profile.Id,
citizenId = x.Profile.CitizenId,
prefix = x.Profile.Prefix == null ? null : x.Profile.Prefix.Name,
fullName = $"{x.Profile.FirstName} {x.Profile.LastName}",
organizationOrganization = x.Profile.OrganizationOrganization,
oc = x.Profile.Oc,
position = x.Profile.Position == null ? null : x.Profile.Position.Name,
positionType = x.Profile.PositionType == null ? null : x.Profile.PositionType.Name,
positionExecutive = x.Profile.PositionExecutive,
posNo = x.Profile.PosNo == null ? null : x.Profile.PosNo.Name,
positionEmployeePosition = x.Profile.PositionEmployeePosition,
positionEmployeeLevel = x.Profile.PositionEmployeeLevel,
positionEmployeeGroup = x.Profile.PositionEmployeeGroup,
posNoEmployee = x.Profile.PosNoEmployee,
})
.ToListAsync();
return new { retireHistorys.Id, retireHistorys.CreatedAt, Year = retireHistorys.Year.ToThaiYear().ToString().ToThaiNumber(), retireHistorys.Round, retireHistorys.Type, retireHistorys.TypeReport, Total = retireHistorys.Total.ToString().ToThaiNumber(), profile = profile_retireHistory };
}
catch
else
{
throw;
var profile_retire = await _dbContext.Set<RetirementProfile>()
.Where(x => x.RetirementPeriod == retire)
.OrderBy(x => x.Order)
.Select(x => new
{
order = x.Order,
id = x.Id,
reason = x.Reason,
remove = x.Remove,
profileId = x.Profile.Id,
citizenId = x.Profile.CitizenId,
prefix = x.Profile.Prefix == null ? null : x.Profile.Prefix.Name,
fullName = $"{x.Profile.FirstName} {x.Profile.LastName}",
organizationOrganization = x.Profile.OrganizationOrganization,
oc = x.Profile.Oc,
position = x.Profile.Position == null ? null : x.Profile.Position.Name,
positionType = x.Profile.PositionType == null ? null : x.Profile.PositionType.Name,
positionExecutive = x.Profile.PositionExecutive,
posNo = x.Profile.PosNo == null ? null : x.Profile.PosNo.Name,
positionEmployeePosition = x.Profile.PositionEmployeePosition,
positionEmployeeLevel = x.Profile.PositionEmployeeLevel,
positionEmployeeGroup = x.Profile.PositionEmployeeGroup,
posNoEmployee = x.Profile.PosNoEmployee,
})
.ToListAsync();
return new { retire.Id, retire.CreatedAt, Year = retire.Year.ToThaiYear().ToString().ToThaiNumber(), retire.Round, retire.Type, retire.TypeReport, Total = profile_retire.Count.ToString().ToThaiNumber(), profile = profile_retire };
}
//Report
//var rptFile = Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"32-ประกาศเกษียณลูกจ้างประจำ.trdp");
//ReportPackager reportPacker = new ReportPackager();
//Telerik.Reporting.Report? report = null;
//using (var sourceStream = System.IO.File.OpenRead(rptFile))
//{
// report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream);
//}
//System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable();
//InstanceReportSource instanceReportSource = new InstanceReportSource()
//{
// ReportDocument = report,
//};
//ReportProcessor reportProcessor = new ReportProcessor(_configuration);
//RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, deviceInfo);
//var content = result.DocumentBytes;
//return File(content, "application/pdf", $"ประกาศเกษียณลูกจ้างประจำ_{null}.pdf");
}
#endregion