From 9ff9b0be1840b62551c9423ae07dca4bfb98735b Mon Sep 17 00:00:00 2001 From: SamSys Date: Tue, 6 Jan 2026 17:33:40 +0330 Subject: [PATCH] add salary list --- .../IClassificationGroupSalariesRepository.cs | 11 +++++ .../IClassificationSchemeApplication.cs | 7 +++ .../ClassificationSchemeApplication.cs | 10 ++++- .../ClassificationGroupSalariesRepository.cs | 44 +++++++++++++++++++ .../ClassificationSchemeController.cs | 19 ++++++++ 5 files changed, 90 insertions(+), 1 deletion(-) diff --git a/Company.Domain/ClassificationSchemeAgg/IClassificationGroupSalariesRepository.cs b/Company.Domain/ClassificationSchemeAgg/IClassificationGroupSalariesRepository.cs index fc026a2c..a1d4ed31 100644 --- a/Company.Domain/ClassificationSchemeAgg/IClassificationGroupSalariesRepository.cs +++ b/Company.Domain/ClassificationSchemeAgg/IClassificationGroupSalariesRepository.cs @@ -30,5 +30,16 @@ public interface IClassificationGroupSalariesRepository : IRepository /// Task GetSalariesTabData(long schemeId); + + + #region ForApi + /// + /// لیست دستمزدها بر اساس تاریخ و سال برای تب دستمزدها + /// + /// + /// + Task> GetSalaryList(long schemeId); + + #endregion } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs b/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs index 4fc1d1a0..35fd1596 100644 --- a/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs +++ b/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs @@ -232,6 +232,13 @@ public interface IClassificationSchemeApplication /// /// Task SaveJobsToGroup(AddOrEditJobInGroupDto command); + + /// + /// لیست دستمزدها بر اساس تاریخ و سال برای تب دستمزدها + /// + /// + /// + Task> GetSalaryList(long schemeId); #endregion } \ No newline at end of file diff --git a/CompanyManagment.Application/ClassificationSchemeApplication.cs b/CompanyManagment.Application/ClassificationSchemeApplication.cs index 137594a8..7089d810 100644 --- a/CompanyManagment.Application/ClassificationSchemeApplication.cs +++ b/CompanyManagment.Application/ClassificationSchemeApplication.cs @@ -603,6 +603,7 @@ public class ClassificationSchemeApplication : IClassificationSchemeApplication } + #region ForApi public async Task DeleteScheme(long id) { @@ -637,10 +638,17 @@ public class ClassificationSchemeApplication : IClassificationSchemeApplication public async Task SaveJobsToGroup(AddOrEditJobInGroupDto command) { var op = new OperationResult(); - var res= await _classificationGroupRepository.SaveJobsToGroup(command); + var res = await _classificationGroupRepository.SaveJobsToGroup(command); if (!res) return op.Failed("خطا در انجام عملیات"); return op.Succcedded(); } + + public async Task> GetSalaryList(long schemeId) + { + return await _classificationGroupSalariesRepository.GetSalaryList(schemeId); + } + + #endregion } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/ClassificationGroupSalariesRepository.cs b/CompanyManagment.EFCore/Repository/ClassificationGroupSalariesRepository.cs index 997fc970..35d2c38c 100644 --- a/CompanyManagment.EFCore/Repository/ClassificationGroupSalariesRepository.cs +++ b/CompanyManagment.EFCore/Repository/ClassificationGroupSalariesRepository.cs @@ -139,5 +139,49 @@ public class ClassificationGroupSalariesRepository : RepositoryBase> GetSalaryList(long schemeId) + { + var scheme = await _context.ClassificationSchemes.AsSplitQuery().Include(xc => xc.ClassificationRialCoefficients) + .Include(xg => xg.ClassificationGroups) + .ThenInclude(xs => xs.ClassificationGroupSalaries) + .FirstOrDefaultAsync(x => x.id == schemeId); + + if (scheme == null) + return null; + + // جمع‌آوری همه‌ی حقوق‌ها از تمام گروه‌ها + var allSalaries = scheme.ClassificationGroups + .SelectMany(g => g.ClassificationGroupSalaries) + .ToList(); + + // اگر هیچ حقوقی وجود ندارد + if (!allSalaries.Any()) + { + return new List(); + } + + // گروه‌بندی بر اساس StartDate و EndDate برای حذف موارد تکراری + var distinctPeriods = allSalaries + .GroupBy(s => new { s.StartDate, s.EndDate }) + .Select(g => g.First()) // فقط یکی از هر بازه تاریخ + .OrderByDescending(x => x.StartDate) + .ToList(); + + //تبدیل به مدل خروجی + var dataList = distinctPeriods + .Select(s => new SalaryAndRialCoefficientTabDataList + { + RialCoefficientStr = $"{scheme.ClassificationRialCoefficients.FirstOrDefault(x => x.StartDate.Date == s.StartDate.Date && x.EndDate.Date == s.EndDate.Date)?.RialCoefficient}", + StartDateFa = s.StartDate.ToFarsi(), + EndDateFa = s.EndDate.ToFarsi(), + Year = s.Year + }) + .ToList(); + + return dataList; + } + + #endregion } \ No newline at end of file diff --git a/ServiceHost/Areas/Admin/Controllers/ClassificationSchemeController.cs b/ServiceHost/Areas/Admin/Controllers/ClassificationSchemeController.cs index 9d31c410..1b653718 100644 --- a/ServiceHost/Areas/Admin/Controllers/ClassificationSchemeController.cs +++ b/ServiceHost/Areas/Admin/Controllers/ClassificationSchemeController.cs @@ -23,6 +23,7 @@ public class ClassificationSchemeController : AdminBaseController _jobApplication = jobApplication; } + // تب لیست طرح #region SchemeTab /// @@ -100,6 +101,7 @@ public class ClassificationSchemeController : AdminBaseController #endregion + // تب تعیین مشاغل گروه #region GroupsTab /// /// دریافت لیست گروه ها @@ -161,4 +163,21 @@ public class ClassificationSchemeController : AdminBaseController return result; } #endregion + + //تب تعیین دستمزد + #region SalariesTab + + /// + /// دریافت لیست دستمزدها + /// + /// + /// + [HttpGet("GetSalariesList")] + public async Task> GetSalariesList(long schemeId) + { + var result =await _classificationSchemeApplication.GetSalaryList(schemeId); + return result; + } + + #endregion } \ No newline at end of file