hrms-api-backend/BMA.EHR.Application/Repositories/Reports/ProbationReportRepository.cs
2023-09-12 10:28:31 +07:00

311 lines
26 KiB
C#

using BMA.EHR.Application.Common.Interfaces;
using BMA.EHR.Application.Responses;
using BMA.EHR.Application.Repositories.MessageQueue;
using BMA.EHR.Domain.Models.Probation;
using BMA.EHR.Domain.Extensions;
using Microsoft.AspNetCore.Hosting;
using Microsoft.EntityFrameworkCore;
using System.Net.Http.Headers;
using Newtonsoft.Json;
using System.Globalization;
namespace BMA.EHR.Application.Repositories.Reports
{
public class ProbationReportRepository
{
#region " Fields "
private readonly IApplicationDBContext _dbContext;
private readonly IWebHostEnvironment _hostingEnvironment;
private readonly NotificationRepository _repositoryNoti;
#endregion
#region " Constructor and Destructor "
public ProbationReportRepository(IApplicationDBContext dbContext,
NotificationRepository repositoryNoti,
IWebHostEnvironment hostEnvironment)
{
_dbContext = dbContext;
_hostingEnvironment = hostEnvironment;
_repositoryNoti = repositoryNoti;
}
#endregion
#region " Methods "
#region
public async Task<object> GetProbationAssignAsync(Guid assign_id, string token)
{
var api_url = $"https://bma-ehr.frappet.synology.me/api/v1/probation/assign/probation-assign?assign_id={assign_id}";
ProbationAssignResponse probation_assign;
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var req = new HttpRequestMessage(HttpMethod.Get, api_url);
var res = await client.SendAsync(req);
var result = await res.Content.ReadAsStringAsync();
probation_assign = JsonConvert.DeserializeObject<ProbationAssignResponse>(result);
if (probation_assign.data != null)
{
return new
{
Name = string.IsNullOrEmpty(probation_assign.data.profile.name) ? string.Empty : probation_assign.data.profile.name,
Position = string.IsNullOrEmpty(probation_assign.data.profile.Position) ? string.Empty : probation_assign.data.profile.Position,
Department = string.IsNullOrEmpty(probation_assign.data.profile.Department) ? string.Empty : probation_assign.data.profile.Department,
OrganizationOrganization = string.IsNullOrEmpty(probation_assign.data.profile.OrganizationOrganization) ? string.Empty : probation_assign.data.profile.OrganizationOrganization,
Oc = string.IsNullOrEmpty(probation_assign.data.profile.Oc) ? string.Empty : probation_assign.data.profile.Oc,
DateStart = string.IsNullOrEmpty(probation_assign.data.assign.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : probation_assign.data.assign.date_start.ToThaiFullDate().ToString().ToThaiNumber(),
DateFinish = string.IsNullOrEmpty(probation_assign.data.assign.date_finish.ToString()) ? "วันที่ เดือน พ.ศ." : probation_assign.data.assign.date_finish.ToThaiFullDate().ToString().ToThaiNumber(),
NameMentor1 = string.IsNullOrEmpty(probation_assign.data.mentors[0].name) ? string.Empty : probation_assign.data.mentors[0].name,
DateMentor1 = string.IsNullOrEmpty(probation_assign.data.mentors[0].dated.ToString()) ? "วันที่ เดือน พ.ศ." : probation_assign.data.mentors[0].dated.ToThaiFullDate().ToString().ToThaiNumber(),
PositionMentor1 = string.IsNullOrEmpty(probation_assign.data.mentors[0].Position) ? string.Empty : probation_assign.data.mentors[0].Position,
NameMentor2 = string.IsNullOrEmpty(probation_assign.data.mentors[1].name) ? string.Empty : probation_assign.data.mentors[1].name,
DateMentor2 = string.IsNullOrEmpty(probation_assign.data.mentors[1].dated.ToString()) ? "วันที่ เดือน พ.ศ." : probation_assign.data.mentors[1].dated.ToThaiFullDate().ToString().ToThaiNumber(),
PositionMentor2 = string.IsNullOrEmpty(probation_assign.data.mentors[1].Position) ? string.Empty : probation_assign.data.mentors[1].Position,
NameCommander = string.IsNullOrEmpty(probation_assign.data.commander.name) ? string.Empty : probation_assign.data.commander.name,
DateCommander = string.IsNullOrEmpty(probation_assign.data.commander.dated.ToString()) ? "วันที่ เดือน พ.ศ." : probation_assign.data.commander.dated.ToThaiFullDate().ToString().ToThaiNumber(),
PositionCommander = string.IsNullOrEmpty(probation_assign.data.commander.Position) ? string.Empty : probation_assign.data.commander.Position,
Jobs = probation_assign.data.jobs.ToList(),
Knowledge = probation_assign.data.knowledges.ToList(),
Competency = probation_assign.data.competencys.ToList(),
Outputs = probation_assign.data.outputs.ToList(),
OtherDesc = string.IsNullOrEmpty(probation_assign.data.assign.other_desc) ? string.Empty : probation_assign.data.assign.other_desc,
Other4Desc = string.IsNullOrEmpty(probation_assign.data.assign.other4_desc) ? string.Empty : probation_assign.data.assign.other4_desc,
Other5No1Desc = string.IsNullOrEmpty(probation_assign.data.assign.other4_desc) ? string.Empty : probation_assign.data.assign.other4_desc,
Other5No2Desc = string.IsNullOrEmpty(probation_assign.data.assign.other5_no2_desc) ? string.Empty : probation_assign.data.assign.other5_no2_desc,
};
}
else
{
return null;
}
}
}
#endregion
#region (, )
public async Task<object> GetEvaluateRecordAsync(Guid assign_id, string token)
{
var api_url = $"https://bma-ehr.frappet.synology.me/api/v1/probation/report/form-record?id={assign_id}";
EvaluateRecordAssignResponse evaluate_record;
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var req = new HttpRequestMessage(HttpMethod.Get, api_url);
var res = await client.SendAsync(req);
var result = await res.Content.ReadAsStringAsync();
evaluate_record = JsonConvert.DeserializeObject<EvaluateRecordAssignResponse>(result);
if (evaluate_record.data != null)
{
evaluate_record.data.evaluate.orientation = evaluate_record.data.evaluate.orientation == "1" ? "(/) ดำเนินการเเล้ว ( ) ยังไม่ได้ดำเนินการ" : "( ) ดำเนินการเเล้ว (/) ยังไม่ได้ดำเนินการ";
evaluate_record.data.evaluate.self_learning = evaluate_record.data.evaluate.self_learning == "1" ? "(/) ดำเนินการเเล้ว ( ) ยังไม่ได้ดำเนินการ" : "( ) ดำเนินการเเล้ว (/) ยังไม่ได้ดำเนินการ";
evaluate_record.data.evaluate.training_seminar = evaluate_record.data.evaluate.training_seminar == "1" ? "(/) ดำเนินการเเล้ว ( ) ยังไม่ได้ดำเนินการ" : "( ) ดำเนินการเเล้ว (/) ยังไม่ได้ดำเนินการ";
evaluate_record.data.evaluate.other_training = evaluate_record.data.evaluate.other_training == "1" ? "(/) ดำเนินการเเล้ว ( ) ยังไม่ได้ดำเนินการ" : "( ) ดำเนินการเเล้ว (/) ยังไม่ได้ดำเนินการ";
return new
{
DirectorName = string.IsNullOrEmpty(evaluate_record.data.director.name) ? string.Empty : evaluate_record.data.director.name,
DirectorPosition = string.IsNullOrEmpty(evaluate_record.data.director.Position) ? string.Empty : evaluate_record.data.director.Position,
DirectorDated = string.IsNullOrEmpty(evaluate_record.data.evaluate.sign_dated.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_record.data.evaluate.sign_dated.ToThaiFullDate().ToString().ToThaiNumber(),
Name = string.IsNullOrEmpty(evaluate_record.data.experimentee.name) ? string.Empty : evaluate_record.data.experimentee.name,
Position = string.IsNullOrEmpty(evaluate_record.data.experimentee.Position) ? string.Empty : evaluate_record.data.experimentee.Position,
Department = string.IsNullOrEmpty(evaluate_record.data.experimentee.Department) ? string.Empty : evaluate_record.data.experimentee.Department,
Organizationorganization = string.IsNullOrEmpty(evaluate_record.data.experimentee.OrganizationOrganization) ? string.Empty : evaluate_record.data.experimentee.OrganizationOrganization,
Oc = string.IsNullOrEmpty(evaluate_record.data.experimentee.Oc) ? string.Empty : evaluate_record.data.experimentee.Oc,
DateStart = string.IsNullOrEmpty(evaluate_record.data.assign.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_record.data.assign.date_start.ToThaiFullDate().ToString().ToThaiNumber(),
DateFinish = string.IsNullOrEmpty(evaluate_record.data.assign.date_finish.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_record.data.assign.date_finish.ToThaiFullDate().ToString().ToThaiNumber(),
No = evaluate_record.data.evaluate.no = string.IsNullOrEmpty(evaluate_record.data.evaluate.no) ? string.Empty : evaluate_record.data.evaluate.no.ToThaiNumber(),
EvaluateDateStart = string.IsNullOrEmpty(evaluate_record.data.evaluate.date_start.ToString()) ? string.Empty : evaluate_record.data.evaluate.date_start.ToThaiFullDate().ToString().ToThaiNumber(),
EvaluateDateFinish = string.IsNullOrEmpty(evaluate_record.data.evaluate.date_finish.ToString()) ? string.Empty : evaluate_record.data.evaluate.date_finish.ToThaiFullDate().ToString().ToThaiNumber(),
Achievements = evaluate_record.data.evaluate.achievements,
Role = evaluate_record.data.evaluate.role == "mentor" ? "ผู้ดูแลการทดลองปฎิบัติหน้าที่ราชการ" : "ผู้บังคับบัญชา",
Evaluate = evaluate_record.data.evaluate,
};
}
else
{
return null;
}
}
}
#endregion
#region ()
public async Task<object> GetEvaluateAssignAsync(Guid id, string token)
{
var api_url = $"https://bma-ehr.frappet.synology.me/api/v1/probation/report/evaluate-commander?id={id}";
EvaluateAssignResponse evaluate_assign;
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var req = new HttpRequestMessage(HttpMethod.Get, api_url);
var res = await client.SendAsync(req);
var result = await res.Content.ReadAsStringAsync();
evaluate_assign = JsonConvert.DeserializeObject<EvaluateAssignResponse>(result);
if (evaluate_assign.data != null)
{
evaluate_assign.data.evaluate.orientation = evaluate_assign.data.evaluate.orientation == "1" ? "[/] ดำเนินการแล้ว [ ] ยังไม่ได้ดำเนินการ" : "[ ] ดำเนินการแล้ว [/] ยังไม่ได้ดำเนินการ";
evaluate_assign.data.evaluate.self_learning = evaluate_assign.data.evaluate.self_learning == "1" ? "[/] ดำเนินการแล้ว [ ] ยังไม่ได้ดำเนินการ" : "[ ] ดำเนินการแล้ว [/] ยังไม่ได้ดำเนินการ";
evaluate_assign.data.evaluate.training_seminar = evaluate_assign.data.evaluate.training_seminar == "1" ? "[/] ดำเนินการแล้ว [ ] ยังไม่ได้ดำเนินการ" : "[ ] ดำเนินการแล้ว [/] ยังไม่ได้ดำเนินการ";
evaluate_assign.data.evaluate.other_training = evaluate_assign.data.evaluate.other_training == "1" ? "[/] ดำเนินการแล้ว [ ] ยังไม่ได้ดำเนินการ" : "[ ] ดำเนินการแล้ว [/] ยังไม่ได้ดำเนินการ";
return new
{
No = string.IsNullOrEmpty(evaluate_assign.data.evaluate.no.ToString()) ? string.Empty : evaluate_assign.data.evaluate.no.ToString().ToThaiNumber(),
EvaluateDateStart = string.IsNullOrEmpty(evaluate_assign.data.evaluate.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.date_start.ToThaiFullDate().ToString().ToThaiNumber(),
EvaluateDateFinish = string.IsNullOrEmpty(evaluate_assign.data.evaluate.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.date_start.ToThaiFullDate().ToString().ToThaiNumber(),
Name = string.IsNullOrEmpty(evaluate_assign.data.experimentee.name) ? string.Empty : evaluate_assign.data.experimentee.name,
Position = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Position) ? string.Empty : evaluate_assign.data.experimentee.Position,
Department = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Department) ? string.Empty : evaluate_assign.data.experimentee.Department,
OrganizationOrganization = string.IsNullOrEmpty(evaluate_assign.data.experimentee.OrganizationOrganization) ? string.Empty : evaluate_assign.data.experimentee.OrganizationOrganization,
Oc = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Oc) ? string.Empty : evaluate_assign.data.experimentee.Oc,
DateStart = string.IsNullOrEmpty(evaluate_assign.data.assign.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.assign.date_start.ToThaiFullDate().ToString().ToThaiNumber(),
DateFinish = string.IsNullOrEmpty(evaluate_assign.data.assign.date_finish.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.assign.date_finish.ToThaiFullDate().ToString().ToThaiNumber(),
CommanderName = string.IsNullOrEmpty(evaluate_assign.data.commander.name) ? string.Empty : evaluate_assign.data.commander.name,
CommanderPosition = string.IsNullOrEmpty(evaluate_assign.data.commander.Position) ? string.Empty : evaluate_assign.data.commander.Position,
CommanderDated = string.IsNullOrEmpty(evaluate_assign.data.evaluate.sign_dated.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.sign_dated.ToThaiFullDate().ToString().ToThaiNumber(),
BehaviorStrengthDesc = evaluate_assign.data.evaluate.behavior_strength_desc,
BehaviorImproveDesc = evaluate_assign.data.evaluate.behavior_improve_desc,
Evaluate = evaluate_assign.data.evaluate,
};
}
else
{
return null;
}
}
}
#endregion
#region ()
public async Task<object> GetEvaluateChairmanAssignAsync(Guid id, string token)
{
var api_url = $"https://bma-ehr.frappet.synology.me/api/v1/probation/report/evaluate-chairman?id={id}";
EvaluateChairmanAssignResponse evaluate_assign;
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var req = new HttpRequestMessage(HttpMethod.Get, api_url);
var res = await client.SendAsync(req);
var result = await res.Content.ReadAsStringAsync();
evaluate_assign = JsonConvert.DeserializeObject<EvaluateChairmanAssignResponse>(result);
if (evaluate_assign.data != null)
{
return new
{
No = string.IsNullOrEmpty(evaluate_assign.data.evaluate.no.ToString()) ? string.Empty : evaluate_assign.data.evaluate.no.ToString().ToThaiNumber(),
EvaluateDateStart = string.IsNullOrEmpty(evaluate_assign.data.evaluate.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.date_start.ToThaiFullDate().ToString().ToThaiNumber(),
EvaluateDateFinish = string.IsNullOrEmpty(evaluate_assign.data.evaluate.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.date_start.ToThaiFullDate().ToString().ToThaiNumber(),
Name = string.IsNullOrEmpty(evaluate_assign.data.experimentee.name) ? string.Empty : evaluate_assign.data.experimentee.name,
Position = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Position) ? string.Empty : evaluate_assign.data.experimentee.Position,
Department = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Department) ? string.Empty : evaluate_assign.data.experimentee.Department,
OrganizationOrganization = string.IsNullOrEmpty(evaluate_assign.data.experimentee.OrganizationOrganization) ? string.Empty : evaluate_assign.data.experimentee.OrganizationOrganization,
Oc = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Oc) ? string.Empty : evaluate_assign.data.experimentee.Oc,
DateStart = string.IsNullOrEmpty(evaluate_assign.data.assign.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.assign.date_start.ToThaiFullDate().ToString().ToThaiNumber(),
DateFinish = string.IsNullOrEmpty(evaluate_assign.data.assign.date_finish.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.assign.date_finish.ToThaiFullDate().ToString().ToThaiNumber(),
ChairmanName = string.IsNullOrEmpty(evaluate_assign.data.chairman.name) ? string.Empty : evaluate_assign.data.chairman.name,
ChairmanPosition = string.IsNullOrEmpty(evaluate_assign.data.chairman.Position) ? string.Empty : evaluate_assign.data.chairman.Position,
ChairmanDated = string.IsNullOrEmpty(evaluate_assign.data.evaluate.chairman_dated.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.chairman_dated.ToThaiFullDate().ToString().ToThaiNumber(),
Director1Name = string.IsNullOrEmpty(evaluate_assign.data.director1.name) ? string.Empty : evaluate_assign.data.director1.name,
Director1Position = string.IsNullOrEmpty(evaluate_assign.data.director1.Position) ? string.Empty : evaluate_assign.data.director1.Position,
Director1Dated = string.IsNullOrEmpty(evaluate_assign.data.evaluate.director1_dated.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.director1_dated.ToThaiFullDate().ToString().ToThaiNumber(),
Director2Name = string.IsNullOrEmpty(evaluate_assign.data.director2.name) ? string.Empty : evaluate_assign.data.director2.name,
Director2Position = string.IsNullOrEmpty(evaluate_assign.data.director2.Position) ? string.Empty : evaluate_assign.data.director2.Position,
Director2Dated = string.IsNullOrEmpty(evaluate_assign.data.evaluate.director2_dated.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.director2_dated.ToThaiFullDate().ToString().ToThaiNumber(),
Evaluate = evaluate_assign.data.evaluate,
};
}
else
{
return null;
}
}
}
#endregion
#region
public async Task<object> GetEvaluateResultAssignAsync(Guid id, string token)
{
var api_url = $"https://bma-ehr.frappet.synology.me/api/v1/probation/evaluate-result?assign_id={id}";
EvaluateResultAssignResponse evaluate_assign;
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var req = new HttpRequestMessage(HttpMethod.Get, api_url);
var res = await client.SendAsync(req);
var result = await res.Content.ReadAsStringAsync();
evaluate_assign = JsonConvert.DeserializeObject<EvaluateResultAssignResponse>(result);
if (evaluate_assign.data != null)
{
return new
{
EvaluateDateStart = string.IsNullOrEmpty(evaluate_assign.data.evaluate.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.date_start.ToThaiFullDate().ToString().ToThaiNumber(),
EvaluateDateFinish = string.IsNullOrEmpty(evaluate_assign.data.evaluate.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.date_start.ToThaiFullDate().ToString().ToThaiNumber(),
Position = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Position) ? string.Empty : evaluate_assign.data.experimentee.Position,
Department = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Department) ? string.Empty : evaluate_assign.data.experimentee.Department,
OrganizationOrganization = string.IsNullOrEmpty(evaluate_assign.data.experimentee.OrganizationOrganization) ? string.Empty : evaluate_assign.data.experimentee.OrganizationOrganization,
Oc = string.IsNullOrEmpty(evaluate_assign.data.experimentee.Oc) ? string.Empty : evaluate_assign.data.experimentee.Oc,
Reson = string.IsNullOrEmpty(evaluate_assign.data.evaluate.reson) ? string.Empty : evaluate_assign.data.evaluate.reson,
DevelopComplete = evaluate_assign.data.evaluate.develop_complete.ToString() == "1" ? "/" : " ",
NotDevelopComplete = evaluate_assign.data.evaluate.develop_complete.ToString() == "0" ? "/" : " ",
PassResult = evaluate_assign.data.evaluate.pass_result.ToString() == "1" ? "/" : " ",
NotPassResult = evaluate_assign.data.evaluate.pass_result.ToString() == "0" ? "/" : " ",
ExpandMonth = string.IsNullOrEmpty(evaluate_assign.data.evaluate.expand_month.ToString()) ? string.Empty : evaluate_assign.data.evaluate.expand_month.ToString().ToThaiNumber(),
ChairmanName = string.IsNullOrEmpty(evaluate_assign.data.chairman.name) ? string.Empty : evaluate_assign.data.chairman.name,
ChairmanPosition = string.IsNullOrEmpty(evaluate_assign.data.chairman.Position) ? string.Empty : evaluate_assign.data.chairman.Position,
ChairmanDate = string.IsNullOrEmpty(evaluate_assign.data.evaluate.chairman_dated.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.chairman_dated.ToThaiFullDate().ToString().ToThaiNumber(),
};
}
else
{
return null;
}
}
}
#endregion
#region
//public static string ConvertDateMonthYear(string year, string month, string date)
//{
// year = year.ToInteger().ToThaiYear().ToString().ToThaiNumber();
// month = month.ToInteger().ToThaiMonth();
// date = date.StartsWith("0") ? date.Substring(1).ToThaiNumber() : date.ToThaiNumber();
// return $"วันที่ {date} เดือน {month} พ.ศ. {year}";
//}
#endregion
#endregion
public async Task NotifyProbation()
{
var cronjobNotis = await _dbContext.Set<CronjobNotiProbation>()
.AsQueryable()
.ToListAsync();
foreach (var cronjobNoti in cronjobNotis)
{
if (cronjobNoti.ReceiveDate.Date == DateTime.Now.Date && cronjobNoti.IsSendNoti == false)
{
await _repositoryNoti.PushNotificationAsync(
cronjobNoti.ReceiverUserId,
cronjobNoti.Subject,
cronjobNoti.Body,
cronjobNoti.Payload,
cronjobNoti.IsSendInbox,
cronjobNoti.IsSendMail
);
cronjobNoti.IsSendNoti = true;
}
}
await _dbContext.SaveChangesAsync();
}
}
}