From b88727a0ee93686ae421258a66ceafcdc63229a9 Mon Sep 17 00:00:00 2001 From: Kittapath Date: Tue, 13 Jun 2023 21:04:36 +0700 Subject: [PATCH] =?UTF-8?q?=E0=B9=80=E0=B8=9E=E0=B8=B4=E0=B9=88=E0=B8=A1?= =?UTF-8?q?=E0=B8=84=E0=B8=B8=E0=B8=93=E0=B8=A7=E0=B8=B8=E0=B8=92=E0=B8=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Models/PositionMasterEntity.cs | 9 +- Services/OrganizationReportService.cs | 706 +++++++++++++------------- 2 files changed, 359 insertions(+), 356 deletions(-) diff --git a/Models/PositionMasterEntity.cs b/Models/PositionMasterEntity.cs index 65d5857..d4a4c93 100644 --- a/Models/PositionMasterEntity.cs +++ b/Models/PositionMasterEntity.cs @@ -65,12 +65,15 @@ namespace BMA.EHR.Organization.Service.Models [Column(Order = 14), Comment("IsDirector")] public bool? IsDirector { get; set; } + [Column(Order = 15), Comment("คุณวุฒิ")] + public string? Qualification { get; set; } + public string? PositionPathSideObject { get; set; } - public string? PositionExecutiveSideObject { get; set; } + public string? PositionExecutiveSideObject { get; set; } - //public List AvailablePositionLevels { get; } = new(); - //public List PositionMasterHistorys { get; } = new(); + //public List AvailablePositionLevels { get; } = new(); + //public List PositionMasterHistorys { get; } = new(); } } diff --git a/Services/OrganizationReportService.cs b/Services/OrganizationReportService.cs index 838def5..30d4550 100644 --- a/Services/OrganizationReportService.cs +++ b/Services/OrganizationReportService.cs @@ -7,423 +7,423 @@ 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?> GetOrganizationTypes(string type) - { - var Organizations = await _context.Organizations.ToListAsync(); - - var OrganizationOrganizations = await _context.OrganizationOrganizations.ToListAsync(); - var OrganizationTypes = await _context.OrganizationTypes.FirstOrDefaultAsync(x => x.Name == type); - - if (OrganizationTypes == null) - { - throw new Exception("Invalid Organization type."); - } - - var dataType = (from o in Organizations - join os in OrganizationOrganizations on o.OrganizationOrganizationId equals os.Id into os1 - from os in os1.DefaultIfEmpty() - where o.OrganizationTypeId == OrganizationTypes.Id && os != null - orderby o.OrganizationOrder - select new - { - organizationId = o.Id, - organizationName = os.Name - }).ToList(); - - return dataType; - } - - public async Task> 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}\r\n", - PositionSide = pm.PositionPathSideObject is null ? "" : Newtonsoft.Json.JsonConvert.DeserializeObject>(pm.PositionPathSideObject).GetNameList(), - PositionExecutive = pm_exp == null ? "" : $"{pm_exp.Name}\r\n", - PositionExecutiveSide = pm.PositionExecutiveSideObject is null ? "" : Newtonsoft.Json.JsonConvert.DeserializeObject>(pm.PositionExecutiveSideObject).GetNameList(), - Remark = op.PositionUserNote, - OcOrder = oc.OrganizationOrder.Value, - PositionType = pt.Name - }).ToList(); - - return data; - } - - public async Task> 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}\r\n", - PositionSide = pm.PositionPathSideObject is null ? "" : Newtonsoft.Json.JsonConvert.DeserializeObject>(pm.PositionPathSideObject).GetNameList(), - PositionExecutive = pm_exp == null ? "" : $"{pm_exp.Name}\r\n", - PositionExecutiveSide = pm.PositionExecutiveSideObject is null ? "" : Newtonsoft.Json.JsonConvert.DeserializeObject>(pm.PositionExecutiveSideObject).GetNameList(), - 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, + 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?> GetOrganizationTypes(string type) + { + var Organizations = await _context.Organizations.ToListAsync(); + + var OrganizationOrganizations = await _context.OrganizationOrganizations.ToListAsync(); + var OrganizationTypes = await _context.OrganizationTypes.FirstOrDefaultAsync(x => x.Name == type); + + if (OrganizationTypes == null) + { + throw new Exception("Invalid Organization type."); + } + + var dataType = (from o in Organizations + join os in OrganizationOrganizations on o.OrganizationOrganizationId equals os.Id into os1 + from os in os1.DefaultIfEmpty() + where o.OrganizationTypeId == OrganizationTypes.Id && os != null + orderby o.OrganizationOrder + select new + { + organizationId = o.Id, + organizationName = os.Name + }).ToList(); + + return dataType; + } + + public async Task> 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}\r\n", + PositionSide = pm.PositionPathSideObject is null ? "" : Newtonsoft.Json.JsonConvert.DeserializeObject>(pm.PositionPathSideObject).GetNameList(), + PositionExecutive = pm_exp == null ? "" : $"{pm_exp.Name}\r\n", + PositionExecutiveSide = pm.PositionExecutiveSideObject is null ? "" : Newtonsoft.Json.JsonConvert.DeserializeObject>(pm.PositionExecutiveSideObject).GetNameList(), + Remark = op.PositionUserNote, + OcOrder = oc.OrganizationOrder.Value, + PositionType = pt.Name + }).ToList(); + + return data; + } + + public async Task> 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}\r\n", + PositionSide = pm.PositionPathSideObject is null ? "" : Newtonsoft.Json.JsonConvert.DeserializeObject>(pm.PositionPathSideObject).GetNameList(), + PositionExecutive = pm_exp == null ? "" : $"{pm_exp.Name}\r\n", + PositionExecutiveSide = pm.PositionExecutiveSideObject is null ? "" : Newtonsoft.Json.JsonConvert.DeserializeObject>(pm.PositionExecutiveSideObject).GetNameList(), + 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, + 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 ? (pm == null ? "" : pm.Qualification) : rp2_dt.Degree, - Salary = rp2_dt == null ? 0 : (int)rp2_dt.Salary.Value, - SalaryPosition = rp2_dt == null ? 0 : (int)rp2_dt.SalaryPosition.Value, + Salary = rp2_dt == null ? 0 : (int)rp2_dt.Salary.Value, + SalaryPosition = rp2_dt == null ? 0 : (int)rp2_dt.SalaryPosition.Value, - }).ToList(); + }).ToList(); - return data; - } - catch - { - throw; - } - } + return data; + } + catch + { + throw; + } + } - #endregion + #endregion - #endregion - } + #endregion + } - public class Account1ResultItem - { - public Guid Id { get; set; } + public class Account1ResultItem + { + public Guid Id { get; set; } - public Guid RootOcId { get; set; } + public Guid RootOcId { get; set; } - public string RootOcName { get; set; } = string.Empty; + public string RootOcName { get; set; } = string.Empty; - public Guid OcId { get; set; } + public Guid OcId { get; set; } - public string OcFullName { get; set; } = string.Empty; + public string OcFullName { get; set; } = string.Empty; - public string OcName { get; set; } = string.Empty; + public string OcName { get; set; } = string.Empty; - public string ShortName { get; set; } = string.Empty; + public string ShortName { get; set; } = string.Empty; - public string PositionNumber { get; set; } = string.Empty; + public string PositionNumber { get; set; } = string.Empty; - public string PositionName { get; set; } = string.Empty; + public string PositionName { get; set; } = string.Empty; - public string PositionSide { get; set; } = string.Empty; + public string PositionSide { get; set; } = string.Empty; - public string PositionLevel { get; set; } = string.Empty; + public string PositionLevel { get; set; } = string.Empty; - public string PositionExecutive { get; set; } = string.Empty; + public string PositionExecutive { get; set; } = string.Empty; - public string PositionExecutiveSide { get; set; } = string.Empty; + public string PositionExecutiveSide { get; set; } = string.Empty; - public string Remark { get; set; } = string.Empty; + public string Remark { get; set; } = string.Empty; - public int OcOrder { get; set; } = 0; + public int OcOrder { get; set; } = 0; - public int PositionNumberInt { get; set; } = 0; + public int PositionNumberInt { get; set; } = 0; - public string PositionType { get; set; } = string.Empty; - } + public string PositionType { get; set; } = string.Empty; + } - public class Account2ResultItem - { - public Guid Id { get; set; } + public class Account2ResultItem + { + public Guid Id { get; set; } - public Guid RootOcId { get; set; } + public Guid RootOcId { get; set; } - public string RootOcName { get; set; } = string.Empty; + public string RootOcName { get; set; } = string.Empty; - public Guid OcId { get; set; } + public Guid OcId { get; set; } - public string OcFullName { get; set; } = string.Empty; + public string OcFullName { get; set; } = string.Empty; - public string OcName { get; set; } = string.Empty; + public string OcName { get; set; } = string.Empty; - public string ShortName { get; set; } = string.Empty; + public string ShortName { get; set; } = string.Empty; - public string PositionNumber { get; set; } = string.Empty; + public string PositionNumber { get; set; } = string.Empty; - public string PositionName { get; set; } = string.Empty; + public string PositionName { get; set; } = string.Empty; - public string PositionSide { get; set; } = string.Empty; + public string PositionSide { get; set; } = string.Empty; - public string PositionLevel { get; set; } = string.Empty; + public string PositionLevel { get; set; } = string.Empty; - public string PositionExecutive { get; set; } = string.Empty; + public string PositionExecutive { get; set; } = string.Empty; - public string PositionExecutiveSide { get; set; } = string.Empty; + public string PositionExecutiveSide { get; set; } = string.Empty; - public string Remark { get; set; } = string.Empty; + public string Remark { get; set; } = string.Empty; - public int OcOrder { get; set; } = 0; + public int OcOrder { get; set; } = 0; - public int PositionNumberInt { get; set; } = 0; + public int PositionNumberInt { get; set; } = 0; - public string PositionType { get; set; } = string.Empty; + public string PositionType { get; set; } = string.Empty; - // new - public Guid RootOcIdNew { get; set; } + // new + public Guid RootOcIdNew { get; set; } - public string RootOcNameNew { get; set; } = string.Empty; + public string RootOcNameNew { get; set; } = string.Empty; - public Guid OcIdNew { get; set; } + public Guid OcIdNew { get; set; } - public string OcFullNameNew { get; set; } = string.Empty; + public string OcFullNameNew { get; set; } = string.Empty; - public string OcNameNew { get; set; } = string.Empty; + public string OcNameNew { get; set; } = string.Empty; - public string ShortNameNew { get; set; } = string.Empty; + public string ShortNameNew { get; set; } = string.Empty; - public string PositionNumberNew { get; set; } = string.Empty; + public string PositionNumberNew { get; set; } = string.Empty; - public string PositionNameNew { get; set; } = string.Empty; + public string PositionNameNew { get; set; } = string.Empty; - public string PositionSideNew { get; set; } = string.Empty; + public string PositionSideNew { get; set; } = string.Empty; - public string PositionLevelNew { get; set; } = string.Empty; + public string PositionLevelNew { get; set; } = string.Empty; - public string PositionExecutiveNew { get; set; } = string.Empty; + public string PositionExecutiveNew { get; set; } = string.Empty; - public string PositionExecutiveSideNew { get; set; } = string.Empty; + public string PositionExecutiveSideNew { get; set; } = string.Empty; - public int PositionNumberIntNew { get; set; } = 0; + public int PositionNumberIntNew { get; set; } = 0; - public string PositionTypeNew { get; set; } = string.Empty; + public string PositionTypeNew { get; set; } = string.Empty; - // name - public string Prefix { get; set; } = string.Empty; + // name + public string Prefix { get; set; } = string.Empty; - public string FirstName { get; set; } = string.Empty; + public string FirstName { get; set; } = string.Empty; - public string LastName { get; set; } = string.Empty; + public string LastName { get; set; } = string.Empty; - public string Degree { get; set; } = string.Empty; + public string Degree { get; set; } = string.Empty; - public int Salary { get; set; } = 0; + public int Salary { get; set; } = 0; - public int SalaryPosition { get; set; } = 0; + public int SalaryPosition { get; set; } = 0; - public string FullName { get; set; } = string.Empty; + public string FullName { get; set; } = string.Empty; - } + } - public class OrganizationItem - { - public Guid Id { get; set; } + public class OrganizationItem + { + public Guid Id { get; set; } - public string Name { get; set; } = string.Empty; + public string Name { get; set; } = string.Empty; - public int Order { get; set; } = 0; - } + public int Order { get; set; } = 0; + } }