diff --git a/Controllers/ProfileReportController.cs b/Controllers/ProfileReportController.cs index d24f5b5..78156eb 100644 --- a/Controllers/ProfileReportController.cs +++ b/Controllers/ProfileReportController.cs @@ -519,10 +519,10 @@ namespace BMA.EHR.Report.Service.Controllers OcFullPath = _profileService.GetOrganizationNameFullPath(p.OcId.Value, false, false), }).FirstOrDefault(); - var salary = (from s in _context.ProfileSalaries + var salary = (from s in _context.ProfileSalaries.Include(x => x.PositionLevel) 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_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 @@ -531,11 +531,11 @@ namespace BMA.EHR.Report.Service.Controllers 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, + Rank = s.PositionLevel == null ? null : s.PositionLevel.Name, Salary = s.Amount == null ? "" : s.Amount.ToString().ToInteger().ToNumericText(), RefAll = s.SalaryRef, PositionType = pos_type.Name, - PositionLevel = pos_lv.Name, + PositionLevel = s.PositionLevel == null ? null : s.PositionLevel.Name, PositionAmount = s.PositionSalaryAmount == null ? "" : s.PositionSalaryAmount.Value.ToString().ToInteger().ToNumericText(), FullName = profile2.FullName, OcFullPath = profile2.OcFullPath @@ -899,10 +899,10 @@ namespace BMA.EHR.Report.Service.Controllers OcFullPath = _profileService.GetOrganizationNameFullPath(p.OcId.Value, false, false), }).FirstOrDefault(); - var salary = (from s in _context.ProfileSalaries + var salary = (from s in _context.ProfileSalaries.Include(x => x.PositionLevel) 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_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 @@ -911,11 +911,11 @@ namespace BMA.EHR.Report.Service.Controllers 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, + Rank = s.PositionLevel == null ? null : s.PositionLevel.Name, Salary = s.Amount == null ? "" : s.Amount.ToString().ToInteger().ToNumericText(), RefAll = s.SalaryRef, PositionType = pos_type.Name, - PositionLevel = pos_lv.Name, + PositionLevel = s.PositionLevel == null ? null : s.PositionLevel.Name, PositionAmount = s.PositionSalaryAmount == null ? "" : s.PositionSalaryAmount.Value.ToString().ToInteger().ToNumericText(), FullName = profile2.FullName, OcFullPath = profile2.OcFullPath diff --git a/Models/AvailablePositionLevelEntity.cs b/Models/AvailablePositionLevelEntity.cs index a37e90c..41cde42 100644 --- a/Models/AvailablePositionLevelEntity.cs +++ b/Models/AvailablePositionLevelEntity.cs @@ -15,10 +15,6 @@ namespace BMA.EHR.Organization.Service.Models public Guid? PositionMasterId { get; set; } [Column(Order = 3), Comment("PositionLevelId")] - public Guid? PositionLevelId { get; set; } - - - - + public PositionLevel? PositionLevel { get; set; } } } diff --git a/Models/HR/Profile.cs b/Models/HR/Profile.cs index 8447557..547e4b7 100644 --- a/Models/HR/Profile.cs +++ b/Models/HR/Profile.cs @@ -1,4 +1,5 @@ using BMA.EHR.MetaData.Service.Models; +using BMA.EHR.Organization.Service.Models; using BMA.EHR.Recruit.Service.Models.Documents; using System.ComponentModel.DataAnnotations; @@ -137,17 +138,20 @@ namespace BMA.EHR.Profile.Service.Models.HR public Guid? OrganizationOrganizationId { get; set; } public string? OrganizationOrganization { get; set; } public Guid? PositionId { get; set; } - public string? Position { get; set; } - public Guid? PosNoId { get; set; } - public string? PosNo { get; set; } + // public string? Position { get; set; } + public PositionPath? Position { get; set; } + // public Guid? PosNoId { get; set; } + public PositionNumberEntity? PosNo { get; set; } + // public string? PosNo { get; set; } public Guid? PositionLineId { get; set; } public string? PositionLine { get; set; } public Guid? PositionPathSideId { get; set; } public string? PositionPathSide { get; set; } - public Guid? PositionTypeId { get; set; } - public string? PositionType { get; set; } - public Guid? PositionLevelId { get; set; } - public string? PositionLevel { get; set; } + // public Guid? PositionTypeId { get; set; } + // public string? PositionType { get; set; } + public PositionType? PositionType { get; set; } + // public Guid? PositionLevelId { get; set; } + public PositionLevel? PositionLevel { get; set; } public Guid? PositionExecutiveId { get; set; } public string? PositionExecutive { get; set; } public Guid? PositionExecutiveSideId { get; set; } diff --git a/Models/HR/ProfileSalary.cs b/Models/HR/ProfileSalary.cs index 253bb8b..d7b8d0c 100644 --- a/Models/HR/ProfileSalary.cs +++ b/Models/HR/ProfileSalary.cs @@ -14,7 +14,7 @@ namespace BMA.EHR.Profile.Service.Models.HR public Guid? PositionLineId { get; set; } public Guid? PositionPathSideId { get; set; } public Guid? PositionTypeId { get; set; } - public Guid? PositionLevelId { get; set; } + public PositionLevel? PositionLevel { get; set; } public Guid? PositionExecutiveId { get; set; } public Guid? PositionExecutiveSideId { get; set; } public string? SalaryClass { get; set; } diff --git a/Models/PositionMasterEntity.cs b/Models/PositionMasterEntity.cs index fac77be..c05811f 100644 --- a/Models/PositionMasterEntity.cs +++ b/Models/PositionMasterEntity.cs @@ -24,7 +24,7 @@ namespace BMA.EHR.Organization.Service.Models //public PositionType? PositionType_PositionTypeId { get; set; } [Column(Order = 4), Comment("PositionTypeId")] - public Guid? PositionTypeId { get; set; } + public PositionType? PositionType { get; set; } //[ForeignKey("PositionExecutiveId")] //public PositionExecutive? PositionExecutive_PositionExecutiveId { get; set; } diff --git a/Models/Report2/Report2History.cs b/Models/Report2/Report2History.cs index 28d1bc0..73e9736 100644 --- a/Models/Report2/Report2History.cs +++ b/Models/Report2/Report2History.cs @@ -32,7 +32,7 @@ namespace BMA.EHR.Organization.Service.Models.Report2 public string? OldPositionNum { get; set; } [Comment("ประเภทตำแหน่ง กำหนดเดิม")] - public Guid? OldPositionTypeId { get; set; } + // public Guid? OldPositionTypeId { get; set; } public string? OldPositionType { get; set; } [Comment("ตำแหน่งทางการบริหาร กำหนดเดิม")] @@ -52,7 +52,7 @@ namespace BMA.EHR.Organization.Service.Models.Report2 public string? OldPositionPathSide { get; set; } [Comment("ระดับตำแหน่ง กำหนดเดิม")] - public Guid? OldPositionLevelId { get; set; } + // public Guid? OldPositionLevelId { get; set; } public string? OldPositionLevel { get; set; } [Comment("รหัสส่วนราชการ กำหนดใหม่")] diff --git a/Services/OrganizationReportService.cs b/Services/OrganizationReportService.cs index 3a052cd..5723c51 100644 --- a/Services/OrganizationReportService.cs +++ b/Services/OrganizationReportService.cs @@ -224,10 +224,11 @@ namespace BMA.EHR.Report.Service.Services orgWithOrder = await GetAllOcItemByRootAsync(ocId); var organizationPositions = await _context.OrganizationPositions - .Select(x => new - { - x.Id, x.OrganizationId, - x.PositionUserNote, + .Select(x => new + { + x.Id, + x.OrganizationId, + x.PositionUserNote, x.PositionMasterId, x.PositionNumberId }).ToListAsync(); @@ -240,11 +241,11 @@ namespace BMA.EHR.Report.Service.Services x.PositionPathSideId, x.PositionExecutiveId, x.PositionExecutiveSideId, - x.PositionTypeId, + PositionTypeId = x.PositionType == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : x.PositionType.Id, x.PositionPathSideObject, x.PositionExecutiveSideObject, x.IsDirector - }) + }) .ToListAsync(); var organizations = await _context.Organizations @@ -352,7 +353,7 @@ namespace BMA.EHR.Report.Service.Services x.PositionPathSideId, x.PositionExecutiveId, x.PositionExecutiveSideId, - x.PositionTypeId, + PositionTypeId = x.PositionType == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : x.PositionType.Id, x.PositionPathSideObject, x.PositionExecutiveSideObject, x.IsDirector, @@ -360,13 +361,13 @@ namespace BMA.EHR.Report.Service.Services }) .ToListAsync(); - var profiles = await _applicationDbContext.Profiles.ToListAsync(); + var profiles = await _applicationDbContext.Profiles.Include(x => x.PositionLevel).ToListAsync(); var organizationShortNames = await _applicationDbContext.OrganizationShortNames.ToListAsync(); var report2s = await _context.Report2s.ToListAsync(); var positionPathSides = await _applicationDbContext.PositionPathSides.ToListAsync(); var positionExecutiveSides = await _applicationDbContext.PositionExecutiveSides.ToListAsync(); var positionExecutives = await _applicationDbContext.PositionExecutives.ToListAsync(); - + var orgData = await _applicationDbContext.Organizations .Select(x => new { @@ -415,7 +416,7 @@ namespace BMA.EHR.Report.Service.Services from pnNew in pnNewGroup.DefaultIfEmpty() join ppNew in positionPaths on rp == null ? pm?.PositionPathId : rp?.PositionPathId equals ppNew?.Id into ppNewGroup from ppNew in ppNewGroup.DefaultIfEmpty() - join plNew in positionLevels on rp == null ? p?.PositionLevelId : rp?.PositionLevelId equals plNew?.Id into plNewGroup + join plNew in positionLevels on rp == null ? (p?.PositionLevel == null ? null : p?.PositionLevel.Id) : rp?.PositionLevelId equals plNew?.Id into plNewGroup from plNew in plNewGroup.DefaultIfEmpty() join psNew in positionPathSides on rp == null ? pm?.PositionPathSideId : rp?.PositionPathSideId equals psNew?.Id into psNewGroup @@ -440,7 +441,7 @@ namespace BMA.EHR.Report.Service.Services LastName = p == null ? null : p.LastName, PositionNumberOld = rp == null ? (pn == null ? null : pn.Name) : rp.PositionNumOld, PositionPathOld = rp == null ? (pPath == null ? null : pPath.Name) : rp.PositionPathOld, - PositionLevelOld = rp == null ? (p == null ? null : p.PositionLevel) : rp.PositionLevelOld, + PositionLevelOld = rp == null ? (p == null ? null : p.PositionLevel?.Name) : rp.PositionLevelOld, PositionNumberIdNew = pnNew == null ? Guid.Parse("00000000-0000-0000-0000-000000000000") : pnNew.Id, PositionNumberNew = pnNew == null ? null : pnNew.Name, PositionPathNew = ppNew == null ? null : ppNew.Name, @@ -546,7 +547,7 @@ namespace BMA.EHR.Report.Service.Services var RootOcName = _profileService.GetOrganizationNameFullPath(ocId, false, false); var organizationPositions = await _context.OrganizationPositions.ToListAsync(); - var positionMasters = await _context.PositionMasters.ToListAsync(); + var positionMasters = await _context.PositionMasters.Include(x => x.PositionType).ToListAsync(); var organizations = await _context.Organizations.ToListAsync(); var organizationOrganizations = await _applicationDbContext.OrganizationOrganizations.ToListAsync(); var organizationShortNames = await _applicationDbContext.OrganizationShortNames.ToListAsync(); @@ -558,7 +559,7 @@ namespace BMA.EHR.Report.Service.Services 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 profiles = await _context.Profiles.Include(x => x.PositionLevel).Include(x => x.PosNo).ToListAsync(); var report2 = await _context.Report2s.ToListAsync(); var profile_data = (from p in profiles @@ -575,10 +576,10 @@ namespace BMA.EHR.Report.Service.Services p.Position, p.PositionPathSide, p.PositionType, - p.PositionLevel, + PositionLevel = p.PositionLevel?.Name, p.PositionExecutive, p.PositionExecutiveSide, - p.PosNo, + PosNo = p.PosNo?.Name, 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, @@ -658,9 +659,9 @@ namespace BMA.EHR.Report.Service.Services ShortName = r == null ? pf.OrganizationShortName : GetShortNameFromPosNo(r.PositionNum), PositionNumber = r == null ? pf.PosNo : r.PositionNum, PositionNumberInt = r == null ? GetPosnoIntFromPosNo(pf.PosNo) : GetPosnoIntFromPosNo(r.PositionNum), - PositionPath = r == null ? pf.Position : r.PositionPath, + PositionPath = r == null ? pf.Position?.Name : r.PositionPath, PositionPathSide = r == null ? pf.PositionPathSide : r.PositionPathSide, - PositionType = r == null ? pf.PositionType : r.PositionType, + PositionType = r == null ? pf.PositionType?.Name : r.PositionType, PositionLevel = r == null ? pf.PositionLevel : r.PositionLevel, PositionExecutive = r == null ? pf.PositionExecutive : r.PositionExecutive, PositionExecutiveSide = r == null ? pf.PositionExecutiveSide : r.PositionExecutiveSide, @@ -788,7 +789,7 @@ namespace BMA.EHR.Report.Service.Services 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 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() @@ -812,7 +813,7 @@ namespace BMA.EHR.Report.Service.Services PositionExecutiveSide = pm.PositionExecutiveSideObject is null ? "" : Newtonsoft.Json.JsonConvert.DeserializeObject>(pm.PositionExecutiveSideObject).GetNameList(), Remark = op.PositionUserNote, OcOrder = oc.OrganizationOrder.Value.ToString(), - PositionType = pt.Name, + PositionType = pm.PositionType?.Name, OcIdNew = rp2_dt == null ? op.OrganizationId.Value : rp2_dt.OcId, diff --git a/Services/ProfileService.cs b/Services/ProfileService.cs index d0ad75f..e42f8be 100644 --- a/Services/ProfileService.cs +++ b/Services/ProfileService.cs @@ -409,10 +409,11 @@ namespace BMA.EHR.Profile.Service.Services { try { - var level = (from alv in _context.AvailablePositionLevels - join lv in _context.PositionLevels on alv.PositionLevelId equals lv.Id + var level = (from alv in _context.AvailablePositionLevels.Include(x => x.PositionLevel) + // join lv in _context.PositionLevels on alv.PositionLevelId equals lv.Id where alv.PositionMasterId == id - select lv.Name).ToList(); + where alv.PositionLevel != null + select alv.PositionLevel.Name).ToList(); var count = 0;