Refactor LeaveProcessJobStatusRepository to enhance leave remark generation logic and update file export functionality with environment path handling
This commit is contained in:
parent
d85bab11b2
commit
a50153f32c
1 changed files with 170 additions and 85 deletions
|
|
@ -10,6 +10,7 @@ using BMA.EHR.Application.Repositories.MetaData;
|
||||||
using BMA.EHR.Application.Responses.Profiles;
|
using BMA.EHR.Application.Responses.Profiles;
|
||||||
using BMA.EHR.Domain.Extensions;
|
using BMA.EHR.Domain.Extensions;
|
||||||
using BMA.EHR.Domain.Models.Leave.TimeAttendants;
|
using BMA.EHR.Domain.Models.Leave.TimeAttendants;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
|
|
@ -29,6 +30,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
|
||||||
private readonly ProcessUserTimeStampRepository _processUserTimeStampRepository;
|
private readonly ProcessUserTimeStampRepository _processUserTimeStampRepository;
|
||||||
private readonly LeaveRequestRepository _leaveRequestRepository;
|
private readonly LeaveRequestRepository _leaveRequestRepository;
|
||||||
private readonly IConfiguration _configuration;
|
private readonly IConfiguration _configuration;
|
||||||
|
private readonly IWebHostEnvironment _env;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
@ -42,7 +44,8 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
|
||||||
UserDutyTimeRepository userDutyTimeRepository,
|
UserDutyTimeRepository userDutyTimeRepository,
|
||||||
ProcessUserTimeStampRepository processUserTimeStampRepository,
|
ProcessUserTimeStampRepository processUserTimeStampRepository,
|
||||||
LeaveRequestRepository leaveRequestRepository,
|
LeaveRequestRepository leaveRequestRepository,
|
||||||
IConfiguration configuration) : base(dbContext, httpContextAccessor)
|
IConfiguration configuration,
|
||||||
|
IWebHostEnvironment env) : base(dbContext, httpContextAccessor)
|
||||||
{
|
{
|
||||||
_dbContext = dbContext;
|
_dbContext = dbContext;
|
||||||
_httpContextAccessor = httpContextAccessor;
|
_httpContextAccessor = httpContextAccessor;
|
||||||
|
|
@ -53,6 +56,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
|
||||||
_dutyTimeRepository = dutyTimeRepository;
|
_dutyTimeRepository = dutyTimeRepository;
|
||||||
_userDutyTimeRepository = userDutyTimeRepository;
|
_userDutyTimeRepository = userDutyTimeRepository;
|
||||||
_processUserTimeStampRepository = processUserTimeStampRepository;
|
_processUserTimeStampRepository = processUserTimeStampRepository;
|
||||||
|
_env = env;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
@ -255,34 +259,75 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
|
||||||
case "LV-005":
|
case "LV-005":
|
||||||
remarkStr += leaveReq.Type.Name;
|
remarkStr += leaveReq.Type.Name;
|
||||||
var leaveRange = leaveReq.LeaveRange == null ? "" : leaveReq.LeaveRange.ToUpper();
|
var leaveRange = leaveReq.LeaveRange == null ? "" : leaveReq.LeaveRange.ToUpper();
|
||||||
if (leaveRange == "MORNING")
|
|
||||||
remarkStr += "ครึ่งวันเช้า";
|
if(leaveReq.LeaveStartDate.Date == leaveReq.LeaveEndDate.Date)
|
||||||
else if (leaveRange == "AFTERNOON")
|
|
||||||
remarkStr += "ครึ่งวันบ่าย";
|
|
||||||
|
|
||||||
|
|
||||||
// var leaveRangeEnd = leaveReq.LeaveRangeEnd == null ? "" : leaveReq.LeaveRangeEnd.ToUpper();
|
|
||||||
// if (leaveRangeEnd == "MORNING")
|
|
||||||
// remarkStr += "ครึ่งวันเช้า";
|
|
||||||
// else if (leaveRangeEnd == "AFTERNOON")
|
|
||||||
// remarkStr += "ครึ่งวันบ่าย";
|
|
||||||
|
|
||||||
var leaveRangeEnd = leaveReq.LeaveRangeEnd == null ? "" : leaveReq.LeaveRangeEnd.ToUpper();
|
|
||||||
if (leaveRange != leaveRangeEnd)
|
|
||||||
{
|
{
|
||||||
if (leaveRangeEnd == "MORNING")
|
if (leaveRange == "MORNING")
|
||||||
remarkStr += " - ครึ่งวันเช้า";
|
remarkStr += "ครึ่งวันเช้า";
|
||||||
else if (leaveRangeEnd == "AFTERNOON")
|
else if (leaveRange == "AFTERNOON")
|
||||||
remarkStr += " - ครึ่งวันบ่าย";
|
remarkStr += "ครึ่งวันบ่าย";
|
||||||
|
|
||||||
|
|
||||||
|
// var leaveRangeEnd = leaveReq.LeaveRangeEnd == null ? "" : leaveReq.LeaveRangeEnd.ToUpper();
|
||||||
|
// if (leaveRangeEnd == "MORNING")
|
||||||
|
// remarkStr += "ครึ่งวันเช้า";
|
||||||
|
// else if (leaveRangeEnd == "AFTERNOON")
|
||||||
|
// remarkStr += "ครึ่งวันบ่าย";
|
||||||
|
|
||||||
|
var leaveRangeEnd = leaveReq.LeaveRangeEnd == null ? "" : leaveReq.LeaveRangeEnd.ToUpper();
|
||||||
|
if (leaveRange != leaveRangeEnd)
|
||||||
|
{
|
||||||
|
if (leaveRangeEnd == "MORNING")
|
||||||
|
remarkStr += " - ครึ่งวันเช้า";
|
||||||
|
else if (leaveRangeEnd == "AFTERNOON")
|
||||||
|
remarkStr += " - ครึ่งวันบ่าย";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(dd.date == leaveReq.LeaveStartDate.Date)
|
||||||
|
{
|
||||||
|
if (leaveRange == "MORNING")
|
||||||
|
remarkStr += "ครึ่งวันเช้า";
|
||||||
|
else if (leaveRange == "AFTERNOON")
|
||||||
|
remarkStr += "ครึ่งวันบ่าย";
|
||||||
|
}
|
||||||
|
else if(dd.date == leaveReq.LeaveEndDate.Date)
|
||||||
|
{
|
||||||
|
var leaveRangeEnd = leaveReq.LeaveRangeEnd == null ? "" : leaveReq.LeaveRangeEnd.ToUpper();
|
||||||
|
if (leaveRangeEnd == "MORNING")
|
||||||
|
remarkStr += "ครึ่งวันเช้า";
|
||||||
|
else if (leaveRangeEnd == "AFTERNOON")
|
||||||
|
remarkStr += "ครึ่งวันบ่าย";
|
||||||
|
else
|
||||||
|
remarkStr += "เต็มวัน";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
remarkStr += "เต็มวัน";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
remarkStr += leaveReq.Type.Name;
|
remarkStr += leaveReq.Type.Name;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
status = "LEAVE";
|
status = "LEAVE";
|
||||||
stampType = leaveReq.LeaveRange ?? "";
|
if(leaveReq.LeaveStartDate.Date == dd.date)
|
||||||
stampAmount = leaveReq.LeaveRange == "MORNING" || leaveReq.LeaveRangeEnd == "MORNING" ? 0.5 : 1;
|
{
|
||||||
|
stampType = leaveReq.LeaveRange ?? "";
|
||||||
|
stampAmount = leaveReq.LeaveRange != "ALL" ? 0.5 : 1;
|
||||||
|
}
|
||||||
|
else if(leaveReq.LeaveEndDate.Date == dd.date)
|
||||||
|
{
|
||||||
|
stampAmount = leaveReq.LeaveRangeEnd != "ALL" ? 0.5 : 1;
|
||||||
|
stampType = leaveReq.LeaveRangeEnd ?? "";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
stampAmount = leaveReq.LeaveRange != "ALL" || leaveReq.LeaveRangeEnd != "ALL" ? 0.5 : 1;
|
||||||
|
if(stampType == "ALL") stampType = "FULL_DAY";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -374,25 +419,25 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// // Write employees to JSON file
|
// Write employees to JSON file
|
||||||
// var fileName = $"employees_{DateTime.Now:yyyyMMdd_HHmmss}.txt";
|
var fileName = $"employees_{DateTime.Now:yyyyMMdd_HHmmss}.txt";
|
||||||
// var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Exports", fileName);
|
var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Exports", fileName);
|
||||||
|
|
||||||
// // Ensure directory exists
|
// Ensure directory exists
|
||||||
// var directory = Path.GetDirectoryName(filePath);
|
var directory = Path.GetDirectoryName(filePath);
|
||||||
// if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
|
if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
|
||||||
// {
|
{
|
||||||
// Directory.CreateDirectory(directory);
|
Directory.CreateDirectory(directory);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// var jsonOptions = new JsonSerializerOptions
|
var jsonOptions = new JsonSerializerOptions
|
||||||
// {
|
{
|
||||||
// WriteIndented = true,
|
WriteIndented = true,
|
||||||
// Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
|
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
|
||||||
// };
|
};
|
||||||
|
|
||||||
// var jsonContent = JsonSerializer.Serialize(employees, jsonOptions);
|
var jsonContent = JsonSerializer.Serialize(employees, jsonOptions);
|
||||||
// await File.WriteAllTextAsync(filePath, jsonContent);
|
await File.WriteAllTextAsync(filePath, jsonContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
//call api
|
//call api
|
||||||
|
|
@ -499,34 +544,72 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
|
||||||
case "LV-005":
|
case "LV-005":
|
||||||
remarkStr += leaveReq.Type.Name;
|
remarkStr += leaveReq.Type.Name;
|
||||||
var leaveRange = leaveReq.LeaveRange == null ? "" : leaveReq.LeaveRange.ToUpper();
|
var leaveRange = leaveReq.LeaveRange == null ? "" : leaveReq.LeaveRange.ToUpper();
|
||||||
if (leaveRange == "MORNING")
|
|
||||||
remarkStr += "ครึ่งวันเช้า";
|
if(leaveReq.LeaveStartDate.Date == leaveReq.LeaveEndDate.Date)
|
||||||
else if (leaveRange == "AFTERNOON")
|
|
||||||
remarkStr += "ครึ่งวันบ่าย";
|
|
||||||
|
|
||||||
|
|
||||||
// var leaveRangeEnd = leaveReq.LeaveRangeEnd == null ? "" : leaveReq.LeaveRangeEnd.ToUpper();
|
|
||||||
// if (leaveRangeEnd == "MORNING")
|
|
||||||
// remarkStr += "ครึ่งวันเช้า";
|
|
||||||
// else if (leaveRangeEnd == "AFTERNOON")
|
|
||||||
// remarkStr += "ครึ่งวันบ่าย";
|
|
||||||
|
|
||||||
var leaveRangeEnd = leaveReq.LeaveRangeEnd == null ? "" : leaveReq.LeaveRangeEnd.ToUpper();
|
|
||||||
if (leaveRange != leaveRangeEnd)
|
|
||||||
{
|
{
|
||||||
if (leaveRangeEnd == "MORNING")
|
if (leaveRange == "MORNING")
|
||||||
remarkStr += " - ครึ่งวันเช้า";
|
remarkStr += "ครึ่งวันเช้า";
|
||||||
else if (leaveRangeEnd == "AFTERNOON")
|
else if (leaveRange == "AFTERNOON")
|
||||||
remarkStr += " - ครึ่งวันบ่าย";
|
remarkStr += "ครึ่งวันบ่าย";
|
||||||
|
|
||||||
|
|
||||||
|
// var leaveRangeEnd = leaveReq.LeaveRangeEnd == null ? "" : leaveReq.LeaveRangeEnd.ToUpper();
|
||||||
|
// if (leaveRangeEnd == "MORNING")
|
||||||
|
// remarkStr += "ครึ่งวันเช้า";
|
||||||
|
// else if (leaveRangeEnd == "AFTERNOON")
|
||||||
|
// remarkStr += "ครึ่งวันบ่าย";
|
||||||
|
|
||||||
|
var leaveRangeEnd = leaveReq.LeaveRangeEnd == null ? "" : leaveReq.LeaveRangeEnd.ToUpper();
|
||||||
|
if (leaveRange != leaveRangeEnd)
|
||||||
|
{
|
||||||
|
if (leaveRangeEnd == "MORNING")
|
||||||
|
remarkStr += " - ครึ่งวันเช้า";
|
||||||
|
else if (leaveRangeEnd == "AFTERNOON")
|
||||||
|
remarkStr += " - ครึ่งวันบ่าย";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(dd.date == leaveReq.LeaveStartDate.Date)
|
||||||
|
{
|
||||||
|
if (leaveRange == "MORNING")
|
||||||
|
remarkStr += "ครึ่งวันเช้า";
|
||||||
|
else if (leaveRange == "AFTERNOON")
|
||||||
|
remarkStr += "ครึ่งวันบ่าย";
|
||||||
|
}
|
||||||
|
else if(dd.date == leaveReq.LeaveEndDate.Date)
|
||||||
|
{
|
||||||
|
var leaveRangeEnd = leaveReq.LeaveRangeEnd == null ? "" : leaveReq.LeaveRangeEnd.ToUpper();
|
||||||
|
if (leaveRangeEnd == "MORNING")
|
||||||
|
remarkStr += "ครึ่งวันเช้า";
|
||||||
|
else if (leaveRangeEnd == "AFTERNOON")
|
||||||
|
remarkStr += "ครึ่งวันบ่าย";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
remarkStr += "เต็มวัน";
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
remarkStr += leaveReq.Type.Name;
|
remarkStr += leaveReq.Type.Name;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
status = "LEAVE";
|
status = "LEAVE";
|
||||||
stampType = leaveReq.LeaveRange ?? "";
|
if(leaveReq.LeaveStartDate.Date == dd.date)
|
||||||
stampAmount = leaveReq.LeaveRange == "MORNING" || leaveReq.LeaveRangeEnd == "MORNING" ? 0.5 : 1;
|
{
|
||||||
|
stampType = leaveReq.LeaveRange ?? "";
|
||||||
|
stampAmount = leaveReq.LeaveRange != "ALL" ? 0.5 : 1;
|
||||||
|
}
|
||||||
|
else if(leaveReq.LeaveEndDate.Date == dd.date)
|
||||||
|
{
|
||||||
|
stampAmount = leaveReq.LeaveRangeEnd != "ALL" ? 0.5 : 1;
|
||||||
|
stampType = leaveReq.LeaveRangeEnd ?? "";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
stampAmount = leaveReq.LeaveRange != "ALL" || leaveReq.LeaveRangeEnd != "ALL" ? 0.5 : 1;
|
||||||
|
if(stampType == "ALL") stampType = "FULL_DAY";
|
||||||
|
//stampAmount = leaveReq.LeaveRange != "ALL" || leaveReq.LeaveRangeEnd != "ALL" ? 0.5 : 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -618,40 +701,42 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// // Write employees to JSON file
|
// Write employees to JSON file
|
||||||
// var fileName = $"employees_{DateTime.Now:yyyyMMdd_HHmmss}.txt";
|
var fileName = $"employees_{DateTime.Now:yyyyMMdd_HHmmss}.txt";
|
||||||
// var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Exports", fileName);
|
var filePath = Path.Combine(_env.ContentRootPath, "Exports", fileName);
|
||||||
|
|
||||||
// // Ensure directory exists
|
// Ensure directory exists
|
||||||
// var directory = Path.GetDirectoryName(filePath);
|
var directory = Path.GetDirectoryName(filePath);
|
||||||
// if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
|
if (!string.IsNullOrEmpty(directory) && !Directory.Exists(directory))
|
||||||
// {
|
{
|
||||||
// Directory.CreateDirectory(directory);
|
Directory.CreateDirectory(directory);
|
||||||
// }
|
}
|
||||||
|
|
||||||
// var jsonOptions = new JsonSerializerOptions
|
var jsonOptions = new JsonSerializerOptions
|
||||||
// {
|
{
|
||||||
// WriteIndented = true,
|
WriteIndented = true,
|
||||||
// Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
|
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
|
||||||
// };
|
};
|
||||||
|
|
||||||
// var jsonContent = JsonSerializer.Serialize(employees, jsonOptions);
|
var jsonContent = JsonSerializer.Serialize(employees, jsonOptions);
|
||||||
// await File.WriteAllTextAsync(filePath, jsonContent);
|
Console.WriteLine($"Writing file to: {filePath}");
|
||||||
|
await File.WriteAllTextAsync(filePath, jsonContent);
|
||||||
|
Console.WriteLine($"File written successfully: {fileName}");
|
||||||
}
|
}
|
||||||
|
|
||||||
//call api
|
//call api
|
||||||
var apiPath = $"{_configuration["API"]}/org/profile-employee/absent-late/batch";
|
// var apiPath = $"{_configuration["API"]}/org/profile-employee/absent-late/batch";
|
||||||
var apiKey = _configuration["API_KEY"];
|
// var apiKey = _configuration["API_KEY"];
|
||||||
var body = new
|
// var body = new
|
||||||
{
|
// {
|
||||||
records = employees
|
// records = employees
|
||||||
};
|
// };
|
||||||
|
|
||||||
var apiResult = await PostExternalAPIAsync(apiPath, AccessToken ?? "", body, apiKey);
|
// var apiResult = await PostExternalAPIAsync(apiPath, AccessToken ?? "", body, apiKey);
|
||||||
if(apiResult == "")
|
// if(apiResult == "")
|
||||||
{
|
// {
|
||||||
throw new Exception($"เรียก API {apiPath} ไม่สำเร็จ");
|
// throw new Exception($"เรียก API {apiPath} ไม่สำเร็จ");
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -669,7 +754,7 @@ namespace BMA.EHR.Application.Repositories.Leaves.TimeAttendants
|
||||||
|
|
||||||
// ทำงานที่ต้องการที่นี่ (เช่น เรียก API, ประมวลผลข้อมูล ฯลฯ)
|
// ทำงานที่ต้องการที่นี่ (เช่น เรียก API, ประมวลผลข้อมูล ฯลฯ)
|
||||||
await ProcessTaskAsync(job.RootDnaId,job.StartDate, job.EndDate);
|
await ProcessTaskAsync(job.RootDnaId,job.StartDate, job.EndDate);
|
||||||
await ProcessEmpTaskAsync(job.RootDnaId,job.StartDate, job.EndDate);
|
//await ProcessEmpTaskAsync(job.RootDnaId,job.StartDate, job.EndDate);
|
||||||
|
|
||||||
// อัปเดตสถานะเป็น Completed
|
// อัปเดตสถานะเป็น Completed
|
||||||
await UpdateToCompletedAsync(job.Id);
|
await UpdateToCompletedAsync(job.Id);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue