Merge branch 'develop' into working
This commit is contained in:
commit
7632d81a3d
17 changed files with 859 additions and 589 deletions
|
|
@ -32,6 +32,7 @@ namespace BMA.EHR.Application
|
||||||
services.AddTransient<TransferReportRepository>();
|
services.AddTransient<TransferReportRepository>();
|
||||||
services.AddTransient<EmailSenderService>();
|
services.AddTransient<EmailSenderService>();
|
||||||
services.AddTransient<CandidateReportRepository>();
|
services.AddTransient<CandidateReportRepository>();
|
||||||
|
services.AddTransient<MinIOExamService>();
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
366
BMA.EHR.Application/Repositories/MinIOExamService.cs
Normal file
366
BMA.EHR.Application/Repositories/MinIOExamService.cs
Normal file
|
|
@ -0,0 +1,366 @@
|
||||||
|
using Amazon.S3;
|
||||||
|
using Amazon.S3.Model;
|
||||||
|
using BMA.EHR.Domain.Models.Documents;
|
||||||
|
using BMA.EHR.Domain.Shared;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using System.Net.Http.Headers;
|
||||||
|
using BMA.EHR.Application.Common.Interfaces;
|
||||||
|
using Amazon;
|
||||||
|
using BMA.EHR.Domain.Models.Organizations;
|
||||||
|
using MimeTypes;
|
||||||
|
using Profile = BMA.EHR.Domain.Models.HR.Profile;
|
||||||
|
|
||||||
|
namespace BMA.EHR.Application.Repositories
|
||||||
|
{
|
||||||
|
public class MinIOExamService
|
||||||
|
{
|
||||||
|
#region " Fields "
|
||||||
|
|
||||||
|
private readonly IApplicationDBExamContext _dbContext;
|
||||||
|
private readonly IConfiguration _configuration;
|
||||||
|
private readonly AmazonS3Client _s3Client;
|
||||||
|
private readonly IWebHostEnvironment _hostingEnvironment;
|
||||||
|
private string _bucketName = string.Empty;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region " Constructors "
|
||||||
|
|
||||||
|
public MinIOExamService(IApplicationDBExamContext dbContext,
|
||||||
|
IConfiguration configuration,
|
||||||
|
IWebHostEnvironment hostingEnvironment)
|
||||||
|
{
|
||||||
|
_dbContext = dbContext;
|
||||||
|
_configuration = configuration;
|
||||||
|
_hostingEnvironment = hostingEnvironment;
|
||||||
|
|
||||||
|
var config = new AmazonS3Config
|
||||||
|
{
|
||||||
|
ServiceURL = _configuration["MinIO:Endpoint"],
|
||||||
|
ForcePathStyle = true
|
||||||
|
};
|
||||||
|
|
||||||
|
_s3Client = new AmazonS3Client(_configuration["MinIO:AccessKey"], _configuration["MinIO:SecretKey"], config);
|
||||||
|
this._bucketName = _configuration["MinIO:BucketName"] ?? "bma-recruit";
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region " Methods "
|
||||||
|
|
||||||
|
public async Task<Document> UploadFileAsync(IFormFile file, string newFileName = "")
|
||||||
|
{
|
||||||
|
var fileName = "";
|
||||||
|
var fileExt = Path.GetExtension(file.FileName);
|
||||||
|
if (newFileName != "")
|
||||||
|
fileName = $"{newFileName}";
|
||||||
|
else
|
||||||
|
fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
|
||||||
|
|
||||||
|
|
||||||
|
var tmpDir = Path.Combine("tmp");
|
||||||
|
if (!Directory.Exists(tmpDir))
|
||||||
|
Directory.CreateDirectory(tmpDir);
|
||||||
|
|
||||||
|
var tmpFile = Path.Combine(tmpDir, $"tmp_{DateTime.Now.ToString("ddMMyyyyHHmmss")}{fileExt}");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
using (var ms = new MemoryStream())
|
||||||
|
{
|
||||||
|
var id = Guid.NewGuid();
|
||||||
|
file.CopyTo(ms);
|
||||||
|
var fileBytes = ms.ToArray();
|
||||||
|
System.IO.MemoryStream filestream = new System.IO.MemoryStream(fileBytes);
|
||||||
|
|
||||||
|
var request = new PutObjectRequest
|
||||||
|
{
|
||||||
|
BucketName = _bucketName,
|
||||||
|
Key = id.ToString("D"),
|
||||||
|
InputStream = filestream,
|
||||||
|
ContentType = file.ContentType,
|
||||||
|
CannedACL = S3CannedACL.PublicRead
|
||||||
|
};
|
||||||
|
|
||||||
|
await _s3Client.PutObjectAsync(request);
|
||||||
|
|
||||||
|
// create document object
|
||||||
|
var doc = new Document()
|
||||||
|
{
|
||||||
|
FileName = fileName,
|
||||||
|
FileType = file.ContentType,
|
||||||
|
FileSize = Convert.ToInt32(file.Length),
|
||||||
|
ObjectRefId = id,
|
||||||
|
CreatedDate = DateTime.Now
|
||||||
|
};
|
||||||
|
await _dbContext.Set<Document>().AddAsync(doc);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
|
||||||
|
return doc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
File.Delete(tmpFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<FileDownloadResponse> DownloadFileAsync(Guid fileId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var doc = await _dbContext.Set<Document>().AsQueryable()
|
||||||
|
.FirstOrDefaultAsync(x => x.Id == fileId);
|
||||||
|
|
||||||
|
if (doc == null)
|
||||||
|
throw new Exception(GlobalMessages.FileNotFoundOnServer);
|
||||||
|
|
||||||
|
using (var memoryStream = new MemoryStream())
|
||||||
|
{
|
||||||
|
GetObjectRequest request = new GetObjectRequest
|
||||||
|
{
|
||||||
|
BucketName = _bucketName,
|
||||||
|
Key = doc.ObjectRefId.ToString("D")
|
||||||
|
};
|
||||||
|
|
||||||
|
using (GetObjectResponse response = await _s3Client.GetObjectAsync(request))
|
||||||
|
{
|
||||||
|
using (Stream responseStream = response.ResponseStream)
|
||||||
|
{
|
||||||
|
responseStream.CopyTo(memoryStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var fileContent = memoryStream.ToArray();
|
||||||
|
|
||||||
|
return new FileDownloadResponse
|
||||||
|
{
|
||||||
|
FileName = doc.FileName,
|
||||||
|
FileType = doc.FileType,
|
||||||
|
FileContent = fileContent
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task DeleteFileAsync(Guid fileId)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var doc = await _dbContext.Set<Document>().AsQueryable()
|
||||||
|
.FirstOrDefaultAsync(x => x.Id == fileId);
|
||||||
|
|
||||||
|
if (doc == null)
|
||||||
|
throw new Exception(GlobalMessages.FileNotFoundOnServer);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DeleteObjectRequest request = new DeleteObjectRequest
|
||||||
|
{
|
||||||
|
BucketName = _bucketName,
|
||||||
|
Key = doc?.ObjectRefId.ToString("D")
|
||||||
|
};
|
||||||
|
|
||||||
|
// delete from minio
|
||||||
|
await _s3Client.DeleteObjectAsync(request);
|
||||||
|
|
||||||
|
_dbContext.Set<Document>().Remove(doc);
|
||||||
|
await _dbContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<string> ImagesPath(Guid? fileId)
|
||||||
|
{
|
||||||
|
if (fileId == null)
|
||||||
|
return "";
|
||||||
|
|
||||||
|
var doc = await _dbContext.Set<Document>().AsQueryable()
|
||||||
|
.FirstOrDefaultAsync(x => x.Id == fileId);
|
||||||
|
|
||||||
|
if (doc == null)
|
||||||
|
throw new Exception(GlobalMessages.FileNotFoundOnServer);
|
||||||
|
var config = new AmazonS3Config
|
||||||
|
{
|
||||||
|
ServiceURL = _configuration["MinIO:Endpoint"],
|
||||||
|
ForcePathStyle = true
|
||||||
|
};
|
||||||
|
|
||||||
|
DateTime expires = DateTime.UtcNow.AddHours(6);
|
||||||
|
var _protocol = _configuration["Protocol"];
|
||||||
|
GetPreSignedUrlRequest request = new GetPreSignedUrlRequest
|
||||||
|
{
|
||||||
|
BucketName = _bucketName,
|
||||||
|
Key = doc?.ObjectRefId.ToString("D"),
|
||||||
|
Expires = expires,
|
||||||
|
Protocol = _protocol == "HTTPS" ? Protocol.HTTPS : Protocol.HTTP
|
||||||
|
};
|
||||||
|
string path = _s3Client.GetPreSignedURL(request);
|
||||||
|
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<string> ImagesPathByName(string fileName)
|
||||||
|
{
|
||||||
|
var config = new AmazonS3Config
|
||||||
|
{
|
||||||
|
ServiceURL = _configuration["MinIO:Endpoint"],
|
||||||
|
ForcePathStyle = true
|
||||||
|
};
|
||||||
|
|
||||||
|
DateTime expires = DateTime.UtcNow.AddHours(6);
|
||||||
|
var _protocol = _configuration["Protocol"];
|
||||||
|
GetPreSignedUrlRequest request = new GetPreSignedUrlRequest
|
||||||
|
{
|
||||||
|
BucketName = _bucketName,
|
||||||
|
Key = fileName,
|
||||||
|
Expires = expires,
|
||||||
|
Protocol = _protocol == "HTTPS" ? Protocol.HTTPS : Protocol.HTTP
|
||||||
|
};
|
||||||
|
string path = _s3Client.GetPreSignedURL(request);
|
||||||
|
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
public List<Guid> GetAllIdByRoot(Guid? id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var ret = new List<Guid>();
|
||||||
|
if (id == null)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
var oc = _dbContext.Set<OrganizationEntity>().FirstOrDefault(x => x.Id == id);
|
||||||
|
if (oc != null)
|
||||||
|
ret.Add(oc.Id);
|
||||||
|
|
||||||
|
var child = _dbContext.Set<OrganizationEntity>().AsQueryable().Where(x => x.Parent != null && x.Parent.Id == id).ToList();
|
||||||
|
if (child.Any())
|
||||||
|
{
|
||||||
|
foreach (var item in child)
|
||||||
|
{
|
||||||
|
ret.AddRange(GetAllIdByRoot(item.Id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<string?> CheckBmaOfficer(string CitizenId)
|
||||||
|
{
|
||||||
|
var data = await _dbContext.Set<Profile>().FirstOrDefaultAsync(x => x.CitizenId == CitizenId);
|
||||||
|
if (data == null)
|
||||||
|
return null;
|
||||||
|
if (data.ProfileType.Trim().ToUpper() == "OFFICER")
|
||||||
|
return "OFFICER";
|
||||||
|
if (data.EmployeeClass.Trim().ToUpper() == "PERM")
|
||||||
|
return "EMPLOYEE_PERM";
|
||||||
|
if (data.EmployeeClass.Trim().ToUpper() == "TEMP")
|
||||||
|
return "EMPLOYEE_TEMP";
|
||||||
|
return "EMPLOYEE";
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task UploadFileAsyncTemp(string fileName, string subFolder)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var fileContents = File.ReadAllBytes(fileName);
|
||||||
|
System.IO.MemoryStream filestream = new System.IO.MemoryStream(fileContents);
|
||||||
|
//var fileNameWithoutExt = Path.GetFileNameWithoutExtension(fileName);
|
||||||
|
var fileExt = Path.GetExtension(fileName);
|
||||||
|
var fileType = MimeTypeMap.GetMimeType(fileExt);
|
||||||
|
var file_name = Path.GetFileName(fileName);
|
||||||
|
Console.WriteLine($"{_bucketName}{subFolder}");
|
||||||
|
Console.WriteLine(fileName);
|
||||||
|
Console.WriteLine(file_name);
|
||||||
|
Console.WriteLine(filestream);
|
||||||
|
Console.WriteLine(fileType);
|
||||||
|
|
||||||
|
var request = new PutObjectRequest
|
||||||
|
{
|
||||||
|
BucketName = $"{_bucketName}",
|
||||||
|
// BucketName = $"{_bucketName}{subFolder}",
|
||||||
|
Key = file_name,
|
||||||
|
InputStream = filestream,
|
||||||
|
ContentType = fileType,
|
||||||
|
CannedACL = S3CannedACL.PublicRead
|
||||||
|
};
|
||||||
|
|
||||||
|
await _s3Client.PutObjectAsync(request);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task GenerateJsonFile(string json, string path, string fileName)
|
||||||
|
{
|
||||||
|
var tmpDir = Path.Combine("tmp");
|
||||||
|
if (!Directory.Exists(tmpDir))
|
||||||
|
Directory.CreateDirectory(tmpDir);
|
||||||
|
|
||||||
|
var tmpFile = Path.Combine(tmpDir, $"{fileName}.json");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
SaveToJsonFile(tmpFile, json);
|
||||||
|
await UploadFileAsyncTemp(tmpFile, path);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (tmpFile != "")
|
||||||
|
{
|
||||||
|
if (System.IO.File.Exists(tmpFile))
|
||||||
|
System.IO.File.Delete(tmpFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SaveToJsonFile(string fileName, string data)
|
||||||
|
{
|
||||||
|
TextWriter writer = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
writer = new StreamWriter(fileName);
|
||||||
|
writer.Write(data);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
if (writer != null)
|
||||||
|
writer.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using System.Reflection.Metadata;
|
using System.Reflection.Metadata;
|
||||||
|
using System.Text;
|
||||||
using BMA.EHR.Application.Common.Interfaces;
|
using BMA.EHR.Application.Common.Interfaces;
|
||||||
using BMA.EHR.Application.Responses;
|
using BMA.EHR.Application.Responses;
|
||||||
using BMA.EHR.Domain.Extensions;
|
using BMA.EHR.Domain.Extensions;
|
||||||
|
|
@ -12,6 +13,7 @@ using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
using static BMA.EHR.Domain.Extensions.DateTimeExtension;
|
||||||
|
|
||||||
namespace BMA.EHR.Application.Repositories.Reports
|
namespace BMA.EHR.Application.Repositories.Reports
|
||||||
{
|
{
|
||||||
|
|
@ -49,81 +51,125 @@ namespace BMA.EHR.Application.Repositories.Reports
|
||||||
#region ใบสมัครสอบ
|
#region ใบสมัครสอบ
|
||||||
public async Task<dynamic> GetExamCandidateAsync(Guid id)
|
public async Task<dynamic> GetExamCandidateAsync(Guid id)
|
||||||
{
|
{
|
||||||
|
var careers = await _dbExamContext.Set<Career>()
|
||||||
|
.AsQueryable()
|
||||||
|
.Where(x => x.Candidate.Id == id)
|
||||||
|
.ToListAsync();
|
||||||
|
var yearDiff = 0;
|
||||||
|
var monthDiff = 0;
|
||||||
|
var dayDiff = 0;
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
var zxc = new List<dynamic>();
|
||||||
|
foreach (var career in careers)
|
||||||
|
{
|
||||||
|
if (career.DurationEnd < career.DurationStart)
|
||||||
|
{
|
||||||
|
var rangeObj = career.DurationEnd.CalculateBetweenDateV2Value(career.DurationStart);
|
||||||
|
yearDiff = yearDiff + rangeObj.years;
|
||||||
|
monthDiff = monthDiff + rangeObj.months;
|
||||||
|
dayDiff = dayDiff + rangeObj.days;
|
||||||
|
zxc.Add(rangeObj);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var rangeObj = career.DurationStart.CalculateBetweenDateV2Value(career.DurationEnd);
|
||||||
|
yearDiff = yearDiff + rangeObj.years;
|
||||||
|
monthDiff = monthDiff + rangeObj.months;
|
||||||
|
dayDiff = dayDiff + rangeObj.days;
|
||||||
|
zxc.Add(rangeObj);
|
||||||
|
}
|
||||||
|
if (dayDiff >= 30)
|
||||||
|
{
|
||||||
|
monthDiff = monthDiff + (int)(dayDiff / 30);
|
||||||
|
dayDiff = dayDiff % 30;
|
||||||
|
}
|
||||||
|
if (monthDiff >= 12)
|
||||||
|
{
|
||||||
|
yearDiff = yearDiff + (int)(monthDiff / 12);
|
||||||
|
monthDiff = monthDiff % 12;
|
||||||
|
}
|
||||||
|
sb.Clear();
|
||||||
|
sb.Append(yearDiff == 0 ? "" : $"{yearDiff} ปี ");
|
||||||
|
sb.Append(monthDiff == 0 ? "" : $"{monthDiff} เดือน ");
|
||||||
|
sb.Append(dayDiff == 0 ? "" : $"{dayDiff} วัน ");
|
||||||
|
}
|
||||||
var data = await _dbExamContext.Set<Candidate>().AsQueryable()
|
var data = await _dbExamContext.Set<Candidate>().AsQueryable()
|
||||||
.Where(x => x.Id == id)
|
.Where(x => x.Id == id)
|
||||||
.Select(p => new
|
.Select(p => new
|
||||||
{
|
{
|
||||||
p.Id,
|
p.Id,
|
||||||
AvatarId = p.ProfileImg == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileImg.Id,
|
AvatarId = p.ProfileImg == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : p.ProfileImg.Id,
|
||||||
ExamIdenNumber = p.ExamIdenNumber,
|
ExamIdenNumber = p.ExamIdenNumber == null ? "-" : p.ExamIdenNumber,
|
||||||
PositionName = p.PositionExam == null ? "" : p.PositionExam.PositionName,
|
PositionName = p.PositionExam == null ? "-" : p.PositionExam.PositionName,
|
||||||
PeriodExamName = p.PeriodExam == null ? "" : p.PeriodExam.Name,
|
PositionLevelName = p.PositionExam == null ? "-" : p.PositionExam.PositionLevelName,
|
||||||
PeriodExamRound = p.PeriodExam == null ? "" : p.PeriodExam.Round.ToString(),
|
PeriodExamName = p.PeriodExam == null ? "-" : p.PeriodExam.Name,
|
||||||
PeriodExamYear = p.PeriodExam == null ? "" : p.PeriodExam.Year.ToString(),
|
PeriodExamRound = p.PeriodExam == null ? "-" : p.PeriodExam.Round.ToString(),
|
||||||
|
PeriodExamYear = p.PeriodExam == null ? "-" : (p.PeriodExam.Year + 543).ToString(),
|
||||||
|
|
||||||
FullName = $"{p.PrefixName}{p.FirstName} {p.LastName}",
|
FullName = $"{p.PrefixName}{p.FirstName} {p.LastName}",
|
||||||
Religion = p.ReligionName,
|
Religion = p.ReligionName == null ? "-" : p.ReligionName,
|
||||||
Nationality = p.Nationality,
|
Nationality = p.Nationality == null ? "-" : p.Nationality,
|
||||||
DateOfBirth = p.DateOfBirth == null ? "" : p.DateOfBirth.Value.ToThaiShortDate2(),
|
DateOfBirth = p.DateOfBirth == null ? "-" : p.DateOfBirth.Value.ToThaiFullDate2(),
|
||||||
Age = p.DateOfBirth == null ? "" : p.DateOfBirth.Value.CalculateAgeStrV2(0, 0),
|
Age = p.DateOfBirth == null ? "-" : p.DateOfBirth.Value.CalculateAgeStrV2(0, 0),
|
||||||
CitizenId = p.CitizenId,
|
CitizenId = p.CitizenId == null ? "-" : p.CitizenId,
|
||||||
|
|
||||||
EducationLevelExamName = p.Educations.FirstOrDefault() == null ? "" : p.Educations.FirstOrDefault().EducationLevelExamName,
|
EducationLevelExamName = p.Educations.FirstOrDefault() == null ? "-" : p.Educations.FirstOrDefault().EducationLevelExamName,
|
||||||
EducationName = p.Educations.FirstOrDefault() == null ? "" : p.Educations.FirstOrDefault().EducationName,
|
EducationName = p.Educations.FirstOrDefault() == null ? null : (p.Educations.FirstOrDefault().EducationLevelExamName == "ปริญญาตรี" || p.Educations.FirstOrDefault().EducationLevelExamName == "ปริญญาโท" || p.Educations.FirstOrDefault().EducationLevelExamName == "ปริญญาเอก" ? null : p.Educations.FirstOrDefault().EducationName),
|
||||||
EducationMajor = p.Educations.FirstOrDefault() == null ? "" : p.Educations.FirstOrDefault().EducationMajor,
|
EducationMajor = p.Educations.FirstOrDefault() == null ? "-" : p.Educations.FirstOrDefault().EducationMajor,
|
||||||
EducationLocation = p.Educations.FirstOrDefault() == null ? "" : p.Educations.FirstOrDefault().EducationLocation,
|
EducationLocation = p.Educations.FirstOrDefault() == null ? "-" : p.Educations.FirstOrDefault().EducationLocation,
|
||||||
EducationEndDate = p.Educations.FirstOrDefault() == null || p.Educations.FirstOrDefault().EducationEndDate == null ? "" : p.Educations.FirstOrDefault().EducationEndDate.Value.ToThaiShortDate2(),
|
EducationEndDate = p.Educations.FirstOrDefault() == null || p.Educations.FirstOrDefault().EducationEndDate == null ? "-" : p.Educations.FirstOrDefault().EducationEndDate.Value.ToThaiFullDate2(),
|
||||||
EducationScores = p.Educations.FirstOrDefault() == null ? "" : p.Educations.FirstOrDefault().EducationScores,
|
EducationScores = p.Educations.FirstOrDefault() == null ? "-" : p.Educations.FirstOrDefault().EducationScores,
|
||||||
EducationType = p.Educations.FirstOrDefault() == null ? "" : p.Educations.FirstOrDefault().EducationType,
|
EducationType = p.Educations.FirstOrDefault() == null ? "-" : p.Educations.FirstOrDefault().EducationType,
|
||||||
EducationLevelHighName = p.Educations.FirstOrDefault() == null ? "" : p.Educations.FirstOrDefault().EducationLevelHighName,
|
EducationLevelHighName = p.Educations.FirstOrDefault() == null ? "-" : p.Educations.FirstOrDefault().EducationLevelHighName,
|
||||||
|
|
||||||
OccupationPositionType = p.OccupationPositionType == "other" ? "ผู้ปฏิบัติงานอื่นในกรุงเทพมหานคร" : (p.OccupationPositionType == "temp" ? "ลูกจ้างชั่วคราว" : (p.OccupationPositionType == "perm" ? "ลูกจ้างประจำ" : "-")),
|
OccupationPositionType = p.OccupationPositionType == "other" ? "ผู้ปฏิบัติงานอื่นในกรุงเทพมหานคร" : (p.OccupationPositionType == "temp" ? "ลูกจ้างชั่วคราว" : (p.OccupationPositionType == "prem" ? "ลูกจ้างประจำ" : "-")),
|
||||||
OccupationPosition = p.OccupationPosition,
|
OccupationPosition = p.OccupationPosition == null ? "-" : p.OccupationPosition,
|
||||||
OccupationSalary = p.OccupationSalary,
|
OccupationSalary = p.OccupationSalary == null ? "-" : p.OccupationSalary.ToString(),
|
||||||
OccupationGroup = p.OccupationGroup,
|
OccupationGroup = p.OccupationGroup == null ? "-" : p.OccupationGroup,
|
||||||
OccupationPile = p.OccupationPile,
|
OccupationPile = p.OccupationPile == null ? "-" : p.OccupationPile,
|
||||||
OccupationOrg = p.OccupationOrg,
|
OccupationOrg = p.OccupationOrg == null ? "-" : p.OccupationOrg,
|
||||||
OccupationTelephone = p.OccupationTelephone,
|
OccupationTelephone = p.OccupationTelephone == null ? "-" : p.OccupationTelephone,
|
||||||
|
|
||||||
Careers = p.Careers.Select(y => new
|
CareersTotal = sb.ToString(),
|
||||||
{
|
// Careers = p.Careers.Select(y => new
|
||||||
Position = y.Position,
|
// {
|
||||||
Type = y.Type,
|
// Position = y.Position,
|
||||||
DurationStart = y.DurationStart.ToThaiShortDate2(),
|
// Type = y.Type,
|
||||||
DurationEnd = y.DurationEnd.ToThaiShortDate2(),
|
// DurationStart = y.DurationStart.ToThaiShortDate2(),
|
||||||
RangeDate = y.RangeDate,
|
// DurationEnd = y.DurationEnd.ToThaiShortDate2(),
|
||||||
}).ToList(),
|
// RangeDate = y.RangeDate,
|
||||||
|
// }).ToList(),
|
||||||
|
|
||||||
RegistAddress = p.RegistAddress,
|
RegistAddress = p.RegistAddress == null ? "-" : p.RegistAddress,
|
||||||
RegistProvinceName = p.RegistProvinceName,
|
RegistProvinceName = p.RegistProvinceName == null ? "-" : p.RegistProvinceName,
|
||||||
RegistDistrictName = p.RegistDistrictName,
|
RegistDistrictName = p.RegistDistrictName == null ? "-" : p.RegistDistrictName,
|
||||||
RegistSubDistrictName = p.RegistSubDistrictName,
|
RegistSubDistrictName = p.RegistSubDistrictName == null ? "-" : p.RegistSubDistrictName,
|
||||||
RegistZipCode = p.RegistZipCode,
|
RegistZipCode = p.RegistZipCode == null ? "-" : p.RegistZipCode,
|
||||||
CurrentAddress = p.CurrentAddress,
|
CurrentAddress = p.CurrentAddress == null ? (p.RegistAddress == null ? "-" : p.RegistAddress) : p.CurrentAddress,
|
||||||
CurrentProvinceName = p.CurrentProvinceName,
|
CurrentProvinceName = p.CurrentProvinceName == null ? (p.RegistProvinceName == null ? "-" : p.RegistProvinceName) : p.CurrentProvinceName,
|
||||||
CurrentSubDistrictName = p.CurrentSubDistrictName,
|
CurrentDistrictName = p.CurrentDistrictName == null ? (p.RegistDistrictName == null ? "-" : p.RegistDistrictName) : p.CurrentDistrictName,
|
||||||
CurrentDistrictName = p.CurrentDistrictName,
|
CurrentSubDistrictName = p.CurrentSubDistrictName == null ? (p.RegistSubDistrictName == null ? "-" : p.RegistSubDistrictName) : p.CurrentSubDistrictName,
|
||||||
CurrentZipCode = p.CurrentZipCode,
|
CurrentZipCode = p.CurrentZipCode == null ? (p.RegistZipCode == null ? "-" : p.RegistZipCode) : p.CurrentZipCode,
|
||||||
Telephone = p.Telephone,
|
Telephone = p.Telephone == null ? "-" : p.Telephone,
|
||||||
Email = p.Email,
|
Email = p.Email == null ? "-" : p.Email,
|
||||||
|
|
||||||
ContactFullName = $"{p.ContactPrefixName}{p.ContactFirstname} {p.ContactLastname}",
|
ContactFullName = $"{p.ContactPrefixName}{p.ContactFirstname} {p.ContactLastname}",
|
||||||
ContactRelations = p.ContactRelations,
|
ContactRelations = p.ContactRelations == null ? "-" : p.ContactRelations,
|
||||||
ContactTel = p.ContactTel,
|
ContactTel = p.ContactTel == null ? "-" : p.ContactTel,
|
||||||
|
|
||||||
RegisterDate = p.RegisterDate == null ? "" : p.RegisterDate.Value.ToThaiFullDate(),
|
RegisterDate = p.RegisterDate == null ? "-" : p.RegisterDate.Value.ToThaiFullDate(),
|
||||||
})
|
})
|
||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
|
|
||||||
if (data == null)
|
if (data == null)
|
||||||
throw new Exception(GlobalMessages.CandidateNotFound);
|
throw new Exception(GlobalMessages.CandidateNotFound);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
public async Task<dynamic> GetExamCareerCandidateAsync(Guid id)
|
public async Task<dynamic> GetExamCareerCandidateAsync(Guid id)
|
||||||
{
|
{
|
||||||
var data = await _dbExamContext.Set<Career>().AsQueryable()
|
var items = await _dbExamContext.Set<Career>().AsQueryable()
|
||||||
.Where(x => x.Candidate != null)
|
.Where(x => x.Candidate != null)
|
||||||
.Where(x => x.Candidate.Id == id)
|
.Where(x => x.Candidate.Id == id)
|
||||||
|
.OrderBy(x => x.DurationStart)
|
||||||
.Select(p => new
|
.Select(p => new
|
||||||
{
|
{
|
||||||
Position = p.Position,
|
Position = p.Position,
|
||||||
|
|
@ -133,6 +179,22 @@ namespace BMA.EHR.Application.Repositories.Reports
|
||||||
RangeDate = p.RangeDate,
|
RangeDate = p.RangeDate,
|
||||||
})
|
})
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
|
int retVal = 1;
|
||||||
|
var data = new List<dynamic>();
|
||||||
|
foreach (var item in items)
|
||||||
|
{
|
||||||
|
var _data = new
|
||||||
|
{
|
||||||
|
Position = item.Position,
|
||||||
|
Type = item.Type,
|
||||||
|
DurationStart = item.DurationStart,
|
||||||
|
DurationEnd = item.DurationEnd,
|
||||||
|
RangeDate = item.RangeDate,
|
||||||
|
Index = retVal,
|
||||||
|
};
|
||||||
|
data.Add(_data);
|
||||||
|
retVal++;
|
||||||
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -282,6 +282,11 @@ namespace BMA.EHR.Application.Repositories.Reports
|
||||||
ChairmanName = string.IsNullOrEmpty(evaluate_assign.data.chairman.name) ? string.Empty : evaluate_assign.data.chairman.name,
|
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,
|
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(),
|
ChairmanDate = string.IsNullOrEmpty(evaluate_assign.data.evaluate.chairman_dated.ToString()) ? "วันที่ เดือน พ.ศ." : evaluate_assign.data.evaluate.chairman_dated.ToThaiFullDate().ToString().ToThaiNumber(),
|
||||||
|
Name = evaluate_assign.data.experimentee.name,
|
||||||
|
RoundNo = evaluate_assign.data.assign.round_no.ToString().ToThaiNumber(),
|
||||||
|
DateStart = string.IsNullOrEmpty(evaluate_assign.data.assign.date_start.ToString()) ? "วันที่ เดือน พ.ศ." : DateTime.Parse(evaluate_assign.data.assign.date_start).ToThaiFullDate().ToString().ToThaiNumber(),
|
||||||
|
DateFinish = string.IsNullOrEmpty(evaluate_assign.data.assign.date_finish.ToString()) ? "วันที่ เดือน พ.ศ." : DateTime.Parse(evaluate_assign.data.assign.date_finish).ToThaiFullDate().ToString().ToThaiNumber(),
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -4,335 +4,395 @@ using System.Text;
|
||||||
|
|
||||||
namespace BMA.EHR.Domain.Extensions
|
namespace BMA.EHR.Domain.Extensions
|
||||||
{
|
{
|
||||||
public static class DateTimeExtension
|
public static class DateTimeExtension
|
||||||
{
|
{
|
||||||
private static CultureInfo _culture = new CultureInfo("th-TH");
|
private static CultureInfo _culture = new CultureInfo("th-TH");
|
||||||
|
|
||||||
#region " Methods "
|
#region " Methods "
|
||||||
|
|
||||||
#region " Public "
|
#region " Public "
|
||||||
|
|
||||||
public static double DiffYear(this DateTime currentDate)
|
public static double DiffYear(this DateTime currentDate)
|
||||||
{
|
{
|
||||||
return (DateTime.Today - currentDate).TotalDays / 365.2425;
|
return (DateTime.Today - currentDate).TotalDays / 365.2425;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int ToUnixTimeStamp(this DateTime value)
|
public static int ToUnixTimeStamp(this DateTime value)
|
||||||
{
|
{
|
||||||
return (int)Math.Truncate((value.ToUniversalTime().Subtract(new DateTime(1970, 1, 1))).TotalSeconds);
|
return (int)Math.Truncate((value.ToUniversalTime().Subtract(new DateTime(1970, 1, 1))).TotalSeconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ToThaiFullDate(this DateTime value)
|
public static string ToThaiFullDate(this DateTime value)
|
||||||
{
|
{
|
||||||
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
||||||
return $"วันที่ {value.Day} เดือน {value.ToString("MMMM", _culture.DateTimeFormat)} พ.ศ. {yy}";
|
return $"วันที่ {value.Day} เดือน {value.ToString("MMMM", _culture.DateTimeFormat)} พ.ศ. {yy}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ToThaiFullDate2(this DateTime value)
|
public static string ToThaiFullDate2(this DateTime value)
|
||||||
{
|
{
|
||||||
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
||||||
return $"{value.Day} {value.ToString("MMMM", _culture.DateTimeFormat)} พ.ศ. {yy}";
|
return $"{value.Day} {value.ToString("MMMM", _culture.DateTimeFormat)} พ.ศ. {yy}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ToThaiFullDate3(this DateTime value)
|
public static string ToThaiFullDate3(this DateTime value)
|
||||||
{
|
{
|
||||||
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
||||||
return $"{value.Day} {value.ToString("MMMM", _culture.DateTimeFormat)} {yy}";
|
return $"{value.Day} {value.ToString("MMMM", _culture.DateTimeFormat)} {yy}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ToThaiShortDateTime(this DateTime value)
|
public static string ToThaiShortDateTime(this DateTime value)
|
||||||
{
|
{
|
||||||
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
||||||
return $"{value.Day} {value.ToString("MMM", _culture.DateTimeFormat)} {yy} {value.ToString("HH:mm:ss")}";
|
return $"{value.Day} {value.ToString("MMM", _culture.DateTimeFormat)} {yy} {value.ToString("HH:mm:ss")}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ToThaiShortDate(this DateTime value)
|
public static string ToThaiShortDate(this DateTime value)
|
||||||
{
|
{
|
||||||
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
||||||
return $"{value.Day} {value.ToString("MMM", _culture.DateTimeFormat)} {yy}";
|
return $"{value.Day} {value.ToString("MMM", _culture.DateTimeFormat)} {yy}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ToThaiShortDate2(this DateTime value)
|
public static string ToThaiShortDate2(this DateTime value)
|
||||||
{
|
{
|
||||||
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
||||||
return $"{value.Day} {value.ToString("MMM", _culture.DateTimeFormat)} {yy.ToString().Right(2)}";
|
return $"{value.Day} {value.ToString("MMM", _culture.DateTimeFormat)} {yy.ToString().Right(2)}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ToThaiDate(this DateTime value)
|
public static string ToThaiDate(this DateTime value)
|
||||||
{
|
{
|
||||||
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
||||||
return $"{value.Day}/{value.Month}/{yy}";
|
return $"{value.Day}/{value.Month}/{yy}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ToCeDate(this DateTime value)
|
public static string ToCeDate(this DateTime value)
|
||||||
{
|
{
|
||||||
var yy = value.Year >= 2400 ? value.Year - 543 : value.Year;
|
var yy = value.Year >= 2400 ? value.Year - 543 : value.Year;
|
||||||
return $"{value.Day}/{value.Month}/{yy}";
|
return $"{value.Day}/{value.Month}/{yy}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ToThaiDateFullDigit(this DateTime value)
|
public static string ToThaiDateFullDigit(this DateTime value)
|
||||||
{
|
{
|
||||||
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
var yy = value.Year < 2400 ? value.Year + 543 : value.Year;
|
||||||
return $"{value.Day.ToString("00")}/{value.Month.ToString("00")}/{yy.ToString("00")}";
|
return $"{value.Day.ToString("00")}/{value.Month.ToString("00")}/{yy.ToString("00")}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetDay(this DateTime value)
|
public static string GetDay(this DateTime value)
|
||||||
{
|
{
|
||||||
return value.Day.ToString();
|
return value.Day.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetMonth(this DateTime value)
|
public static string GetMonth(this DateTime value)
|
||||||
{
|
{
|
||||||
return value.ToString("MMMM", _culture.DateTimeFormat);
|
return value.ToString("MMMM", _culture.DateTimeFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetYear(this DateTime value)
|
public static string GetYear(this DateTime value)
|
||||||
{
|
{
|
||||||
return value.Year.ToThaiYear().ToString();
|
return value.Year.ToThaiYear().ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string CalculateAgeStrV2(this DateTime date, int plusYear = 0, int subtractYear = 0)
|
public static string CalculateAgeStrV2(this DateTime date, int plusYear = 0, int subtractYear = 0)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var currentDate = DateTime.Now;
|
var currentDate = DateTime.Now;
|
||||||
var age = currentDate - date;
|
var age = currentDate - date;
|
||||||
|
|
||||||
|
|
||||||
if (date > currentDate)
|
if (date > currentDate)
|
||||||
{
|
{
|
||||||
throw new ArgumentException("วันเกิดต้องไม่มากกว่าวันที่ปัจจุบัน");
|
throw new ArgumentException("วันเกิดต้องไม่มากกว่าวันที่ปัจจุบัน");
|
||||||
}
|
}
|
||||||
|
|
||||||
int years = currentDate.Year - date.Year;
|
int years = currentDate.Year - date.Year;
|
||||||
int months = 0;
|
int months = 0;
|
||||||
int days = 0;
|
int days = 0;
|
||||||
|
|
||||||
if (currentDate.Month < date.Month ||
|
if (currentDate.Month < date.Month ||
|
||||||
(currentDate.Month == date.Month && currentDate.Day < date.Day))
|
(currentDate.Month == date.Month && currentDate.Day < date.Day))
|
||||||
{
|
{
|
||||||
years--;
|
years--;
|
||||||
months = 12 - date.Month + currentDate.Month;
|
months = 12 - date.Month + currentDate.Month;
|
||||||
|
|
||||||
if (currentDate.Day < date.Day)
|
if (currentDate.Day < date.Day)
|
||||||
{
|
{
|
||||||
months--;
|
months--;
|
||||||
int lastMonthDays = DateTime.DaysInMonth(currentDate.Year, currentDate.Month - 1);
|
int lastMonthDays = DateTime.DaysInMonth(currentDate.Year, currentDate.Month - 1);
|
||||||
days = lastMonthDays - date.Day + currentDate.Day;
|
days = lastMonthDays - date.Day + currentDate.Day;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
days = currentDate.Day - date.Day;
|
days = currentDate.Day - date.Day;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
months = currentDate.Month - date.Month;
|
months = currentDate.Month - date.Month;
|
||||||
|
|
||||||
if (currentDate.Day < date.Day)
|
if (currentDate.Day < date.Day)
|
||||||
{
|
{
|
||||||
months--;
|
months--;
|
||||||
int lastMonthDays = DateTime.DaysInMonth(currentDate.Year, currentDate.Month - 1);
|
int lastMonthDays = DateTime.DaysInMonth(currentDate.Year, currentDate.Month - 1);
|
||||||
days = lastMonthDays - date.Day + currentDate.Day;
|
days = lastMonthDays - date.Day + currentDate.Day;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
days = currentDate.Day - date.Day;
|
days = currentDate.Day - date.Day;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//return new Age(years, months, days);
|
//return new Age(years, months, days);
|
||||||
|
|
||||||
|
|
||||||
//// แปลงเป็นอายุในรูปแบบวันที่
|
//// แปลงเป็นอายุในรูปแบบวันที่
|
||||||
//int years = (int)(age.Days / 365.25) + plusYear - subtractYear;
|
//int years = (int)(age.Days / 365.25) + plusYear - subtractYear;
|
||||||
//int months = (int)((age.Days % 365.25) / 30.436875);
|
//int months = (int)((age.Days % 365.25) / 30.436875);
|
||||||
//int days = (int)((age.Days % 365.25) % 30.436875);
|
//int days = (int)((age.Days % 365.25) % 30.436875);
|
||||||
|
|
||||||
return $"{years} ปี {months} เดือน {days} วัน";
|
return $"{years} ปี {months} เดือน {days} วัน";
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int CalculateAge(this DateTime date, int plusYear = 0, int subtractYear = 0)
|
public static int CalculateAge(this DateTime date, int plusYear = 0, int subtractYear = 0)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var currentDate = DateTime.Now;
|
var currentDate = DateTime.Now;
|
||||||
var age = currentDate - date;
|
var age = currentDate - date;
|
||||||
|
|
||||||
// แปลงเป็นอายุในรูปแบบวันที่
|
// แปลงเป็นอายุในรูปแบบวันที่
|
||||||
int years = (int)(age.Days / 365.25) + plusYear - subtractYear;
|
int years = (int)(age.Days / 365.25) + plusYear - subtractYear;
|
||||||
|
|
||||||
return years;
|
return years;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int CalculateGovAge(this DateTime appointDate, int plusYear = 0, int subtractYear = 0)
|
public static int CalculateGovAge(this DateTime appointDate, int plusYear = 0, int subtractYear = 0)
|
||||||
{
|
{
|
||||||
if (DateTime.Now.Month - appointDate.Month >= 6)
|
if (DateTime.Now.Month - appointDate.Month >= 6)
|
||||||
return (DateTime.Now.Year - appointDate.Year) + 1 + plusYear - subtractYear;
|
return (DateTime.Now.Year - appointDate.Year) + 1 + plusYear - subtractYear;
|
||||||
else
|
else
|
||||||
return (DateTime.Now.Year - appointDate.Year) + plusYear - subtractYear;
|
return (DateTime.Now.Year - appointDate.Year) + plusYear - subtractYear;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static string CalculateGovAgeStr(this DateTime appointDate, int plusYear = 0, int subtractYear = 0)
|
public static string CalculateGovAgeStr(this DateTime appointDate, int plusYear = 0, int subtractYear = 0)
|
||||||
{
|
{
|
||||||
var d2 = DateTime.Now;
|
var d2 = DateTime.Now;
|
||||||
TimeSpan sp = d2.Subtract(appointDate);
|
TimeSpan sp = d2.Subtract(appointDate);
|
||||||
var alldays = sp.Days + ((plusYear - subtractYear) * 365);
|
var alldays = sp.Days + ((plusYear - subtractYear) * 365);
|
||||||
|
|
||||||
int yy = alldays / 365;
|
int yy = alldays / 365;
|
||||||
int mm = (alldays - (yy * 365)) / 30;
|
int mm = (alldays - (yy * 365)) / 30;
|
||||||
int dd = (alldays - (yy * 365) - (mm * 30));
|
int dd = (alldays - (yy * 365) - (mm * 30));
|
||||||
|
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
sb.Clear();
|
sb.Clear();
|
||||||
sb.Append(yy == 0 ? "" : $"{yy} ปี ");
|
sb.Append(yy == 0 ? "" : $"{yy} ปี ");
|
||||||
sb.Append(mm == 0 ? "" : $"{mm} เดือน ");
|
sb.Append(mm == 0 ? "" : $"{mm} เดือน ");
|
||||||
sb.Append(dd == 0 ? "" : $"{dd} วัน ");
|
sb.Append(dd == 0 ? "" : $"{dd} วัน ");
|
||||||
|
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string CalculateGovAgeInYear(this DateTime appointDate, int plusYear = 0, int subtractYear = 0)
|
public static string CalculateGovAgeInYear(this DateTime appointDate, int plusYear = 0, int subtractYear = 0)
|
||||||
{
|
{
|
||||||
var d2 = DateTime.Now;
|
var d2 = DateTime.Now;
|
||||||
TimeSpan sp = d2.Subtract(appointDate);
|
TimeSpan sp = d2.Subtract(appointDate);
|
||||||
var alldays = sp.Days + ((plusYear - subtractYear) * 365);
|
var alldays = sp.Days + ((plusYear - subtractYear) * 365);
|
||||||
|
|
||||||
int yy = alldays / 365;
|
int yy = alldays / 365;
|
||||||
|
|
||||||
return yy.ToString();
|
return yy.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int GetDifferenceInYears(this DateTime startDate, DateTime endDate)
|
public static int GetDifferenceInYears(this DateTime startDate, DateTime endDate)
|
||||||
{
|
{
|
||||||
int finalResult = 0;
|
int finalResult = 0;
|
||||||
|
|
||||||
const int daysInYear = 365;
|
const int daysInYear = 365;
|
||||||
|
|
||||||
//DateTime endDate = DateTime.Now;
|
//DateTime endDate = DateTime.Now;
|
||||||
|
|
||||||
TimeSpan timeSpan = endDate - startDate;
|
TimeSpan timeSpan = endDate - startDate;
|
||||||
|
|
||||||
if (timeSpan.TotalDays > 365)
|
if (timeSpan.TotalDays > 365)
|
||||||
{
|
{
|
||||||
finalResult = (int)Math.Round((timeSpan.TotalDays / daysInYear), MidpointRounding.ToEven);
|
finalResult = (int)Math.Round((timeSpan.TotalDays / daysInYear), MidpointRounding.ToEven);
|
||||||
}
|
}
|
||||||
|
|
||||||
return finalResult;
|
return finalResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DateTime CalculateRetireDate(this DateTime birthDate)
|
public static DateTime CalculateRetireDate(this DateTime birthDate)
|
||||||
{
|
{
|
||||||
var dd = birthDate.Day;
|
var dd = birthDate.Day;
|
||||||
var mm = birthDate.Month;
|
var mm = birthDate.Month;
|
||||||
var yy = birthDate.Year;
|
var yy = birthDate.Year;
|
||||||
|
|
||||||
var g1 = true;
|
var g1 = true;
|
||||||
switch (mm)
|
switch (mm)
|
||||||
{
|
{
|
||||||
case 10: if (dd >= 2) g1 = false; break;
|
case 10: if (dd >= 2) g1 = false; break;
|
||||||
case 11:
|
case 11:
|
||||||
case 12: g1 = false; break;
|
case 12: g1 = false; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g1)
|
if (g1)
|
||||||
return new DateTime(yy + 60, 9, 30);
|
return new DateTime(yy + 60, 9, 30);
|
||||||
else
|
else
|
||||||
return new DateTime(yy + 61, 9, 30);
|
return new DateTime(yy + 61, 9, 30);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsBetween(this DateTime now, TimeSpan start, TimeSpan end)
|
public static bool IsBetween(this DateTime now, TimeSpan start, TimeSpan end)
|
||||||
{
|
{
|
||||||
var time = now.TimeOfDay;
|
var time = now.TimeOfDay;
|
||||||
// Scenario 1: If the start time and the end time are in the same day.
|
// Scenario 1: If the start time and the end time are in the same day.
|
||||||
if (start <= end)
|
if (start <= end)
|
||||||
return time >= start && time <= end;
|
return time >= start && time <= end;
|
||||||
// Scenario 2: The start time and end time is on different days.
|
// Scenario 2: The start time and end time is on different days.
|
||||||
return time >= start || time <= end;
|
return time >= start || time <= end;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string CalculateBetweenDate(this DateTime startDate, DateTime endDate)
|
public static string CalculateBetweenDate(this DateTime startDate, DateTime endDate)
|
||||||
{
|
{
|
||||||
// var d2 = DateTime.Now;
|
// var d2 = DateTime.Now;
|
||||||
TimeSpan sp = endDate.Subtract(startDate);
|
TimeSpan sp = endDate.Subtract(startDate);
|
||||||
var alldays = sp.Days;
|
var alldays = sp.Days;
|
||||||
|
|
||||||
int yy = alldays / 365;
|
int yy = alldays / 365;
|
||||||
int mm = (alldays - (yy * 365)) / 30;
|
int mm = (alldays - (yy * 365)) / 30;
|
||||||
int dd = (alldays - (yy * 365) - (mm * 30));
|
int dd = (alldays - (yy * 365) - (mm * 30));
|
||||||
|
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
sb.Clear();
|
sb.Clear();
|
||||||
sb.Append(yy == 0 ? "" : $"{yy} ปี ");
|
sb.Append(yy == 0 ? "" : $"{yy} ปี ");
|
||||||
sb.Append(mm == 0 ? "" : $"{mm} เดือน ");
|
sb.Append(mm == 0 ? "" : $"{mm} เดือน ");
|
||||||
sb.Append(dd == 0 ? "" : $"{dd} วัน ");
|
sb.Append(dd == 0 ? "" : $"{dd} วัน ");
|
||||||
|
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string CalculateBetweenDateV2(this DateTime startDate, DateTime endDate)
|
public static string CalculateBetweenDateV2(this DateTime startDate, DateTime endDate)
|
||||||
{
|
{
|
||||||
if (startDate == null || endDate == null)
|
if (startDate == null || endDate == null)
|
||||||
return "-";
|
return "-";
|
||||||
|
|
||||||
DateTime today = endDate;
|
DateTime today = endDate;
|
||||||
DateTime birthDate = Convert.ToDateTime(startDate).AddDays(-1);
|
DateTime birthDate = Convert.ToDateTime(startDate).AddDays(-1);
|
||||||
int years = new DateTime(endDate.Subtract(birthDate).Ticks).Year - 1;
|
int years = new DateTime(endDate.Subtract(birthDate).Ticks).Year - 1;
|
||||||
DateTime pastYearDate = birthDate.AddYears(years);
|
DateTime pastYearDate = birthDate.AddYears(years);
|
||||||
int months = 0;
|
int months = 0;
|
||||||
for (int i = 1; i <= 12; i++)
|
for (int i = 1; i <= 12; i++)
|
||||||
{
|
{
|
||||||
if (pastYearDate.AddMonths(i) == today)
|
if (pastYearDate.AddMonths(i) == today)
|
||||||
{
|
{
|
||||||
months = i;
|
months = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (pastYearDate.AddMonths(i) >= today)
|
else if (pastYearDate.AddMonths(i) >= today)
|
||||||
{
|
{
|
||||||
months = i - 1;
|
months = i - 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int days = today.Subtract(pastYearDate.AddMonths(months)).Days;
|
int days = today.Subtract(pastYearDate.AddMonths(months)).Days;
|
||||||
if (today.Day < pastYearDate.Day)
|
if (today.Day < pastYearDate.Day)
|
||||||
{
|
{
|
||||||
if (System.DateTime.DaysInMonth(pastYearDate.Year, pastYearDate.Month) > System.DateTime.DaysInMonth(pastYearDate.AddMonths(months).Year, pastYearDate.AddMonths(months).Month))
|
if (System.DateTime.DaysInMonth(pastYearDate.Year, pastYearDate.Month) > System.DateTime.DaysInMonth(pastYearDate.AddMonths(months).Year, pastYearDate.AddMonths(months).Month))
|
||||||
{
|
{
|
||||||
days += 1;
|
days += 1;
|
||||||
}
|
}
|
||||||
if (System.DateTime.DaysInMonth(pastYearDate.Year, pastYearDate.Month) < System.DateTime.DaysInMonth(pastYearDate.AddMonths(months).Year, pastYearDate.AddMonths(months).Month))
|
if (System.DateTime.DaysInMonth(pastYearDate.Year, pastYearDate.Month) < System.DateTime.DaysInMonth(pastYearDate.AddMonths(months).Year, pastYearDate.AddMonths(months).Month))
|
||||||
{
|
{
|
||||||
days -= 1;
|
days -= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// int Hours = Today.Subtract(PastYearDate).Hours;
|
// int Hours = Today.Subtract(PastYearDate).Hours;
|
||||||
// int Minutes = Today.Subtract(PastYearDate).Minutes;
|
// int Minutes = Today.Subtract(PastYearDate).Minutes;
|
||||||
// int Seconds = Today.Subtract(PastYearDate).Seconds;
|
// int Seconds = Today.Subtract(PastYearDate).Seconds;
|
||||||
Console.WriteLine(today);
|
Console.WriteLine(today);
|
||||||
Console.WriteLine(pastYearDate);
|
Console.WriteLine(pastYearDate);
|
||||||
Console.WriteLine(months);
|
Console.WriteLine(months);
|
||||||
Console.WriteLine(pastYearDate.AddMonths(months));
|
Console.WriteLine(pastYearDate.AddMonths(months));
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
sb.Clear();
|
sb.Clear();
|
||||||
sb.Append(years == 0 ? "" : $"{years} ปี ");
|
sb.Append(years == 0 ? "" : $"{years} ปี ");
|
||||||
sb.Append(months == 0 ? "" : $"{months} เดือน ");
|
sb.Append(months == 0 ? "" : $"{months} เดือน ");
|
||||||
sb.Append(days == 0 ? "" : $"{days} วัน ");
|
sb.Append(days == 0 ? "" : $"{days} วัน ");
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
|
public static CalculateBetweenDateV2ValueObj CalculateBetweenDateV2Value(this DateTime startDate, DateTime endDate)
|
||||||
|
{
|
||||||
|
// if (startDate == null || endDate == null)
|
||||||
|
// return null;
|
||||||
|
DateTime today = endDate.AddDays(1);
|
||||||
|
DateTime birthDate = startDate;
|
||||||
|
int years = new DateTime(endDate.Subtract(birthDate).Ticks).Year - 1;
|
||||||
|
DateTime pastYearDate = birthDate.AddYears(years);
|
||||||
|
int months = 0;
|
||||||
|
for (int i = 1; i <= 12; i++)
|
||||||
|
{
|
||||||
|
if (pastYearDate.AddMonths(i) == today)
|
||||||
|
{
|
||||||
|
months = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (pastYearDate.AddMonths(i) >= today)
|
||||||
|
{
|
||||||
|
months = i - 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int days = today.Subtract(pastYearDate.AddMonths(months)).Days;
|
||||||
|
if (today.Day < pastYearDate.Day)
|
||||||
|
{
|
||||||
|
if (System.DateTime.DaysInMonth(pastYearDate.Year, pastYearDate.Month) > System.DateTime.DaysInMonth(pastYearDate.AddMonths(months).Year, pastYearDate.AddMonths(months).Month))
|
||||||
|
{
|
||||||
|
days += 1;
|
||||||
|
}
|
||||||
|
if (System.DateTime.DaysInMonth(pastYearDate.Year, pastYearDate.Month) < System.DateTime.DaysInMonth(pastYearDate.AddMonths(months).Year, pastYearDate.AddMonths(months).Month))
|
||||||
|
{
|
||||||
|
days -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (days >= 30)
|
||||||
|
{
|
||||||
|
months = months + 1;
|
||||||
|
days = 0;
|
||||||
|
if (months >= 12)
|
||||||
|
{
|
||||||
|
years = years + 1;
|
||||||
|
months = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
var sb = new StringBuilder();
|
||||||
|
sb.Clear();
|
||||||
|
sb.Append(years == 0 ? "" : $"{years} ปี ");
|
||||||
|
sb.Append(months == 0 ? "" : $"{months} เดือน ");
|
||||||
|
sb.Append(days == 0 ? "" : $"{days} วัน ");
|
||||||
|
return new CalculateBetweenDateV2ValueObj { years = years, months = months, days = days };
|
||||||
|
}
|
||||||
|
public class CalculateBetweenDateV2ValueObj
|
||||||
|
{
|
||||||
|
public int years { get; set; }
|
||||||
|
|
||||||
#endregion
|
public int months { get; set; }
|
||||||
}
|
|
||||||
|
public int days { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -22,15 +22,15 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
private readonly CandidateReportRepository _service;
|
private readonly CandidateReportRepository _service;
|
||||||
private readonly IWebHostEnvironment _hostingEnvironment;
|
private readonly IWebHostEnvironment _hostingEnvironment;
|
||||||
private readonly IConfiguration _configuration;
|
private readonly IConfiguration _configuration;
|
||||||
private readonly MinIOService _minIOService;
|
private readonly MinIOExamService _minIOExamService;
|
||||||
|
|
||||||
public CandidateReportController(CandidateReportRepository service, IWebHostEnvironment hostingEnvironment,
|
public CandidateReportController(CandidateReportRepository service, IWebHostEnvironment hostingEnvironment,
|
||||||
MinIOService minIOService, IConfiguration configuration)
|
MinIOExamService minIOExamService, IConfiguration configuration)
|
||||||
{
|
{
|
||||||
_service = service;
|
_service = service;
|
||||||
_hostingEnvironment = hostingEnvironment;
|
_hostingEnvironment = hostingEnvironment;
|
||||||
_configuration = configuration;
|
_configuration = configuration;
|
||||||
_minIOService = minIOService;
|
_minIOExamService = minIOExamService;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region ใบสมัคร
|
#region ใบสมัคร
|
||||||
|
|
@ -44,6 +44,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
||||||
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
||||||
[HttpGet("{exportType}/{Id}")]
|
[HttpGet("{exportType}/{Id}")]
|
||||||
|
[AllowAnonymous]
|
||||||
public async Task<ActionResult<ResponseObject>> GetExamCandidate([FromRoute] Guid Id, string exportType = "pdf")
|
public async Task<ActionResult<ResponseObject>> GetExamCandidate([FromRoute] Guid Id, string exportType = "pdf")
|
||||||
{
|
{
|
||||||
var candidate = await _service.GetExamCandidateAsync(Id);
|
var candidate = await _service.GetExamCandidateAsync(Id);
|
||||||
|
|
@ -71,14 +72,15 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
var tblData = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["tblData"];
|
var tblData = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["tblData"];
|
||||||
tblData.DataSource = careers;
|
tblData.DataSource = careers;
|
||||||
|
|
||||||
|
Console.WriteLine("000000");
|
||||||
if (avatar != Guid.Parse("00000000-0000-0000-0000-000000000000"))
|
if (avatar != Guid.Parse("00000000-0000-0000-0000-000000000000"))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Get avatar Image
|
// Get avatar Image
|
||||||
var picContent = (await _minIOService.DownloadFileAsync(avatar)).FileContent;
|
var picContent = await _minIOExamService.DownloadFileAsync(avatar);
|
||||||
var pictureBox = (Telerik.Reporting.PictureBox)report.Items["detailSection1"].Items["picAvatar"];
|
var pictureBox = (Telerik.Reporting.PictureBox)report.Items["detailSection1"].Items["picAvatar"];
|
||||||
pictureBox.Value = Image.FromStream(new MemoryStream(picContent));
|
pictureBox.Value = Image.FromStream(new MemoryStream(picContent.FileContent));
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -228,7 +228,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 14-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้ดูแล และ ผู้บังคับบัญชา
|
#region 14,15-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้ดูแล และ ผู้บังคับบัญชา
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 14-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้ดูแล และ ผู้บังคับบัญชา
|
/// 14-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้ดูแล และ ผู้บังคับบัญชา
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -500,166 +500,6 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 15-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา (ยกเลิกใช้งาน)
|
|
||||||
///// <summary>
|
|
||||||
///// 15-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา
|
|
||||||
///// </summary>
|
|
||||||
///// <param name="id">id </param>
|
|
||||||
///// <param name="exportType">pdf, docx หรือ xlsx</param>
|
|
||||||
///// <returns></returns>
|
|
||||||
///// <response code="200">เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ</response>
|
|
||||||
///// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
|
||||||
///// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
|
||||||
//[HttpGet("15/{exportType}/{id}")]
|
|
||||||
//public async Task<ActionResult<ResponseObject>> GetProbation15ConvertReportAsync(Guid id, string exportType = "pdf")
|
|
||||||
//{
|
|
||||||
// try
|
|
||||||
// {
|
|
||||||
// string authorizationHeader = Request.Headers["Authorization"];
|
|
||||||
// string token = string.Empty;
|
|
||||||
|
|
||||||
// if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer "))
|
|
||||||
// {
|
|
||||||
// token = authorizationHeader.Substring("Bearer ".Length).Trim();
|
|
||||||
// var evaluateRecord = await _repository.GetEvaluateRecordAsync(id, token);
|
|
||||||
|
|
||||||
// if (evaluateRecord != null)
|
|
||||||
// {
|
|
||||||
// var mimeType = "";
|
|
||||||
// switch (exportType.Trim().ToLower())
|
|
||||||
// {
|
|
||||||
// case "pdf": mimeType = "application/pdf"; break;
|
|
||||||
// case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break;
|
|
||||||
// case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"15-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-1.trdp");
|
|
||||||
// var rptFile2 = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"15-แบบบันทึกผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา-2.trdp");
|
|
||||||
|
|
||||||
// ReportPackager reportPacker = new ReportPackager();
|
|
||||||
// Telerik.Reporting.Report? report = null;
|
|
||||||
// Telerik.Reporting.Report? report2 = null;
|
|
||||||
|
|
||||||
// using (var sourceStream = System.IO.File.OpenRead(rptFile))
|
|
||||||
// using (var sourceStream2 = System.IO.File.OpenRead(rptFile2))
|
|
||||||
// {
|
|
||||||
// report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream);
|
|
||||||
// report2 = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream2);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// report.ReportParameters["Name"].Value = evaluateRecord.GetType().GetProperty("Name").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["Position"].Value = evaluateRecord.GetType().GetProperty("Position").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["ExperimenteeName"].Value = evaluateRecord.GetType().GetProperty("ExperimenteeName").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["ExperimenteePosition"].Value = evaluateRecord.GetType().GetProperty("ExperimenteePosition").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["Department"].Value = evaluateRecord.GetType().GetProperty("Department").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["OrganizationOrganization"].Value = evaluateRecord.GetType().GetProperty("OrganizationOrganization").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["Oc"].Value = evaluateRecord.GetType().GetProperty("Oc").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["DateStart"].Value = evaluateRecord.GetType().GetProperty("DateStart").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["DateFinish"].Value = evaluateRecord.GetType().GetProperty("DateFinish").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["AchievementStrengthDesc1"].Value = evaluateRecord.GetType().GetProperty("AchievementStrengthDesc1").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["AchievementStrengthDesc2"].Value = evaluateRecord.GetType().GetProperty("AchievementStrengthDesc2").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["AchievementStrengthDesc3"].Value = evaluateRecord.GetType().GetProperty("AchievementStrengthDesc3").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["AchievementImproveDesc1"].Value = evaluateRecord.GetType().GetProperty("AchievementImproveDesc1").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["AchievementImproveDesc2"].Value = evaluateRecord.GetType().GetProperty("AchievementImproveDesc2").GetValue(evaluateRecord);
|
|
||||||
// report.ReportParameters["AchievementImproveDesc3"].Value = evaluateRecord.GetType().GetProperty("AchievementImproveDesc3").GetValue(evaluateRecord);
|
|
||||||
// report2.ReportParameters["BehaviorStrengthDesc1"].Value = evaluateRecord.GetType().GetProperty("BehaviorStrengthDesc1").GetValue(evaluateRecord);
|
|
||||||
// report2.ReportParameters["BehaviorStrengthDesc2"].Value = evaluateRecord.GetType().GetProperty("BehaviorStrengthDesc2").GetValue(evaluateRecord);
|
|
||||||
// report2.ReportParameters["BehaviorStrengthDesc3"].Value = evaluateRecord.GetType().GetProperty("BehaviorStrengthDesc3").GetValue(evaluateRecord);
|
|
||||||
// report2.ReportParameters["BehaviorImproveDesc1"].Value = evaluateRecord.GetType().GetProperty("BehaviorImproveDesc1").GetValue(evaluateRecord);
|
|
||||||
// report2.ReportParameters["BehaviorImproveDesc2"].Value = evaluateRecord.GetType().GetProperty("BehaviorImproveDesc2").GetValue(evaluateRecord);
|
|
||||||
// report2.ReportParameters["BehaviorImproveDesc3"].Value = evaluateRecord.GetType().GetProperty("BehaviorImproveDesc3").GetValue(evaluateRecord);
|
|
||||||
// report2.ReportParameters["Name"].Value = evaluateRecord.GetType().GetProperty("Name").GetValue(evaluateRecord);
|
|
||||||
// report2.ReportParameters["Position"].Value = evaluateRecord.GetType().GetProperty("Position").GetValue(evaluateRecord);
|
|
||||||
// report2.ReportParameters["MentorDate"].Value = evaluateRecord.GetType().GetProperty("MentorDate").GetValue(evaluateRecord);
|
|
||||||
|
|
||||||
// var _evaluateslist = new List<dynamic>();
|
|
||||||
// dynamic evaluates = evaluateRecord.GetType().GetProperty("Evaluates").GetValue(evaluateRecord);
|
|
||||||
// foreach (var evaluate in evaluates)
|
|
||||||
// {
|
|
||||||
// string Evaluate_expect_desc = string.Empty;
|
|
||||||
// string Evaluate_output_desc = string.Empty;
|
|
||||||
// int Evaluate_expect_level = 0;
|
|
||||||
// int Evaluate_output_level = 0;
|
|
||||||
// string Check_expect1 = string.Empty;
|
|
||||||
// string Check_expect2 = string.Empty;
|
|
||||||
// string Check_expect3 = string.Empty;
|
|
||||||
// string Check_expect4 = string.Empty;
|
|
||||||
// string Check_expect5 = string.Empty;
|
|
||||||
// string Check_output1 = string.Empty;
|
|
||||||
// string Check_output2 = string.Empty;
|
|
||||||
// string Check_output3 = string.Empty;
|
|
||||||
// string Check_output4 = string.Empty;
|
|
||||||
// string Check_output5 = string.Empty;
|
|
||||||
// var achievements = evaluate.achievements;
|
|
||||||
// foreach (var achievement in achievements)
|
|
||||||
// {
|
|
||||||
// Evaluate_expect_desc = achievement.evaluate_expect_desc;
|
|
||||||
// Evaluate_output_desc = achievement.evaluate_output_desc;
|
|
||||||
// Evaluate_expect_level = achievement.evaluate_expect_level;
|
|
||||||
// Evaluate_output_level = achievement.evaluate_output_level;
|
|
||||||
// }
|
|
||||||
// _evaluateslist.Add(new
|
|
||||||
// {
|
|
||||||
// No = evaluate.no,
|
|
||||||
// Date_start = evaluate.date_start,
|
|
||||||
// Date_finish = evaluate.date_finish,
|
|
||||||
// Evaluate_expect_desc = $" - {Evaluate_expect_desc}",
|
|
||||||
// Evaluate_output_desc = $" - {Evaluate_output_desc}",
|
|
||||||
// Check_expect1 = Evaluate_expect_level == 1 ? "/" : string.Empty,
|
|
||||||
// Check_expect2 = Evaluate_expect_level == 2 ? "/" : string.Empty,
|
|
||||||
// Check_expect3 = Evaluate_expect_level == 3 ? "/" : string.Empty,
|
|
||||||
// Check_expect4 = Evaluate_expect_level == 4 ? "/" : string.Empty,
|
|
||||||
// Check_expect5 = Evaluate_expect_level == 5 ? "/" : string.Empty,
|
|
||||||
// Check_output1 = Evaluate_output_level == 1 ? "/" : string.Empty,
|
|
||||||
// Check_output2 = Evaluate_output_level == 2 ? "/" : string.Empty,
|
|
||||||
// Check_output3 = Evaluate_output_level == 3 ? "/" : string.Empty,
|
|
||||||
// Check_output4 = Evaluate_output_level == 4 ? "/" : string.Empty,
|
|
||||||
// Check_output5 = Evaluate_output_level == 5 ? "/" : string.Empty,
|
|
||||||
// ApplyLevel = evaluate.apply_level,
|
|
||||||
// AchievementStrengthDesc = evaluate.achievement_strength_desc,
|
|
||||||
// AchievementImproveDesc = evaluate.achievement_improve_desc,
|
|
||||||
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
// var tblEvaluate_1 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table2"];
|
|
||||||
// tblEvaluate_1.DataSource = _evaluateslist;
|
|
||||||
|
|
||||||
// var tblEvaluate_2 = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["table1"];
|
|
||||||
// tblEvaluate_2.DataSource = _evaluateslist;
|
|
||||||
|
|
||||||
// var reportBook = new ReportBook();
|
|
||||||
// reportBook.Reports.Add(report);
|
|
||||||
// reportBook.Reports.Add(report2);
|
|
||||||
|
|
||||||
// System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable();
|
|
||||||
// InstanceReportSource instanceReportSource = new InstanceReportSource()
|
|
||||||
// {
|
|
||||||
// ReportDocument = reportBook,
|
|
||||||
// };
|
|
||||||
|
|
||||||
// ReportProcessor reportProcessor = new ReportProcessor(_configuration);
|
|
||||||
// RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo);
|
|
||||||
// var content = result.DocumentBytes;
|
|
||||||
// return File(content, mimeType, $"แบบบันทึกผล(สำหรับผู้บังคับบัญชา).{exportType.Trim().ToLower()}");
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// return NotFound();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// return Unauthorized();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// catch
|
|
||||||
// {
|
|
||||||
// throw;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region 16-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา
|
#region 16-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 16-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา
|
/// 16-แบบประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับผู้บังคับบัญชา
|
||||||
|
|
@ -1123,89 +963,7 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region 18-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน (ยกเลิกใช้งาน)
|
#region 18,19-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน และ กรณีขยายเวลา
|
||||||
///// <summary>
|
|
||||||
///// 18-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน
|
|
||||||
///// </summary>
|
|
||||||
///// <param name="id">assign_id </param>
|
|
||||||
///// <param name="exportType">pdf, docx หรือ xlsx</param>
|
|
||||||
///// <returns></returns>
|
|
||||||
///// <response code="200">เมื่อทำการอ่านข้อมูลจาก Relational Database สำเร็จ</response>
|
|
||||||
///// <response code="401">ไม่ได้ Login เข้าระบบ</response>
|
|
||||||
///// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
|
|
||||||
//[HttpGet("18/{exportType}/{id}")]
|
|
||||||
//public async Task<ActionResult<ResponseObject>> GetProbation18ConvertReportAsync(string id="9e8ec043-9f18-4f9a-bcde-3d11c909df19", string exportType = "pdf")
|
|
||||||
//{
|
|
||||||
// try
|
|
||||||
// {
|
|
||||||
// Guid Id = Guid.Parse(id);
|
|
||||||
// string authorizationHeader = Request.Headers["Authorization"];
|
|
||||||
// string token = string.Empty;
|
|
||||||
|
|
||||||
// if (!string.IsNullOrEmpty(authorizationHeader) && authorizationHeader.StartsWith("Bearer "))
|
|
||||||
// {
|
|
||||||
// token = authorizationHeader.Substring("Bearer ".Length).Trim();
|
|
||||||
// var evaluateAssign = await _repository.GetEvaluateResultAssignAsync(Id, token);
|
|
||||||
|
|
||||||
// if (evaluateAssign != null)
|
|
||||||
// {
|
|
||||||
// var mimeType = "";
|
|
||||||
// switch (exportType.Trim().ToLower())
|
|
||||||
// {
|
|
||||||
// case "pdf": mimeType = "application/pdf"; break;
|
|
||||||
// case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break;
|
|
||||||
// case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"18-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน-1.trdp");
|
|
||||||
|
|
||||||
// ReportPackager reportPacker = new ReportPackager();
|
|
||||||
// Telerik.Reporting.Report? report = null;
|
|
||||||
// //Telerik.Reporting.Report? report2 = null;
|
|
||||||
|
|
||||||
|
|
||||||
// using (var sourceStream = System.IO.File.OpenRead(rptFile))
|
|
||||||
// //using (var sourceStream2 = System.IO.File.OpenRead(rptFile2))
|
|
||||||
// {
|
|
||||||
// report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream);
|
|
||||||
// //report2 = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream2);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// report.ReportParameters["Name"].Value = evaluateAssign.GetType().GetProperty("Name").GetValue(evaluateAssign);
|
|
||||||
|
|
||||||
// var reportBook = new ReportBook();
|
|
||||||
// reportBook.Reports.Add(report);
|
|
||||||
// //reportBook.Reports.Add(report2);
|
|
||||||
|
|
||||||
// System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable();
|
|
||||||
// InstanceReportSource instanceReportSource = new InstanceReportSource()
|
|
||||||
// {
|
|
||||||
// ReportDocument = reportBook,
|
|
||||||
// };
|
|
||||||
|
|
||||||
// ReportProcessor reportProcessor = new ReportProcessor(_configuration);
|
|
||||||
// RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo);
|
|
||||||
// var content = result.DocumentBytes;
|
|
||||||
// return File(content, mimeType, $"แบบรายงานการประเมินผล(สำหรับประธาน).{exportType.Trim().ToLower()}");
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// return NotFound();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
// return Unauthorized();
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// catch
|
|
||||||
// {
|
|
||||||
// throw;
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region 19-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน และ กรณีขยายเวลา
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 19-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน และ กรณีขยายเวลา
|
/// 19-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน และ กรณีขยายเวลา
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -1237,29 +995,45 @@ namespace BMA.EHR.Report.Service.Controllers
|
||||||
case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break;
|
case "docx": mimeType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break;
|
||||||
case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break;
|
case "xlsx": mimeType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; break;
|
||||||
}
|
}
|
||||||
|
var rptFile1 = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"18-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ สำหรับประธาน-1.trdp");
|
||||||
var rptFile = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"19-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ กรณีขยายเวลา.trdp");
|
var rptFile2 = System.IO.Path.Combine(_hostingEnvironment.ContentRootPath, "Reports", $"19-แบบรายงานการประเมินผลการทดลองปฏิบัติหน้าที่ราชการ กรณีขยายเวลา.trdp");
|
||||||
ReportPackager reportPacker = new ReportPackager();
|
ReportPackager reportPacker = new ReportPackager();
|
||||||
Telerik.Reporting.Report? report = null;
|
Telerik.Reporting.Report? report1 = null;
|
||||||
using (var sourceStream = System.IO.File.OpenRead(rptFile))
|
Telerik.Reporting.Report? report2 = null;
|
||||||
|
using (var sourceStream1 = System.IO.File.OpenRead(rptFile1))
|
||||||
|
using (var sourceStream2 = System.IO.File.OpenRead(rptFile2))
|
||||||
{
|
{
|
||||||
report = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream);
|
report1 = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream1);
|
||||||
|
report2 = (Telerik.Reporting.Report)reportPacker.UnpackageDocument(sourceStream2);
|
||||||
}
|
}
|
||||||
|
//สำหรับประธาน
|
||||||
report.ReportParameters["EvaluateDateStart"].Value = evaluateAssign.GetType().GetProperty("EvaluateDateStart").GetValue(evaluateAssign);
|
if((evaluateAssign.GetType().GetProperty("ExpandMonth").GetValue(evaluateAssign)).ToString() == "๐")
|
||||||
report.ReportParameters["EvaluateDateFinish"].Value = evaluateAssign.GetType().GetProperty("EvaluateDateFinish").GetValue(evaluateAssign);
|
{
|
||||||
report.ReportParameters["Reson"].Value = evaluateAssign.GetType().GetProperty("Reson").GetValue(evaluateAssign);
|
report1.DataSource = evaluateAssign;
|
||||||
report.ReportParameters["DevelopComplete"].Value = evaluateAssign.GetType().GetProperty("DevelopComplete").GetValue(evaluateAssign);
|
System.Collections.Hashtable deviceInfo_ = new System.Collections.Hashtable();
|
||||||
report.ReportParameters["PassResult"].Value = evaluateAssign.GetType().GetProperty("PassResult").GetValue(evaluateAssign);
|
InstanceReportSource instanceReportSource_ = new InstanceReportSource()
|
||||||
report.ReportParameters["ExpandMonth"].Value = evaluateAssign.GetType().GetProperty("ExpandMonth").GetValue(evaluateAssign);
|
{
|
||||||
report.ReportParameters["ChairmanName"].Value = evaluateAssign.GetType().GetProperty("ChairmanName").GetValue(evaluateAssign);
|
ReportDocument = report1,
|
||||||
report.ReportParameters["ChairmanPosition"].Value = evaluateAssign.GetType().GetProperty("ChairmanPosition").GetValue(evaluateAssign);
|
};
|
||||||
report.ReportParameters["ChairmanDate"].Value = evaluateAssign.GetType().GetProperty("ChairmanDate").GetValue(evaluateAssign);
|
ReportProcessor reportProcessor_ = new ReportProcessor(_configuration);
|
||||||
|
RenderingResult result_ = reportProcessor_.RenderReport($"{exportType}", instanceReportSource_, deviceInfo_);
|
||||||
|
return File(result_.DocumentBytes, mimeType, $"แบบรายงานการประเมินผล.{exportType.Trim().ToLower()}");
|
||||||
|
}
|
||||||
|
//กรณีขยายเวลา (ใช้รูปแบบเดิม)
|
||||||
|
report2.ReportParameters["EvaluateDateStart"].Value = evaluateAssign.GetType().GetProperty("EvaluateDateStart").GetValue(evaluateAssign);
|
||||||
|
report2.ReportParameters["EvaluateDateFinish"].Value = evaluateAssign.GetType().GetProperty("EvaluateDateFinish").GetValue(evaluateAssign);
|
||||||
|
report2.ReportParameters["Reson"].Value = evaluateAssign.GetType().GetProperty("Reson").GetValue(evaluateAssign);
|
||||||
|
report2.ReportParameters["DevelopComplete"].Value = evaluateAssign.GetType().GetProperty("DevelopComplete").GetValue(evaluateAssign);
|
||||||
|
report2.ReportParameters["PassResult"].Value = evaluateAssign.GetType().GetProperty("PassResult").GetValue(evaluateAssign);
|
||||||
|
report2.ReportParameters["ExpandMonth"].Value = evaluateAssign.GetType().GetProperty("ExpandMonth").GetValue(evaluateAssign);
|
||||||
|
report2.ReportParameters["ChairmanName"].Value = evaluateAssign.GetType().GetProperty("ChairmanName").GetValue(evaluateAssign);
|
||||||
|
report2.ReportParameters["ChairmanPosition"].Value = evaluateAssign.GetType().GetProperty("ChairmanPosition").GetValue(evaluateAssign);
|
||||||
|
report2.ReportParameters["ChairmanDate"].Value = evaluateAssign.GetType().GetProperty("ChairmanDate").GetValue(evaluateAssign);
|
||||||
|
|
||||||
System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable();
|
System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable();
|
||||||
InstanceReportSource instanceReportSource = new InstanceReportSource()
|
InstanceReportSource instanceReportSource = new InstanceReportSource()
|
||||||
{
|
{
|
||||||
ReportDocument = report,
|
ReportDocument = report2,
|
||||||
};
|
};
|
||||||
ReportProcessor reportProcessor = new ReportProcessor(_configuration);
|
ReportProcessor reportProcessor = new ReportProcessor(_configuration);
|
||||||
RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo);
|
RenderingResult result = reportProcessor.RenderReport($"{exportType}", instanceReportSource, deviceInfo);
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue