รายงานลัญชี 1-2-3 และรายงาน กพ7

This commit is contained in:
Suphonchai Phoonsawat 2023-05-13 17:37:23 +07:00
parent 1dc973cc73
commit a15f2a1081
16 changed files with 1893 additions and 585 deletions

View file

@ -1,11 +1,342 @@
using Microsoft.AspNetCore.Http; using BMA.EHR.Profile.Service.Controllers;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.Annotations;
using Telerik.Reporting.Processing;
using Telerik.Reporting;
using BMA.EHR.Report.Service.Responses;
using BMA.EHR.Report.Service.Data;
using BMA.EHR.Report.Service.Services;
namespace BMA.EHR.Report.Service.Controllers namespace BMA.EHR.Report.Service.Controllers
{ {
[Route("api/[controller]")] [Route("api/v{version:apiVersion}/report/organization")]
[ApiVersion("1.0")]
[ApiController] [ApiController]
public class OrganizationReportController : ControllerBase [Produces("application/json")]
//[Authorize]
[SwaggerTag("รายงานระบบโครงสร้าง")]
public class OrganizationReportController : BaseController
{ {
#region " Fields "
private readonly EHRDbContext _context;
private readonly IWebHostEnvironment _hostingEnvironment;
private readonly IConfiguration _configuration;
private readonly string space = "";
private readonly OrganizationReportService _organizationReportService;
#endregion
#region " Constructor and Destructor "
public OrganizationReportController(EHRDbContext context,
IWebHostEnvironment hostingEnvironment,
IConfiguration configuration,
OrganizationReportService organizationReportService)
{
this._context = context;
this._hostingEnvironment = hostingEnvironment;
this._configuration = configuration;
this._organizationReportService = organizationReportService;
}
#endregion
#region " Methods "
/// <summary>
/// รายงานบัญชี 1
/// </summary>
/// <param name="id">รหัสสำนัก</param>
/// <returns></returns>
/// <response code="200">เมื่อแสดงรายงานสำเร็จ</response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpGet("account1/{id:length(36)}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
[AllowAnonymous]
public async Task<ActionResult<ResponseObject>> GetAccount1Report(Guid id)
{
try
{
var data = await _organizationReportService.GetReport1Query(id);
var result_data = new List<Account1ResultItem>();
foreach (var d in data)
{
result_data.Add(new Account1ResultItem
{
Id = d.Id,
RootOcId = d.RootOcId,
RootOcName = d.RootOcName,
OcFullName = d.OcFullName.Replace($"\r\n{d.OcName}", string.Empty),
OcId = d.OcId,
OcName = d.OcName,
ShortName = d.ShortName,
PositionNumber = d.PositionNumber,
PositionNumberInt = Convert.ToInt32(d.PositionNumber.Replace(d.ShortName, string.Empty)),
PositionName = d.PositionName,
PositionSide = d.PositionSide,
PositionExecutive = d.PositionExecutive,
PositionExecutiveSide = d.PositionExecutiveSide,
OcOrder = d.OcOrder,
PositionLevel = d.PositionLevel,
Remark = d.Remark,
PositionType = d.PositionType,
});
}
var items = result_data.OrderBy(x => x.OcOrder).ThenBy(x => x.PositionNumberInt).ToList();
var rptFile = Path.Combine(_hostingEnvironment.ContentRootPath, "Report", "Organization", $"rptAccount1.trdp");
ReportPackager reportPackager = new ReportPackager();
Telerik.Reporting.Report report = null;
using (var sourceStream = System.IO.File.OpenRead(rptFile))
{
report = (Telerik.Reporting.Report)reportPackager.UnpackageDocument(sourceStream);
}
report.DataSource = items;
System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable();
InstanceReportSource instanceReportSource = new InstanceReportSource()
{
ReportDocument = report
};
ReportProcessor reportProcessor = new ReportProcessor(_configuration);
RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, deviceInfo);
var first_record = items.FirstOrDefault();
var content = result.DocumentBytes;
return File(content, "application/pdf", $"รายงานบัญชี1_{first_record.RootOcName}_.pdf");
}
catch (Exception ex)
{
return Error(ex);
}
}
/// <summary>
/// รายงานบัญชี 2
/// </summary>
/// <param name="id">รหัสสำนัก</param>
/// <returns></returns>
/// <response code="200">เมื่อแสดงรายงานสำเร็จ</response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpGet("account2/{id:length(36)}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
[AllowAnonymous]
public async Task<ActionResult<ResponseObject>> GetAccount2Report(Guid id)
{
try
{
var data = await _organizationReportService.GetReport2Query(id);
var result_data = new List<Account2ResultItem>();
foreach (var d in data)
{
result_data.Add(new Account2ResultItem
{
Id = d.Id,
RootOcId = d.RootOcId,
RootOcName = d.RootOcName,
OcFullName = d.OcFullName.Replace($"\r\n{d.OcName}", string.Empty),
OcId = d.OcId,
OcName = d.OcName,
ShortName = d.ShortName,
PositionNumber = d.PositionNumber,
PositionNumberInt = d.PositionNumber == "" ? 0 : Convert.ToInt32(d.PositionNumber.Split(".").Last()),
PositionName = d.PositionName,
PositionSide = d.PositionSide,
PositionExecutive = d.PositionExecutive,
PositionExecutiveSide = d.PositionExecutiveSide,
OcOrder = d.OcOrder,
PositionLevel = d.PositionLevel,
Remark = d.Remark,
PositionType = d.PositionType,
OcIdNew = d.OcIdNew,
OcFullNameNew = d.OcFullNameNew.Replace($"\r\n{d.OcNameNew}", string.Empty),
OcNameNew = d.OcNameNew,
ShortNameNew = d.ShortNameNew,
PositionNumberNew = d.PositionNumberNew,
PositionNumberIntNew = d.PositionNumberNew == "" ? 0 : Convert.ToInt32(d.PositionNumberNew.Split(".").Last()),
PositionLevelNew = d.PositionLevelNew,
PositionNameNew = d.PositionNameNew,
PositionSideNew = d.PositionSideNew,
PositionExecutiveNew = d.PositionExecutiveNew,
PositionExecutiveSideNew = d.PositionExecutiveSideNew,
PositionTypeNew = d.PositionTypeNew,
Prefix = d.Prefix,
FirstName = d.FirstName,
LastName = d.LastName,
Degree = d.Degree,
Salary = d.Salary,
SalaryPosition = d.SalaryPosition,
FullName = $"{d.Prefix}{d.FirstName} {d.LastName}".Trim()
});
}
var items = result_data.OrderBy(x => x.OcOrder).ThenBy(x => x.PositionNumberInt).ToList();
var rptFile = Path.Combine(_hostingEnvironment.ContentRootPath, "Report", "Organization", $"rptAccount2.trdp");
ReportPackager reportPackager = new ReportPackager();
Telerik.Reporting.Report report = null;
using (var sourceStream = System.IO.File.OpenRead(rptFile))
{
report = (Telerik.Reporting.Report)reportPackager.UnpackageDocument(sourceStream);
}
report.DataSource = items;
System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable();
InstanceReportSource instanceReportSource = new InstanceReportSource()
{
ReportDocument = report
};
ReportProcessor reportProcessor = new ReportProcessor(_configuration);
RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, deviceInfo);
var first_record = items.FirstOrDefault();
var content = result.DocumentBytes;
return File(content, "application/pdf", $"รายงานบัญชี2_{first_record.RootOcName}_.pdf");
}
catch (Exception ex)
{
return Error(ex);
}
}
// <summary>
/// รายงานบัญชี 3
/// </summary>
/// <param name="id">รหัสสำนัก</param>
/// <returns></returns>
/// <response code="200">เมื่อแสดงรายงานสำเร็จ</response>
/// <response code="400">ค่าตัวแปรที่ส่งมาไม่ถูกต้อง</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpGet("account3/{id:length(36)}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
[AllowAnonymous]
public async Task<ActionResult<ResponseObject>> GetAccount3Report(Guid id)
{
try
{
try
{
var data = await _organizationReportService.GetReport2Query(id);
var result_data = new List<Account2ResultItem>();
foreach (var d in data)
{
result_data.Add(new Account2ResultItem
{
Id = d.Id,
RootOcId = d.RootOcId,
RootOcName = d.RootOcName,
OcFullName = d.OcFullName.Replace($"\r\n{d.OcName}", string.Empty),
OcId = d.OcId,
OcName = d.OcName,
ShortName = d.ShortName,
PositionNumber = d.PositionNumber,
PositionNumberInt =d.PositionNumber == "" ? 0 : Convert.ToInt32(d.PositionNumber.Split(".").Last()),
PositionName = d.PositionName,
PositionSide = d.PositionSide,
PositionExecutive = d.PositionExecutive,
PositionExecutiveSide = d.PositionExecutiveSide,
OcOrder = d.OcOrder,
PositionLevel = d.PositionLevel,
Remark = d.Remark,
PositionType = d.PositionType,
OcIdNew = d.OcIdNew,
OcFullNameNew = d.OcFullNameNew.Replace($"\r\n{d.OcNameNew}", string.Empty),
OcNameNew = d.OcNameNew,
ShortNameNew = d.ShortNameNew,
PositionNumberNew = d.PositionNumberNew,
PositionNumberIntNew = d.PositionNumberNew == "" ? 0 : Convert.ToInt32(d.PositionNumberNew.Split(".").Last()),
PositionLevelNew = d.PositionLevelNew,
PositionNameNew = d.PositionNameNew,
PositionSideNew = d.PositionSideNew,
PositionExecutiveNew = d.PositionExecutiveNew,
PositionExecutiveSideNew = d.PositionExecutiveSideNew,
PositionTypeNew = d.PositionTypeNew,
Prefix = d.Prefix,
FirstName = d.FirstName,
LastName = d.LastName,
Degree = d.Degree,
Salary = d.Salary,
SalaryPosition = d.SalaryPosition,
FullName = $"{d.Prefix}{d.FirstName} {d.LastName}".Trim()
});
}
var items = result_data.OrderBy(x => x.OcOrder).ThenBy(x => x.PositionNumberInt).ToList();
var rptFile = Path.Combine(_hostingEnvironment.ContentRootPath, "Report", "Organization", $"rptAccount3.trdp");
ReportPackager reportPackager = new ReportPackager();
Telerik.Reporting.Report report = null;
using (var sourceStream = System.IO.File.OpenRead(rptFile))
{
report = (Telerik.Reporting.Report)reportPackager.UnpackageDocument(sourceStream);
}
report.DataSource = items;
System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable();
InstanceReportSource instanceReportSource = new InstanceReportSource()
{
ReportDocument = report
};
ReportProcessor reportProcessor = new ReportProcessor(_configuration);
RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, deviceInfo);
var first_record = items.FirstOrDefault();
var content = result.DocumentBytes;
return File(content, "application/pdf", $"รายงานบัญชี3_{first_record.RootOcName}_.pdf");
}
catch (Exception ex)
{
return Error(ex);
}
}
catch (Exception ex)
{
return Error(ex);
}
}
#endregion
} }
} }

View file

@ -131,7 +131,7 @@ namespace BMA.EHR.Report.Service.Controllers
FirstName = profile.FirstName, FirstName = profile.FirstName,
LastName = profile.LastName, LastName = profile.LastName,
DateOfBirth = profile.DateOfBirth, DateOfBirth = profile.DateOfBirth,
RegistrationAddress = $"{profile.RegistrationAddress} จังหวัด{profile.RegistrationProvince} เขต/อำเภอ{profile.RegistrationDistrict} ตำบล/แขวง{profile.RegistrationSubDistrict} รหัสไปรษณีย์{profile.RegistrationZipCode}", RegistrationAddress = $"{profile.RegistrationAddress} ตำบล/แขวง{profile.RegistrationSubDistrict} เขต/อำเภอ{profile.RegistrationDistrict} จังหวัด{profile.RegistrationProvince} รหัสไปรษณีย์{profile.RegistrationZipCode}",
SalaryAmount = profile.SalaryAmount, SalaryAmount = profile.SalaryAmount,
Education = profile.Education, Education = profile.Education,
AppointText = "", AppointText = "",
@ -183,7 +183,7 @@ namespace BMA.EHR.Report.Service.Controllers
FirstName = profile.FirstName, FirstName = profile.FirstName,
LastName = profile.LastName, LastName = profile.LastName,
DateOfBirth = profile.DateOfBirth, DateOfBirth = profile.DateOfBirth,
RegistrationAddress = $"{profile.RegistrationAddress} จังหวัด{profile.RegistrationProvince} เขต/อำเภอ{profile.RegistrationDistrict} ตำบล/แขวง{profile.RegistrationSubDistrict} รหัสไปรษณีย์{profile.RegistrationZipCode}", RegistrationAddress = $"{profile.RegistrationAddress} ตำบล/แขวง{profile.RegistrationSubDistrict} เขต/อำเภอ{profile.RegistrationDistrict} จังหวัด{profile.RegistrationProvince} รหัสไปรษณีย์{profile.RegistrationZipCode}",
SalaryAmount = profile.SalaryAmount, SalaryAmount = profile.SalaryAmount,
Education = profile.Education, Education = profile.Education,
AppointText = c == 1 ? "(เริ่มรับราชการ)" : "", AppointText = c == 1 ? "(เริ่มรับราชการ)" : "",
@ -205,7 +205,7 @@ namespace BMA.EHR.Report.Service.Controllers
FirstName = profile.FirstName, FirstName = profile.FirstName,
LastName = profile.LastName, LastName = profile.LastName,
DateOfBirth = profile.DateOfBirth, DateOfBirth = profile.DateOfBirth,
RegistrationAddress = $"{profile.RegistrationAddress} จังหวัด{profile.RegistrationProvince} เขต/อำเภอ{profile.RegistrationDistrict} ตำบล/แขวง{profile.RegistrationSubDistrict} รหัสไปรษณีย์{profile.RegistrationZipCode}", RegistrationAddress = $"{profile.RegistrationAddress} ตำบล/แขวง{profile.RegistrationSubDistrict} เขต/อำเภอ{profile.RegistrationDistrict} จังหวัด{profile.RegistrationProvince} รหัสไปรษณีย์{profile.RegistrationZipCode}",
SalaryAmount = profile.SalaryAmount, SalaryAmount = profile.SalaryAmount,
Education = profile.Education, Education = profile.Education,
AppointText = c == 1 ? "(เริ่มรับราชการ)" : "", AppointText = c == 1 ? "(เริ่มรับราชการ)" : "",
@ -594,6 +594,377 @@ namespace BMA.EHR.Report.Service.Controllers
} }
} }
[HttpGet("kp7/{id:length(36)}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<ActionResult<ResponseObject>> GetKP7Report(Guid id)
{
try
{
var profile = (from p in _context.Profiles
join pf in _context.Prefixes on p.PrefixId equals pf.Id into p_pf_join
from p_pf in p_pf_join.DefaultIfEmpty()
join cpf in _context.Prefixes on p.CouplePrefixId equals cpf.Id into c_pf_join
from c_pf in c_pf_join.DefaultIfEmpty()
join fpf in _context.Prefixes on p.FatherPrefixId equals fpf.Id into f_pf_join
from f_pf in f_pf_join.DefaultIfEmpty()
join mpf in _context.Prefixes on p.MotherPrefixId equals mpf.Id into m_pf_join
from m_pf in m_pf_join.DefaultIfEmpty()
where p.Id == id
select new
{
p.CitizenId,
Prefix = p_pf == null ? "" : p_pf.Name,
p.FirstName,
p.LastName,
FullName = $"{p.FirstName} {p.LastName}",
BirthDay = p.BirthDate.Day,
BirthDayText = Convert.ToDecimal(p.BirthDate.Day).ThaiBahtText(UsesEt.Always, GreatFriends.ThaiBahtText.Unit.Baht, 2, false).Replace("บาท", ""),
BirthMonth = p.BirthDate.Month.ToThaiMonth(),
BirthYear = p.BirthDate.Year.ToThaiYear(),
BirthYearText = Convert.ToDecimal(p.BirthDate.Year.ToThaiYear()).ThaiBahtText(UsesEt.Always, GreatFriends.ThaiBahtText.Unit.Baht, 2, false).Replace("บาท", ""),
Address = "",
District = "",
Area = "",
Province = "",
Telephone = p.TelephoneNumber,
CouplePrefix = c_pf == null ? "" : c_pf.Name,
CoupleFullName = $"{p.CoupleFirstName} {p.CoupleLastName}".Trim(),
FatherPrefix = f_pf == null ? "" : f_pf.Name,
FatherFullName = $"{p.FatherFirstName} {p.FatherLastName}".Trim(),
MotherPrefix = m_pf == null ? "" : m_pf.Name,
MotherFullName = $"{p.MotherFirstName} {p.MotherLastName}".Trim(),
OcId = p.OcId,
OcFullPath = _profileService.GetOrganizationNameFullPath(p.OcId.Value, false, false),
Division = "",
Institute = "",
StartDate = p.DateStart == null ? "" : p.DateStart.Value.ToThaiShortDate(),
AppointDate = p.DateAppoint == null ? "" : p.DateAppoint.Value.ToThaiShortDate(),
BirthDate = p.BirthDate.ToThaiShortDate(),
RetireDate = p.BirthDate.CalculateRetireDate().ToThaiShortDate(),
AvatarId = p.Avatar == null ? "" : p.Avatar.Id.ToString("D")
}).ToList();
if (!profile.Any())
return Error(GlobalMessages.DataNotFound, StatusCodes.Status404NotFound);
// certificate
var cert = (from c in _context.ProfileCertificates.AsQueryable()
where c.Profile.Id == id
orderby c.IssueDate.Value.Year
select new
{
c.CertificateType,
c.Issuer,
c.CertificateNo,
IssueDate = c.IssueDate == null ? "" : c.IssueDate.Value.ToThaiShortDate()
}).ToList();
// add temp rows
while (cert.Count < 3)
{
cert.Add(new
{
CertificateType = "",
Issuer = "",
CertificateNo = "",
IssueDate = ""
});
}
// training
var training = (from t in _context.ProfileTrainings.AsQueryable()
where t.Profile.Id == id
orderby t.StartDate.Value.Year
select new
{
Institute = t.Host,
Start = t.StartDate == null ? "" : t.StartDate.Value.Year.ToThaiYear().ToString(),
End = t.EndDate == null ? "" : t.EndDate.Value.Year.ToThaiYear().ToString(),
Level = "",
Degree = t.Subject,
Field = ""
}).ToList();
// disciplines
var discipline = (from d in _context.ProfileDisciplines.AsQueryable()
where d.Profile.Id == id
orderby d.Date.Value.Year
select new
{
DisciplineYear = d.Date == null ? "" : d.Date.Value.Year.ToThaiYear().ToString(),
DisciplineDetail = d.Detail,
RefNo = d.RefCommandNo
}).ToList();
while (discipline.Count < 3)
{
discipline.Add(new
{
DisciplineYear = "",
DisciplineDetail = "",
RefNo = ""
});
}
// nopaind
var nopaid = (from c in _context.ProfileNopaids.AsQueryable()
where c.Profile.Id == id
orderby c.Date.Value.Year
select new
{
Year = c.Date == null ? "" : c.Date.Value.Year.ToThaiYear().ToString(),
Detail = c.Detail,
RefNo = c.Reference
}).ToList();
while (nopaid.Count < 3)
{
nopaid.Add(new
{
Year = "",
Detail = "",
RefNo = ""
});
}
// education
var education = (from e in _context.ProfileEducations.AsQueryable()
where e.Profile.Id == id
orderby e.StartDate.Value.Year
select new
{
Institute = e.Institute,
Start = e.StartDate == null ? "" : e.StartDate.Value.Year.ToThaiYear().ToString(),
End = e.EndDate == null ? "" : e.EndDate.Value.Year.ToThaiYear().ToString(),
Level = e.EducationLevel,
Degree = e.Degree,
Field = e.Field.Trim() == "-" ? "" : e.Field
}).ToList();
var education_all = education.Union(training).ToList();
while (education_all.Count < 6)
{
education_all.Add(new
{
Institute = "",
Start = "",
End = "",
Level = "",
Degree = "",
Field = ""
});
}
var row = 0;
var education_report = new List<dynamic>();
foreach (var e in education_all)
{
if (row % 2 == 0)
{
var last_row = education_report.Last();
last_row.Institute2 = e.Institute;
last_row.Start2 = e.Start;
last_row.End2 = e.End;
last_row.Level2 = e.Level;
last_row.Degree2 = e.Degree;
last_row.Field2 = e.Field;
}
else
{
education_report.Add(new
{
Institute1 = e.Institute,
Start1 = e.Start,
End1 = e.End,
Level1 = e.Level,
Degree1 = e.Degree,
Field1 = e.Field,
Institute2 = "",
Start2 = "",
End2 = "",
Level2 = "",
Degree2 = "",
Field2 = ""
});
}
row++;
}
var rptFile = Path.Combine(_hostingEnvironment.ContentRootPath, "Report", "Profile", $"rptKP7_Page1.trdp");
ReportPackager reportPackager = new ReportPackager();
Telerik.Reporting.Report? report = null;
using (var sourceStream = System.IO.File.OpenRead(rptFile))
{
report = (Telerik.Reporting.Report)reportPackager.UnpackageDocument(sourceStream);
}
report.DataSource = profile;
var tblNopaid = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["tblNopaid"];
tblNopaid.DataSource = nopaid;
var tblDiscipline = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["tblDiscipline"];
tblDiscipline.DataSource = discipline;
var tblEducation = (Telerik.Reporting.Table)report.Items["detailSection1"].Items["tblEducation"];
tblEducation.DataSource = education_report;
if (profile.First().AvatarId != "")
{
try
{
// Get avatar Image
var picContent = (await _minioService.DownloadFileAsync(Guid.Parse(profile.First().AvatarId))).FileContent;
var pictureBox = (Telerik.Reporting.PictureBox)report.Items["pageFooterSection1"].Items["picAvatar"];
pictureBox.Value = Image.FromStream(new MemoryStream(picContent));
}
catch { }
}
System.Collections.Hashtable deviceInfo = new System.Collections.Hashtable();
InstanceReportSource instanceReportSource = new InstanceReportSource()
{
ReportDocument = report
};
ReportProcessor reportProcessor = new ReportProcessor(_configuration);
RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, deviceInfo);
// byte array waiting for merge pdf
var content = result.DocumentBytes;
// page2
var profile2 = (from p in _context.Profiles
join pf in _context.Prefixes on p.PrefixId equals pf.Id
where p.Id == id
select new
{
FullName = $"{pf.Name}{p.FirstName} {p.LastName}",
OcFullPath = _profileService.GetOrganizationNameFullPath(p.OcId.Value, false, false),
}).FirstOrDefault();
var salary = (from s in _context.ProfileSalaries
join pos in _context.PositionPaths on s.PositionId equals pos.Id
join pos_no in _context.PositionNumbers on s.PosNoId equals pos_no.Id
join pos_lv in _context.PositionLevels on s.PositionLevelId equals pos_lv.Id
join pos_type in _context.PositionTypes on s.PositionTypeId equals pos_type.Id
where s.Profile.Id == id
orderby s.Date.Value
select new
{
SalaryDate = s.Date == null ? "" : s.Date == new DateTime(1, 1, 1) ? "" : s.Date.Value.ToThaiShortDate(),
Position = s.SalaryClass,
PosNo = pos_no.Name,
Rank = pos_lv.Name,
Salary = s.Amount == null ? "" : s.Amount.ToString().ToInteger().ToNumericText(),
RefAll = s.SalaryRef,
PositionType = pos_type.Name,
PositionLevel = pos_lv.Name,
PositionAmount = s.PositionSalaryAmount == null ? "" : s.PositionSalaryAmount.Value.ToString().ToInteger().ToNumericText(),
FullName = profile2.FullName,
OcFullPath = profile2.OcFullPath
}).ToList();
while (salary.Count < 30)
{
salary.Add(new
{
SalaryDate = "",
Position = "",
PosNo = "",
Rank = "",
Salary = "",
RefAll = "",
PositionType = "",
PositionLevel = "",
PositionAmount = "",
FullName = profile2.FullName,
OcFullPath = profile2.OcFullPath
});
}
var rptFile2 = Path.Combine(_hostingEnvironment.ContentRootPath, "Report", "Profile", $"rptKP7_Page2.trdp");
ReportPackager reportPackager2 = new ReportPackager();
Telerik.Reporting.Report? report2 = null;
using (var sourceStream = System.IO.File.OpenRead(rptFile2))
{
report2 = (Telerik.Reporting.Report)reportPackager.UnpackageDocument(sourceStream);
}
report2.ReportParameters["FullName"].Value = profile2.FullName;
report2.ReportParameters["OcFullPath"].Value = profile2.OcFullPath;
// binding to table
var tblSalary = (Telerik.Reporting.Table)report2.Items["detailSection1"].Items["tblSalary"];
tblSalary.DataSource = salary;
System.Collections.Hashtable deviceInfo2 = new System.Collections.Hashtable();
InstanceReportSource instanceReportSource2 = new InstanceReportSource()
{
ReportDocument = report2
};
ReportProcessor reportProcessor2 = new ReportProcessor(_configuration);
RenderingResult result2 = reportProcessor2.RenderReport("PDF", instanceReportSource2, deviceInfo2);
// byte array waiting for merge pdf
var content2 = result2.DocumentBytes;
// merge pdf
using (MemoryStream ms = new MemoryStream())
{
using (PdfDocument pdf = new PdfDocument(new PdfWriter(ms).SetSmartMode(true)))
{
// Create reader from bytes
using (MemoryStream memoryStream = new MemoryStream(content))
{
// Create reader from bytes
using (PdfReader reader = new PdfReader(memoryStream))
{
PdfDocument srcDoc = new PdfDocument(reader);
srcDoc.CopyPagesTo(1, srcDoc.GetNumberOfPages(), pdf);
}
}
// Create reader from bytes
if (content2 != null)
{
using (MemoryStream memoryStream = new MemoryStream(content2))
{
// Create reader from bytes
using (PdfReader reader = new PdfReader(memoryStream))
{
PdfDocument srcDoc = new PdfDocument(reader);
srcDoc.CopyPagesTo(1, srcDoc.GetNumberOfPages(), pdf);
}
}
}
pdf.Close();
}
var fileContent = ms.ToArray();
return File(fileContent, "application/pdf", $"กก_1_{id}.pdf");
}
}
catch (Exception ex)
{
return Error(ex);
}
}
#endregion #endregion
} }
} }

View file

@ -1,4 +1,5 @@
using BMA.EHR.MetaData.Service.Models; using BMA.EHR.MetaData.Service.Models;
using BMA.EHR.Organization.Service.Models.Report2;
using BMA.EHR.Profile.Service.Models; using BMA.EHR.Profile.Service.Models;
using BMA.EHR.Profile.Service.Models.HR; using BMA.EHR.Profile.Service.Models.HR;
using BMA.EHR.Recruit.Service.Models.Documents; using BMA.EHR.Recruit.Service.Models.Documents;
@ -221,5 +222,9 @@ namespace BMA.EHR.Report.Service.Data
public DbSet<ProfileAvatarHistory> ProfileAvatarHistories { get; set; } public DbSet<ProfileAvatarHistory> ProfileAvatarHistories { get; set; }
public DbSet<ProfilePosition> ProfilePositions { get; set; } public DbSet<ProfilePosition> ProfilePositions { get; set; }
public DbSet<Report2> Report2s { get; set; }
public DbSet<Report2History> Report2Histories { get; set; }
public DbSet<Report2DetailHistory> Report2DetailHistories { get; set; }
} }
} }

53
Models/Report2/Report2.cs Normal file
View file

@ -0,0 +1,53 @@
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using BMA.EHR.MetaData.Service.Models;
namespace BMA.EHR.Organization.Service.Models.Report2
{
public class Report2 : EntityBase
{
[Comment("รหัสส่วนราชการ")]
public Guid? OrganizationShortNameId { get; set; }
public string? OrganizationShortName { get; set; }
public string? GovernmentCode { get; set; }
[Comment("ชื่อหน่วยงาน")]
public Guid? OrganizationOrganizationId { get; set; }
public string? OrganizationOrganization { get; set; }
[Comment("ตำแหน่งเลขที่")]
public Guid? PositionNumId { get; set; }
public string? PositionNum { get; set; }
[Comment("ประเภทตำแหน่ง")]
public Guid? PositionTypeId { get; set; }
public string? PositionType { get; set; }
[Comment("ตำแหน่งทางการบริหาร")]
public Guid? PositionExecutiveId { get; set; }
public string? PositionExecutive { get; set; }
[Comment("ด้านทางบริหาร")]
public Guid? PositionExecutiveSideId { get; set; }
public string? PositionExecutiveSide { get; set; }
[Comment("ตำแหน่งในสายงาน")]
public Guid? PositionPathId { get; set; }
public string? PositionPath { get; set; }
[Comment("ด้าน/สาขา")]
public Guid? PositionPathSideId { get; set; }
public string? PositionPathSide { get; set; }
[Comment("ระดับตำแหน่ง")]
public Guid? PositionLevelId { get; set; }
public string? PositionLevel { get; set; }
[Comment("สถานะการเปลี่ยนแปลง")]
public string? Status { get; set; }
[Comment("สังกัดที่ถือครอง")]
public Guid? ProfilePositionId { get; set; }
}
}

View file

@ -0,0 +1,12 @@
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using BMA.EHR.MetaData.Service.Models;
namespace BMA.EHR.Organization.Service.Models.Report2
{
public class Report2DetailHistory : EntityBase
{
public string? Detail { get; set; }
}
}

View file

@ -0,0 +1,102 @@
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using BMA.EHR.MetaData.Service.Models;
namespace BMA.EHR.Organization.Service.Models.Report2
{
public class Report2History : EntityBase
{
[Comment("ชื่อ-สกุล")]
public string? FullName { get; set; }
[Comment("คุณวุฒิ")]
public string? Education { get; set; }
[Comment("เงินเดือน")]
public double? Salary { get; set; }
[Comment("เงินประจำตำแหน่ง")]
public double? SalaryPosition { get; set; }
[Comment("เงินตอบแทนรายเดือน")]
public double? SalaryMonth { get; set; }
[Comment("รหัสส่วนราชการ กำหนดเดิม")]
public Guid? OldOrganizationShortNameId { get; set; }
public string? OldOrganizationShortName { get; set; }
public string? OldGovernmentCode { get; set; }
[Comment("ชื่อหน่วยงาน กำหนดเดิม")]
public Guid? OldOrganizationOrganizationId { get; set; }
public string? OldOrganizationOrganization { get; set; }
[Comment("ตำแหน่งเลขที่ กำหนดเดิม")]
public Guid? OldPositionNumId { get; set; }
public string? OldPositionNum { get; set; }
[Comment("ประเภทตำแหน่ง กำหนดเดิม")]
public Guid? OldPositionTypeId { get; set; }
public string? OldPositionType { get; set; }
[Comment("ตำแหน่งทางการบริหาร กำหนดเดิม")]
public Guid? OldPositionExecutiveId { get; set; }
public string? OldPositionExecutive { get; set; }
[Comment("ด้านทางบริหาร กำหนดเดิม")]
public Guid? OldPositionExecutiveSideId { get; set; }
public string? OldPositionExecutiveSide { get; set; }
[Comment("ตำแหน่งในสายงาน กำหนดเดิม")]
public Guid? OldPositionPathId { get; set; }
public string? OldPositionPath { get; set; }
[Comment("ด้าน/สาขา กำหนดเดิม")]
public Guid? OldPositionPathSideId { get; set; }
public string? OldPositionPathSide { get; set; }
[Comment("ระดับตำแหน่ง กำหนดเดิม")]
public Guid? OldPositionLevelId { get; set; }
public string? OldPositionLevel { get; set; }
[Comment("รหัสส่วนราชการ กำหนดใหม่")]
public Guid? NewOrganizationShortNameId { get; set; }
public string? NewOrganizationShortName { get; set; }
public string? NewGovernmentCode { get; set; }
[Comment("ชื่อหน่วยงาน กำหนดใหม่")]
public Guid? NewOrganizationOrganizationId { get; set; }
public string? NewOrganizationOrganization { get; set; }
[Comment("ตำแหน่งเลขที่ กำหนดใหม่")]
public Guid? NewPositionNumId { get; set; }
public string? NewPositionNum { get; set; }
[Comment("ประเภทตำแหน่ง กำหนดใหม่")]
public Guid? NewPositionTypeId { get; set; }
public string? NewPositionType { get; set; }
[Comment("ตำแหน่งทางการบริหาร กำหนดใหม่")]
public Guid? NewPositionExecutiveId { get; set; }
public string? NewPositionExecutive { get; set; }
[Comment("ด้านทางบริหาร กำหนดใหม่")]
public Guid? NewPositionExecutiveSideId { get; set; }
public string? NewPositionExecutiveSide { get; set; }
[Comment("ตำแหน่งในสายงาน กำหนดใหม่")]
public Guid? NewPositionPathId { get; set; }
public string? NewPositionPath { get; set; }
[Comment("ด้าน/สาขา กำหนดใหม่")]
public Guid? NewPositionPathSideId { get; set; }
public string? NewPositionPathSide { get; set; }
[Comment("ระดับตำแหน่ง กำหนดใหม่")]
public Guid? NewPositionLevelId { get; set; }
public string? NewPositionLevel { get; set; }
[Comment("สถานะการเปลี่ยนแปลง")]
public string? Status { get; set; }
[Comment("สังกัดที่ถือครอง")]
public Guid? ProfilePositionId { get; set; }
public Report2DetailHistory? Report2DetailHistory { get; set; }
}
}

View file

@ -17,6 +17,7 @@ using BMA.EHR.Report.Service;
using Microsoft.AspNetCore.Mvc.ApiExplorer; using Microsoft.AspNetCore.Mvc.ApiExplorer;
using BMA.EHR.Recruit.Service.Services; using BMA.EHR.Recruit.Service.Services;
using BMA.EHR.Profile.Service.Services; using BMA.EHR.Profile.Service.Services;
using BMA.EHR.Report.Service.Services;
var builder = WebApplication.CreateBuilder(args); var builder = WebApplication.CreateBuilder(args);
var issuer = builder.Configuration["Jwt:Issuer"]; var issuer = builder.Configuration["Jwt:Issuer"];
@ -96,6 +97,7 @@ builder.Services.AddCors(options => options.AddDefaultPolicy(builder =>
builder.Services.AddTransient<RecruitService>(); builder.Services.AddTransient<RecruitService>();
builder.Services.AddTransient<ProfileService>(); builder.Services.AddTransient<ProfileService>();
builder.Services.AddTransient<MinIOService>(); builder.Services.AddTransient<MinIOService>();
builder.Services.AddTransient<OrganizationReportService>();
// Add services to the container. // Add services to the container.
builder.Services.AddControllers(options => builder.Services.AddControllers(options =>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,404 @@
using Amazon.Internal;
using BMA.EHR.Extensions;
using BMA.EHR.Profile.Service.Services;
using BMA.EHR.Report.Service.Data;
using Microsoft.EntityFrameworkCore;
namespace BMA.EHR.Report.Service.Services
{
public class OrganizationReportService
{
#region " Fields "
private readonly EHRDbContext _context;
private readonly EHRDbContext _applicationDbContext;
private readonly ProfileService _profileService;
#endregion
#region " Constructor and Destructor "
public OrganizationReportService(EHRDbContext context,
EHRDbContext applicationDbContext,
ProfileService profileService)
{
_context = context;
_applicationDbContext = applicationDbContext;
_profileService = profileService;
}
#endregion
#region " Methods "
#region " Report Query "
public async Task<List<Account1ResultItem>> GetReport1Query(Guid ocId)
{
var ocIdList = _profileService.GetAllIdByRoot(ocId);
var RootOcName = _profileService.GetOrganizationNameFullPath(ocId, false, false);
var organizationPositions = await _context.OrganizationPositions.ToListAsync();
var positionMasters = await _context.PositionMasters.ToListAsync();
var organizations = await _context.Organizations.ToListAsync();
var organizationOrganizations = await _applicationDbContext.OrganizationOrganizations.ToListAsync();
var organizationShortNames = await _applicationDbContext.OrganizationShortNames.ToListAsync();
var positionNumbers = await _context.PositionNumbers.ToListAsync();
var executivePositions = await _applicationDbContext.PositionExecutives.ToListAsync();
var executivePositionSide = await _applicationDbContext.PositionExecutiveSides.ToListAsync();
var positionPaths = await _applicationDbContext.PositionPaths.ToListAsync();
var positionPathSides = await _applicationDbContext.PositionPathSides.ToListAsync();
var positionTypes = await _applicationDbContext.PositionTypes.ToListAsync();
var data = (from op in organizationPositions
join pm in positionMasters on op.PositionMasterId equals pm.Id
join oc in organizations on op.OrganizationId equals oc.Id
join oc_n in organizationOrganizations on oc.OrganizationOrganizationId equals oc_n.Id
join sn in organizationShortNames on oc.OrganizationShortNameId equals sn.Id
join pn in positionNumbers on op.PositionNumberId equals pn.Id
join pp in positionPaths on pm.PositionPathId equals pp.Id
join pps in positionPathSides on pm.PositionPathSideId equals pps.Id into pp_pps_join
from pp_pps in pp_pps_join.DefaultIfEmpty()
join ex_p in executivePositions on pm.PositionExecutiveId equals ex_p.Id into pm_exp_join
from pm_exp in pm_exp_join.DefaultIfEmpty()
join ex_p_s in executivePositionSide on pm.PositionExecutiveSideId equals ex_p_s.Id into pm_exp_s_join
from pm_exp_s in pm_exp_s_join.DefaultIfEmpty()
join pt in positionTypes on pm.PositionTypeId equals pt.Id
where ocIdList.Contains((Guid)op.OrganizationId)
select new Account1ResultItem
{
Id = op.Id,
RootOcId = ocId,
RootOcName = RootOcName,
OcId = op.OrganizationId.Value,
OcFullName = _profileService.FindOCFullPathWithNewLine(op.OrganizationId.Value, false, suppress: RootOcName),
OcName = _profileService.GetOrganizationName(op.OrganizationId.Value),
ShortName = sn.Name,
PositionNumber = pn.Name,
PositionLevel = _profileService.GetPositionLevel(pm.Id),
PositionName = pp.Name,
PositionSide = pp_pps == null ? "" : $"({pp_pps.Name})",
PositionExecutive = pm_exp == null ? "" : pm_exp.Name,
PositionExecutiveSide = pm_exp_s == null ? "" : $"({pm_exp_s.Name})",
Remark = op.PositionUserNote,
OcOrder = oc.OrganizationOrder.Value,
PositionType = pt.Name
}).ToList();
return data;
}
public async Task<List<Account2ResultItem>> GetReport2Query(Guid ocId)
{
try
{
var ocIdList = _profileService.GetAllIdByRoot(ocId);
var RootOcName = _profileService.GetOrganizationNameFullPath(ocId, false, false);
var organizationPositions = await _context.OrganizationPositions.ToListAsync();
var positionMasters = await _context.PositionMasters.ToListAsync();
var organizations = await _context.Organizations.ToListAsync();
var organizationOrganizations = await _applicationDbContext.OrganizationOrganizations.ToListAsync();
var organizationShortNames = await _applicationDbContext.OrganizationShortNames.ToListAsync();
var positionNumbers = await _context.PositionNumbers.ToListAsync();
var executivePositions = await _applicationDbContext.PositionExecutives.ToListAsync();
var executivePositionSide = await _applicationDbContext.PositionExecutiveSides.ToListAsync();
var positionPaths = await _applicationDbContext.PositionPaths.ToListAsync();
var positionPathSides = await _applicationDbContext.PositionPathSides.ToListAsync();
var positionTypes = await _applicationDbContext.PositionTypes.ToListAsync();
var profilePositions = await _context.ProfilePositions.ToListAsync();
var prefixes = await _context.Prefixes.ToListAsync();
var profiles = await _context.Profiles.ToListAsync();
var report2 = await _context.Report2s.ToListAsync();
var profile_data = (from p in _context.Profiles
join pf in _context.Prefixes on p.PrefixId equals pf.Id
select new
{
p.Id,
p.CitizenId,
Prefix = pf.Name,
p.FirstName,
p.LastName,
p.PositionLine,
p.Position,
p.PositionPathSide,
p.PositionType,
p.PositionLevel,
p.PositionExecutive,
p.PositionExecutiveSide,
p.PosNo,
p.OrganizationShortName,
Degree = p.Educations == null || p.Educations.Count == 0 ? "" : $"{p.Educations.OrderBy(x => x.StartDate).Last().Degree}\r\n({p.Educations.OrderBy(x => x.StartDate).Last().Field})",
Salary = p.Salaries == null || p.Salaries.Count == 0 ? 0 : p.Salaries.OrderBy(x => x.Date).Last().Amount,
SalaryPosition = p.Salaries == null || p.Salaries.Count == 0 ? 0 : p.Salaries.OrderBy(x => x.Date).Last().PositionSalaryAmount,
}).ToList();
var report2_data = (from org_pos in _context.OrganizationPositions.ToList()
join ppos in _context.ProfilePositions.ToList() on org_pos.Id equals ppos.OrganizationPositionId
join pf in profile_data.ToList() on ppos.ProfileId equals pf.Id
join r_raw in _context.Report2s.ToList() on ppos.Id equals r_raw.ProfilePositionId into r_join
from r in r_join.DefaultIfEmpty()
select new
{
//Id = r.Id,
ProfilePositionId = ppos.Id,
CitizenId = pf.CitizenId,
Prefix = pf.Prefix,
FirstName = pf.FirstName,
LastName = pf.LastName,
OrganizationName = r == null ? "" : r.OrganizationOrganization,
ShortName = r == null ? pf.OrganizationShortName : r.OrganizationShortName,
PositionNumber = r == null ? pf.PosNo : r.PositionNum,
PositionPath = r == null ? pf.Position : r.PositionPath,
PositionPathSide = r == null ? pf.PositionPathSide : r.PositionPathSide,
PositionType = r == null ? pf.PositionType : r.PositionType,
PositionLevel = r == null ? pf.PositionLevel : r.PositionLevel,
PositionExecutive = r == null ? pf.PositionExecutive : r.PositionExecutive,
PositionExecutiveSide = r == null ? pf.PositionExecutiveSide : r.PositionExecutiveSide,
OcId = org_pos.Id,
OrganizationPositionId = ppos.OrganizationPositionId,
Degree = pf.Degree,
Salary = pf.Salary,
SalaryPosition = pf.SalaryPosition,
}).ToList();
//var report2_data = (from r in _context.Report2s.ToList()
// join ppos in _context.ProfilePositions.ToList() on r.ProfilePositionId equals ppos.Id
// join org_pos in _context.OrganizationPositions.ToList() on ppos.OrganizationPositionId equals org_pos.Id
// join pf in profile_data.ToList() on ppos.ProfileId equals pf.Id
// select new
// {
// Id = r.Id,
// ProfilePositionId = r.ProfilePositionId,
// CitizenId = pf.CitizenId,
// Prefix = pf.Prefix,
// FirstName = pf.FirstName,
// LastName = pf.LastName,
// OrganizationName = r.OrganizationOrganization,
// ShortName = r.OrganizationShortName,
// PositionNumber = r.PositionNum,
// PositionPath = r.PositionPath,
// PositionPathSide = r.PositionPathSide,
// PositionType = r.PositionType,
// PositionLevel = r.PositionLevel,
// PositionExecutive = r.PositionExecutive,
// PositionExecutiveSide = r.PositionExecutiveSide,
// OcId = org_pos.Id,
// OrganizationPositionId = ppos.OrganizationPositionId,
// Degree = pf.Degree,
// Salary = pf.Salary,
// SalaryPosition = pf.SalaryPosition,
// }).ToList();
var data = (from op in organizationPositions
join pm in positionMasters on op.PositionMasterId equals pm.Id
join oc in organizations on op.OrganizationId equals oc.Id
join oc_n in organizationOrganizations on oc.OrganizationOrganizationId equals oc_n.Id
join sn in organizationShortNames on oc.OrganizationShortNameId equals sn.Id
join pn in positionNumbers on op.PositionNumberId equals pn.Id
join pp in positionPaths on pm.PositionPathId equals pp.Id
join pps in positionPathSides on pm.PositionPathSideId equals pps.Id into pp_pps_join
from pp_pps in pp_pps_join.DefaultIfEmpty()
join ex_p in executivePositions on pm.PositionExecutiveId equals ex_p.Id into pm_exp_join
from pm_exp in pm_exp_join.DefaultIfEmpty()
join ex_p_s in executivePositionSide on pm.PositionExecutiveSideId equals ex_p_s.Id into pm_exp_s_join
from pm_exp_s in pm_exp_s_join.DefaultIfEmpty()
join pt in positionTypes on pm.PositionTypeId equals pt.Id
join rp2 in report2_data.ToList() on op.Id equals rp2.OrganizationPositionId into rp2_join
from rp2_dt in rp2_join.DefaultIfEmpty()
where ocIdList.Contains((Guid)op.OrganizationId)
select new Account2ResultItem
{
Id = op.Id,
RootOcId = ocId,
RootOcName = RootOcName,
OcId = op.OrganizationId.Value,
OcFullName = _profileService.FindOCFullPathWithNewLine(op.OrganizationId.Value, false, suppress: RootOcName),
OcName = _profileService.GetOrganizationName(op.OrganizationId.Value),
ShortName = sn.Name,
PositionNumber = pn.Name,
PositionLevel = rp2_dt == null ? _profileService.GetPositionLevel(pm.Id) : rp2_dt.PositionLevel,
PositionName = pp.Name,
PositionSide = pp_pps == null ? "" : $"({pp_pps.Name})",
PositionExecutive = pm_exp == null ? "" : pm_exp.Name,
PositionExecutiveSide = pm_exp_s == null ? "" : $"({pm_exp_s.Name})",
Remark = op.PositionUserNote,
OcOrder = oc.OrganizationOrder.Value,
PositionType = pt.Name,
OcIdNew = rp2_dt == null ? op.OrganizationId.Value : rp2_dt.OcId,
OcFullNameNew = _profileService.FindOCFullPathWithNewLine(op.OrganizationId.Value, false, suppress: RootOcName),
OcNameNew = rp2_dt == null ? _profileService.GetOrganizationName(op.OrganizationId.Value) : _profileService.GetOrganizationName(rp2_dt.OcId),
ShortNameNew = rp2_dt == null ? "" : rp2_dt.ShortName,
PositionNumberNew = rp2_dt == null ? "" : rp2_dt.PositionNumber,
PositionLevelNew = rp2_dt == null ? "" : rp2_dt.PositionLevel,
PositionNameNew = rp2_dt == null ? "" : rp2_dt.PositionPath,
PositionSideNew = rp2_dt == null ? "" : rp2_dt.PositionPathSide,
PositionExecutiveNew = rp2_dt == null ? "" : rp2_dt.PositionExecutive,
PositionExecutiveSideNew = rp2_dt == null ? "" : rp2_dt.PositionExecutiveSide,
PositionTypeNew = rp2_dt == null ? "" : rp2_dt.PositionType,
Prefix = rp2_dt == null ? "" : rp2_dt.Prefix,
FirstName = rp2_dt == null ? "" : rp2_dt.FirstName,
LastName = rp2_dt == null ? "" : rp2_dt.LastName,
Degree = rp2_dt == null ? "" : rp2_dt.Degree,
Salary = rp2_dt == null ? 0 : (int)rp2_dt.Salary.Value,
SalaryPosition = rp2_dt == null ? 0 : (int)rp2_dt.SalaryPosition.Value,
}).ToList();
return data;
}
catch
{
throw;
}
}
#endregion
#endregion
}
public class Account1ResultItem
{
public Guid Id { get; set; }
public Guid RootOcId { get; set; }
public string RootOcName { get; set; } = string.Empty;
public Guid OcId { get; set; }
public string OcFullName { get; set; } = string.Empty;
public string OcName { get; set; } = string.Empty;
public string ShortName { get; set; } = string.Empty;
public string PositionNumber { get; set; } = string.Empty;
public string PositionName { get; set; } = string.Empty;
public string PositionSide { get; set; } = string.Empty;
public string PositionLevel { get; set; } = string.Empty;
public string PositionExecutive { get; set; } = string.Empty;
public string PositionExecutiveSide { get; set; } = string.Empty;
public string Remark { get; set; } = string.Empty;
public int OcOrder { get; set; } = 0;
public int PositionNumberInt { get; set; } = 0;
public string PositionType { get; set; } = string.Empty;
}
public class Account2ResultItem
{
public Guid Id { get; set; }
public Guid RootOcId { get; set; }
public string RootOcName { get; set; } = string.Empty;
public Guid OcId { get; set; }
public string OcFullName { get; set; } = string.Empty;
public string OcName { get; set; } = string.Empty;
public string ShortName { get; set; } = string.Empty;
public string PositionNumber { get; set; } = string.Empty;
public string PositionName { get; set; } = string.Empty;
public string PositionSide { get; set; } = string.Empty;
public string PositionLevel { get; set; } = string.Empty;
public string PositionExecutive { get; set; } = string.Empty;
public string PositionExecutiveSide { get; set; } = string.Empty;
public string Remark { get; set; } = string.Empty;
public int OcOrder { get; set; } = 0;
public int PositionNumberInt { get; set; } = 0;
public string PositionType { get; set; } = string.Empty;
// new
public Guid RootOcIdNew { get; set; }
public string RootOcNameNew { get; set; } = string.Empty;
public Guid OcIdNew { get; set; }
public string OcFullNameNew { get; set; } = string.Empty;
public string OcNameNew { get; set; } = string.Empty;
public string ShortNameNew { get; set; } = string.Empty;
public string PositionNumberNew { get; set; } = string.Empty;
public string PositionNameNew { get; set; } = string.Empty;
public string PositionSideNew { get; set; } = string.Empty;
public string PositionLevelNew { get; set; } = string.Empty;
public string PositionExecutiveNew { get; set; } = string.Empty;
public string PositionExecutiveSideNew { get; set; } = string.Empty;
public int PositionNumberIntNew { get; set; } = 0;
public string PositionTypeNew { get; set; } = string.Empty;
// name
public string Prefix { get; set; } = string.Empty;
public string FirstName { get; set; } = string.Empty;
public string LastName { get; set; } = string.Empty;
public string Degree { get; set; } = string.Empty;
public int Salary { get; set; } = 0;
public int SalaryPosition { get; set; } = 0;
public string FullName { get; set; } = string.Empty;
}
public class OrganizationItem
{
public Guid Id { get; set; }
public string Name { get; set; } = string.Empty;
public int Order { get; set; } = 0;
}
}

View file

@ -1,4 +1,5 @@
using BMA.EHR.Profile.Service.Models; using Amazon.S3.Model.Internal.MarshallTransformations;
using BMA.EHR.Profile.Service.Models;
using BMA.EHR.Report.Service.Data; using BMA.EHR.Report.Service.Data;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
@ -115,6 +116,33 @@ namespace BMA.EHR.Profile.Service.Services
} }
} }
public string GetOrganizationName(Guid id)
{
try
{
var organizations = _context.Organizations.ToList();
var organizationOrganizations = _context.OrganizationOrganizations.ToList();
var oc = (from o in organizations
join oc_name in organizationOrganizations on o.OrganizationOrganizationId equals oc_name.Id
select new
{
Id = o.Id,
Name = oc_name.Name,
//o.IsActive,
o.ParentId,
IsRoot = o.ParentId == null
}).FirstOrDefault(x => x.Id == id);
return oc == null ? "" : oc.Name;
}
catch
{
throw;
}
}
public string GetOrganizationNameFullPath(Guid id, bool showRoot = false, bool descending = false) public string GetOrganizationNameFullPath(Guid id, bool showRoot = false, bool descending = false)
{ {
try try

View file

@ -15,7 +15,7 @@
"ConnectionStrings": { "ConnectionStrings": {
"MongoConnection": "mongodb://admin:adminVM123@127.0.0.1:27017", "MongoConnection": "mongodb://admin:adminVM123@127.0.0.1:27017",
"RecruitConnection": "server=127.0.0.1;user=root;password=P@ssw0rd;port=3308;database=bma_recruit;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;", "RecruitConnection": "server=127.0.0.1;user=root;password=P@ssw0rd;port=3308;database=bma_recruit;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;",
"EHRConnection": "server=192.168.1.9;user=root;password=adminVM123;port=3306;database=bma_ehr;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;", "EHRConnection": "server=127.0.0.1;user=root;password=P@ssw0rd;port=3308;database=bma_ehr;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;",
"ExamConnection": "server=127.0.0.1;user=root;password=P@ssw0rd;port=3308;database=bma_ehr_exam;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;" "ExamConnection": "server=127.0.0.1;user=root;password=P@ssw0rd;port=3308;database=bma_ehr_exam;Convert Zero Datetime=True;Allow User Variables=true;Pooling=True;"
}, },
"Jwt": { "Jwt": {