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
|
||||||
|
|
|
||||||
|
|
@ -330,6 +330,66 @@ namespace BMA.EHR.Domain.Extensions
|
||||||
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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; }
|
||||||
|
|
||||||
|
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