From c6874b33cf446129344dd63317472cca611f8067 Mon Sep 17 00:00:00 2001 From: SamSys Date: Sun, 19 Oct 2025 23:11:39 +0330 Subject: [PATCH] ClassificationSalariestab and create front completed --- .../ClassificationGroupJob.cs | 5 +- .../ClassificationGroupSalary.cs | 1 + .../IClassificationGroupRepository.cs | 23 +++ .../IClassificationGroupSalariesRepository.cs | 25 +++ ...ClassificationRialCoefficientRepository.cs | 8 + ...ssificationGroupSalaryAndRialCoeficient.cs | 138 ++++++++++++- .../IClassificationSchemeApplication.cs | 31 ++- .../ClassificationSchemeApplication.cs | 103 +++++++++- .../ClassificationGroupRepository.cs | 67 +++++- .../ClassificationGroupSalariesRepository.cs | 85 ++++++++ ...ClassificationRialCoefficientRepository.cs | 18 ++ .../PersonalBootstrapper.cs | 2 + .../Workshops/ClassificationScheme.cshtml | 35 +++- .../Workshops/ClassificationScheme.cshtml.cs | 108 +++++++++- .../Pages/Company/Workshops/Index.cshtml | 2 +- .../ClassificationGroupJobsTab.cshtml | 50 ++--- .../ClassificationGroupSalariesTab.cshtml | 148 ++++++++++++++ .../CreateClassificationGroupSalary.cshtml | 8 - .../CreateOrEditGroupJobs.cshtml | 192 +++++++++++++++++- .../CreateSalariesAndCoefficient.cshtml | 154 ++++++++++++++ .../wwwroot/AdminTheme/assets/js/site.js | 23 ++- 21 files changed, 1159 insertions(+), 67 deletions(-) create mode 100644 Company.Domain/ClassificationSchemeAgg/IClassificationGroupSalariesRepository.cs create mode 100644 Company.Domain/ClassificationSchemeAgg/IClassificationRialCoefficientRepository.cs create mode 100644 CompanyManagment.EFCore/Repository/ClassificationGroupSalariesRepository.cs create mode 100644 CompanyManagment.EFCore/Repository/ClassificationRialCoefficientRepository.cs create mode 100644 ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/ClassificationGroupSalariesTab.cshtml delete mode 100644 ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/CreateClassificationGroupSalary.cshtml create mode 100644 ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/CreateSalariesAndCoefficient.cshtml diff --git a/Company.Domain/ClassificationSchemeAgg/ClassificationGroupJob.cs b/Company.Domain/ClassificationSchemeAgg/ClassificationGroupJob.cs index de1acfe9..a4884bae 100644 --- a/Company.Domain/ClassificationSchemeAgg/ClassificationGroupJob.cs +++ b/Company.Domain/ClassificationSchemeAgg/ClassificationGroupJob.cs @@ -10,14 +10,17 @@ public class ClassificationGroupJob : EntityBaseWithoutCreationDate /// /// /// + /// /// /// - public ClassificationGroupJob(long jobId, string jobName, long classificationGroupId, string groupNo) + public ClassificationGroupJob(long jobId, string jobName, string jobCode, long classificationGroupId, string groupNo) { JobId = jobId; JobName = jobName; + JobCode = jobCode; ClassificationGroupId = classificationGroupId; GroupNo = groupNo; + } /// diff --git a/Company.Domain/ClassificationSchemeAgg/ClassificationGroupSalary.cs b/Company.Domain/ClassificationSchemeAgg/ClassificationGroupSalary.cs index 43541bda..cad3e0f1 100644 --- a/Company.Domain/ClassificationSchemeAgg/ClassificationGroupSalary.cs +++ b/Company.Domain/ClassificationSchemeAgg/ClassificationGroupSalary.cs @@ -5,6 +5,7 @@ namespace Company.Domain.ClassificationSchemeAgg; public class ClassificationGroupSalary : EntityBase { + /// /// ایجاد دستمزد برای گروه diff --git a/Company.Domain/ClassificationSchemeAgg/IClassificationGroupRepository.cs b/Company.Domain/ClassificationSchemeAgg/IClassificationGroupRepository.cs index 045459a0..fdcdb80a 100644 --- a/Company.Domain/ClassificationSchemeAgg/IClassificationGroupRepository.cs +++ b/Company.Domain/ClassificationSchemeAgg/IClassificationGroupRepository.cs @@ -22,6 +22,29 @@ public interface IClassificationGroupRepository : IRepository Task> GetGroupJobs(long groupId); + /// + /// چک میکند که آی پرسنلی وجود دارد که این شغل به او نسبت داده شده + /// + /// + /// + /// + Task CheckEmployeeHasThisJob(long id, long groupId); + + /// + /// ایجاد مشاغل + /// + /// + /// + /// + Task CreateJobs(List createClassificationGroupJob, List deleteJobList); + + + /// + /// در یافت اطلاعات گروه برای لود مودال ایجاد دستمزد های + /// + /// + Task GetGroupToCreateSalariesModal(long schemeId); + /// /// ایجاد گروه های بیست گانه /// diff --git a/Company.Domain/ClassificationSchemeAgg/IClassificationGroupSalariesRepository.cs b/Company.Domain/ClassificationSchemeAgg/IClassificationGroupSalariesRepository.cs new file mode 100644 index 00000000..cdf099d2 --- /dev/null +++ b/Company.Domain/ClassificationSchemeAgg/IClassificationGroupSalariesRepository.cs @@ -0,0 +1,25 @@ +using _0_Framework.Domain; +using CompanyManagment.App.Contracts.ClassificationScheme; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace Company.Domain.ClassificationSchemeAgg; + +public interface IClassificationGroupSalariesRepository : IRepository +{ + /// + /// ایجاد دستمزدهای گروه ها + /// + /// + /// + Task CreateSalaries(List createClassificationGroupSalary); + + + /// + /// لیست دستمزدها بر اساس تاریخ و سال برای تب دستمزدها + /// + /// + /// + Task GetSalariesTabData(long schemeId); +} + \ No newline at end of file diff --git a/Company.Domain/ClassificationSchemeAgg/IClassificationRialCoefficientRepository.cs b/Company.Domain/ClassificationSchemeAgg/IClassificationRialCoefficientRepository.cs new file mode 100644 index 00000000..5d41918a --- /dev/null +++ b/Company.Domain/ClassificationSchemeAgg/IClassificationRialCoefficientRepository.cs @@ -0,0 +1,8 @@ +using _0_Framework.Domain; + +namespace Company.Domain.ClassificationSchemeAgg; + +public interface IClassificationRialCoefficientRepository : IRepository +{ + +} \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/ClassificationScheme/CreateClassificationGroupSalaryAndRialCoeficient.cs b/CompanyManagment.App.Contracts/ClassificationScheme/CreateClassificationGroupSalaryAndRialCoeficient.cs index 26fcab81..de6ebaa1 100644 --- a/CompanyManagment.App.Contracts/ClassificationScheme/CreateClassificationGroupSalaryAndRialCoeficient.cs +++ b/CompanyManagment.App.Contracts/ClassificationScheme/CreateClassificationGroupSalaryAndRialCoeficient.cs @@ -1,4 +1,5 @@ -using System; +using _0_Framework.Application.Enums; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -44,8 +45,141 @@ public class CreateClassificationGroupSalaryAndRialCoefficient public int Year { get; set; } + +} + +/// +/// ویرایش دستمزد +/// +public class EditClassificationGroupSalaryAndRialCoefficient : CreateClassificationGroupSalaryAndRialCoefficient +{ + /// + /// آی دی + /// + public long Id { get; set; } + + /// + /// تاریخ شروع + /// شمسی + /// + public string StartDateFa { get; set; } + + /// + /// تاریخ پایان + /// شمسی + /// + public string EndDateFa { get; set; } + + /// + /// دستمزد گروه + /// + public string GroupSalaryStr { get; set; } +} + +/// +/// لیست دستمزدها و ضرایب ریالی +/// +public class SalaryAndRialCoefficientModel +{ + /// + /// تاریخ شروع + /// میلادی + /// + public DateTime StartDate { get; set; } + + /// + /// تاریخ شروع + /// شمسی + /// + public string StartDateFa { get; set; } + + /// + /// تاریخ پایان + /// میلادی + /// + public DateTime EndDate { get; set; } + + /// + /// تاریخ پایان + /// شمسی + /// + public string EndDateFa { get; set; } + + /// + /// سال + /// + public int Year { get; set; } + + /// /// ضریب ریالی + /// string /// - public double RialCoefficient { get; private set; } + public string RialCoefficientStr { get; set; } + + /// + /// ضریب ریالی + /// double + /// + public double RialCoefficient { get; set; } + + /// + /// آی دی طرح + /// + public long SchemeId { get; set; } + + /// + /// نوع ضریب + /// + public TypeOfCoefficient TypeOfCoefficient { get; set; } + + /// + /// لیست دستمزدها و ضرایب بر اساس سال + /// + public List SalariesAndCoefficientList { get; set; } +} + + +/// +/// تب دستمزد ها و ضرایب ریالی +/// +public class SalaryAndRialCoefficientTab +{ + /// + /// آی دی طرح + /// + public long SchemeId { get; set; } + + /// + /// آیا دستمزدی قبلا ایجاد شده است؟ + /// + public bool HasAnySalaries { get; set; } + + /// + /// لیست دستمزدها و ضرایب + /// + public List SalaryAndRialCoefficientTabDataList { get; set; } +} + +/// +/// لیست دستمزدها +/// +public class SalaryAndRialCoefficientTabDataList +{ + /// + /// تاریخ شروع + /// شمسی + /// + public string StartDateFa { get; set; } + + /// + /// تاریخ پایان + /// شمسی + /// + public string EndDateFa { get; set; } + + /// + /// سال + /// + public int Year { get; set; } } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs b/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs index 99240e56..82d53ce7 100644 --- a/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs +++ b/CompanyManagment.App.Contracts/ClassificationScheme/IClassificationSchemeApplication.cs @@ -55,19 +55,42 @@ public interface IClassificationSchemeApplication /// Task> GetGroupJobs(long groupId); + /// + /// چک میکند که آی پرسنلی وجود دارد که این شغل به او نسبت داده شده + /// + /// + /// + /// + Task CheckEmployeeHasThisJob(long id, long groupId); + /// /// ایجاد مشاغل گروه /// - /// + /// + /// /// - Task CreateGroupJobs(ClassificationGroupAndJobModel command); - + Task CreateGroupJobs(List createClassificationGroupJob, List deleteJobList); + + + /// + /// چک میکند که آیا برای این طرح تابحال دستمزدی ایجاد شده یا نه + /// + /// + /// + Task GetSalariesTabData(long schemeId); + + /// + /// در یافت اطلاعات گروه برای لود مودال ایجاد دستمزد های + /// + /// + Task GetGroupToCreateSalariesModal(long schemeId); + /// /// ایجاد دستمزدها و ضرایب ریالی هر گروه در هر سال /// /// /// - Task CreateGroupSalaryAndCoefficient(CreateClassificationGroupSalaryAndRialCoefficient command); + Task CreateGroupSalaryAndCoefficient(SalaryAndRialCoefficientModel command); diff --git a/CompanyManagment.Application/ClassificationSchemeApplication.cs b/CompanyManagment.Application/ClassificationSchemeApplication.cs index e6aa8e73..f238d0b1 100644 --- a/CompanyManagment.Application/ClassificationSchemeApplication.cs +++ b/CompanyManagment.Application/ClassificationSchemeApplication.cs @@ -1,9 +1,12 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using _0_Framework.Application; +using _0_Framework.Application.Enums; using Company.Domain.ClassificationSchemeAgg; using CompanyManagment.App.Contracts.ClassificationScheme; +using Microsoft.EntityFrameworkCore; namespace CompanyManagment.Application; @@ -11,11 +14,15 @@ public class ClassificationSchemeApplication : IClassificationSchemeApplication { private readonly IClassificationSchemeRepository _classificationSchemeRepository; private readonly IClassificationGroupRepository _classificationGroupRepository; + private readonly IClassificationGroupSalariesRepository _classificationGroupSalariesRepository; + private readonly IClassificationRialCoefficientRepository _classificationRialCoefficientRepository; - public ClassificationSchemeApplication(IClassificationSchemeRepository classificationSchemeRepository, IClassificationGroupRepository classificationGroupRepository) + public ClassificationSchemeApplication(IClassificationSchemeRepository classificationSchemeRepository, IClassificationGroupRepository classificationGroupRepository, IClassificationGroupSalariesRepository classificationGroupSalariesRepository, IClassificationRialCoefficientRepository classificationRialCoefficientRepository) { _classificationSchemeRepository = classificationSchemeRepository; _classificationGroupRepository = classificationGroupRepository; + _classificationGroupSalariesRepository = classificationGroupSalariesRepository; + _classificationRialCoefficientRepository = classificationRialCoefficientRepository; } public Task ClassificationSchemePartialModel(long workshopId) @@ -120,13 +127,99 @@ public class ClassificationSchemeApplication : IClassificationSchemeApplication return await _classificationGroupRepository.GetGroupJobs(groupId); } - public Task CreateGroupJobs(ClassificationGroupAndJobModel command) + public async Task CheckEmployeeHasThisJob(long id, long groupId) { - throw new System.NotImplementedException(); + return await _classificationGroupRepository.CheckEmployeeHasThisJob(id, groupId); } - public Task CreateGroupSalaryAndCoefficient(CreateClassificationGroupSalaryAndRialCoefficient command) + public async Task CreateGroupJobs(List createClassificationGroupJob, List deleteJobList) { - throw new System.NotImplementedException(); + var newJoblist = new List(); + if (createClassificationGroupJob.Count > 0) + { + foreach (var item in createClassificationGroupJob) + { + var newJob = new ClassificationGroupJob(item.JobId, item.JobName, item.JobCode, item.ClassificationGroupId, + item.GroupNo); + newJoblist.Add(newJob); + } + + } + + + + return await _classificationGroupRepository.CreateJobs(newJoblist, deleteJobList); + } + + public async Task GetSalariesTabData(long schemeId) + { + return await _classificationGroupSalariesRepository.GetSalariesTabData(schemeId); + } + + public async Task GetGroupToCreateSalariesModal(long schemeId) + { + return await _classificationGroupRepository.GetGroupToCreateSalariesModal(schemeId); + } + + + + public async Task CreateGroupSalaryAndCoefficient(SalaryAndRialCoefficientModel command) + { + var op = new OperationResult(); + #region Validation + + if (string.IsNullOrWhiteSpace(command.StartDateFa) || string.IsNullOrWhiteSpace(command.StartDateFa)) + return op.Failed("تاریخ شروع و پایان نمی توانند خالی باشند"); + if (command.TypeOfCoefficient == TypeOfCoefficient.RialCoefficient && string.IsNullOrWhiteSpace(command.RialCoefficientStr)) + return op.Failed("ضریب ریالی وارد نشده است"); + + + if (command.SalariesAndCoefficientList.Any(x=> string.IsNullOrWhiteSpace(x.GroupSalaryStr))) + return op.Failed("دستمزد تمامی گروه ها می بایست تعیین شود"); + + #endregion + + try + { + command.StartDate = command.StartDateFa.ToGeorgianDateTime(); + command.EndDate = command.EndDateFa.ToGeorgianDateTime(); + } + catch (Exception e) + { + return op.Failed("فرمت تاریخ اشتباه است"); + } + + + var year = Convert.ToInt32(command.StartDateFa.Substring(0, 4)); + + var createSalaries = new List(); + + foreach (var item in command.SalariesAndCoefficientList) + { + item.GroupSalary = item.GroupSalaryStr.MoneyToDouble(); + var create = new ClassificationGroupSalary(item.ClassificationGroupId,item.GroupNo,item.GroupSalary,command.StartDate,command.EndDate, year); + createSalaries.Add(create); + } + + await _classificationGroupSalariesRepository.CreateSalaries(createSalaries); + + if (command.TypeOfCoefficient == TypeOfCoefficient.RialCoefficient) + { + try + { + command.RialCoefficient = command.RialCoefficientStr.MoneyToDouble(); + + await _classificationRialCoefficientRepository.CreateAsync(new ClassificationRialCoefficient(command.SchemeId, + command.RialCoefficient, command.StartDate, command.EndDate, year)); + await _classificationRialCoefficientRepository.SaveChangesAsync(); + } + catch (Exception e) + { + return op.Failed("فرمت مبلغ ضریب ریالی اشتباه است"); + } + } + + op.SendId = command.SchemeId; + return op.Succcedded(); } } \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/ClassificationGroupRepository.cs b/CompanyManagment.EFCore/Repository/ClassificationGroupRepository.cs index 596d045c..0fcae70c 100644 --- a/CompanyManagment.EFCore/Repository/ClassificationGroupRepository.cs +++ b/CompanyManagment.EFCore/Repository/ClassificationGroupRepository.cs @@ -55,7 +55,7 @@ public class ClassificationGroupRepository : RepositoryBase x.id == groupId).Select(jobs => new EditClassificationGroupJob() + .Where(x => x.ClassificationGroupId == groupId).Select(jobs => new EditClassificationGroupJob() { Id = jobs.id, JobId = jobs.JobId, @@ -69,6 +69,71 @@ public class ClassificationGroupRepository : RepositoryBase + /// چک میکند که آی پرسنلی وجود دارد که این شغل به او نسبت داده شده + /// + /// + /// + /// + public async Task CheckEmployeeHasThisJob(long id, long groupId) + { + return await _context.ClassificationEmployees.AnyAsync(x => + x.ClassificationGroupJobId == id && x.ClassificationGroupId == groupId); + } + + /// + /// ایجاد مشاغل + /// + /// + /// + /// + public async Task CreateJobs(List createClassificationGroupJob, List deleteJobList) + { + if (createClassificationGroupJob.Count > 0) + { + await _context.ClassificationGroupJobs.AddRangeAsync(createClassificationGroupJob); + await _context.SaveChangesAsync(); + } + + if (deleteJobList.Count > 0) + { + var deleteItems = _context.ClassificationGroupJobs.Where(x => deleteJobList.Contains(x.id)); + _context.ClassificationGroupJobs.RemoveRange(deleteItems); + await _context.SaveChangesAsync(); + } + + + + return true; + } + + /// + /// در یافت اطلاعات گروه برای لود مودال ایجاد دستمزد های + /// + /// + public async Task GetGroupToCreateSalariesModal(long schemeId) + { + var result = new SalaryAndRialCoefficientModel(); + var scheme =await _context.ClassificationSchemes.FirstOrDefaultAsync(x => x.id == schemeId); + var groups =await _context.ClassificationGroups.Where(x => x.ClassificationSchemeId == schemeId).ToListAsync(); + + if (scheme != null) + { + result.TypeOfCoefficient = scheme.TypeOfCoefficient; + result.SchemeId = schemeId; + + result.SalariesAndCoefficientList = groups.Select(x => new EditClassificationGroupSalaryAndRialCoefficient + { + ClassificationGroupId = x.id, + GroupNo = x.GroupNo, + + }).ToList(); + } + + return result; + } + + /// /// ایجاد گروه های بیست گانه /// diff --git a/CompanyManagment.EFCore/Repository/ClassificationGroupSalariesRepository.cs b/CompanyManagment.EFCore/Repository/ClassificationGroupSalariesRepository.cs new file mode 100644 index 00000000..4d49e7ea --- /dev/null +++ b/CompanyManagment.EFCore/Repository/ClassificationGroupSalariesRepository.cs @@ -0,0 +1,85 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using _0_Framework.Application; +using _0_Framework.InfraStructure; +using Company.Domain.ClassificationSchemeAgg; +using CompanyManagment.App.Contracts.ClassificationScheme; +using Microsoft.EntityFrameworkCore; + +namespace CompanyManagment.EFCore.Repository; + +public class ClassificationGroupSalariesRepository : RepositoryBase, IClassificationGroupSalariesRepository +{ + private readonly CompanyContext _context; + public ClassificationGroupSalariesRepository(CompanyContext context) : base(context) + { + _context = context; + } + + + public async Task CreateSalaries(List createClassificationGroupSalary) + { + if (createClassificationGroupSalary.Count > 0) + { + await _context.ClassificationGroupSalaries.AddRangeAsync(createClassificationGroupSalary); + await _context.SaveChangesAsync(); + } + } + + + public async Task GetSalariesTabData(long schemeId) + { + var scheme = await _context.ClassificationSchemes + .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 SalaryAndRialCoefficientTab + { + SchemeId = scheme.id, + HasAnySalaries = false, + SalaryAndRialCoefficientTabDataList = 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 + { + StartDateFa = s.StartDate.ToFarsi(), + EndDateFa = s.EndDate.ToFarsi(), + Year = s.Year// یا هر روش سال شمسی که داری + }) + .ToList(); + + var result = new SalaryAndRialCoefficientTab + { + SchemeId = scheme.id, + HasAnySalaries = allSalaries.Any(), + SalaryAndRialCoefficientTabDataList = dataList + }; + + return result; + + + } +} \ No newline at end of file diff --git a/CompanyManagment.EFCore/Repository/ClassificationRialCoefficientRepository.cs b/CompanyManagment.EFCore/Repository/ClassificationRialCoefficientRepository.cs new file mode 100644 index 00000000..a957b480 --- /dev/null +++ b/CompanyManagment.EFCore/Repository/ClassificationRialCoefficientRepository.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Threading.Tasks; +using _0_Framework.InfraStructure; +using Company.Domain.ClassificationSchemeAgg; +using Microsoft.EntityFrameworkCore; + +namespace CompanyManagment.EFCore.Repository; + +public class ClassificationRialCoefficientRepository : RepositoryBase, IClassificationRialCoefficientRepository +{ + private readonly CompanyContext _context; + public ClassificationRialCoefficientRepository(CompanyContext context) : base(context) + { + _context = context; + } +} \ No newline at end of file diff --git a/PersonalContractingParty.Config/PersonalBootstrapper.cs b/PersonalContractingParty.Config/PersonalBootstrapper.cs index 12ed81bc..adce4304 100644 --- a/PersonalContractingParty.Config/PersonalBootstrapper.cs +++ b/PersonalContractingParty.Config/PersonalBootstrapper.cs @@ -504,6 +504,8 @@ public class PersonalBootstrapper services.AddTransient(); + services.AddTransient(); + services.AddTransient(); #endregion //=========End Of Main==================================== diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/ClassificationScheme.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Workshops/ClassificationScheme.cshtml index 63a85da4..72b2ec1e 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/ClassificationScheme.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/ClassificationScheme.cshtml @@ -21,7 +21,7 @@
-

تنظیمات طرح طبقه بندی مشاغل

+

تنظیمات طرح طبقه بندی مشاغل > @Model.WorkshopName

بازگشت @@ -53,7 +53,7 @@ تعیین مشاغل گروه ها -
  • +
  • public long WorkshopId { get; set; } + /// + /// نام کارگاه + /// + public string WorkshopName { get; set; } + /// /// آیا طرح ایجاد شده /// @@ -33,9 +39,10 @@ public class ClassificationSchemeModel : PageModel /// آی دی طرح /// public long SchemeId { get; set; } - public void OnGet(long workshopId) + public void OnGet(long workshopId, string workshopName) { WorkshopId = workshopId; + WorkshopName = workshopName; var scheme = _classificationSchemeApplication.ClassificationSchemePartialModel(workshopId).GetAwaiter().GetResult(); HasScheme = scheme.HasScheme; SchemeId = scheme.HasScheme ? scheme.ClassificationSchemesList.FirstOrDefault()!.Id : 0; @@ -156,13 +163,106 @@ public class ClassificationSchemeModel : PageModel } + /// + /// بررسی امکان حذف شغل + /// + /// + public IActionResult OnGetCheckDeleteJob(long id,long groupId) + { + var checkExist = _classificationSchemeApplication.CheckEmployeeHasThisJob(id, groupId).GetAwaiter().GetResult(); + + return new JsonResult(new + { + existEmployeHasThisJob = checkExist, + + }); + } + + /// + /// ذخیره مشاغل + /// + /// + public IActionResult OnPostCreateJob(List createJobList, List deleteJobList) + { + var result = _classificationSchemeApplication.CreateGroupJobs(createJobList, deleteJobList).GetAwaiter().GetResult(); + + return new JsonResult(new + { + isSuccess = result, + message = result == true ? "عملیات با موفقیت انجام شد" : "خطا در ذخیره اطلاعات", + + }); + } + #endregion - public IActionResult OnGetCreateSalaries() + + + #region SalariesTab + + + + /// + /// چک میکند که آیا گروه بدون شغل وجود دارد یا نه + /// + /// + /// + public IActionResult OnGetCheckEmptyGroup(long schemeId) { - return Partial("_ClassificationPartials/CreateClassificationGroupSalary"); + var groupAndJobs = _classificationSchemeApplication.GetGroupAndJobs(schemeId).GetAwaiter().GetResult(); + + + // خروجی: لیست بولین که برای هر گروه مشخص می‌کند آیا Job دارد یا نه + var hasJobsList = groupAndJobs + .Select(g => g.EditClassificationGroupJob != null && g.EditClassificationGroupJob.Count > 0) + .ToList(); + + // حالا می‌تونی بررسی کنی آیا گروهی بدون Job وجود دارد یا نه: + bool hasEmptyGroup = hasJobsList.Contains(false); + + // bool hasEmptyGroup = groupAndJobs.Any(g => g.EditClassificationGroupJob == null || g.EditClassificationGroupJob.Count == 0); + return new JsonResult(new + { + hasEmptyGroup = hasEmptyGroup, + }); } + /// + /// تب لیست دستمزد ها + /// + /// + public IActionResult OnGetSalariesTab(long schemeId) + { + + var salariesList = _classificationSchemeApplication.GetSalariesTabData(schemeId).GetAwaiter().GetResult(); + return Partial("_ClassificationPartials/ClassificationGroupSalariesTab", salariesList); + } + + /// + ///لود مودال ایجاد دستمزدها + /// + /// + /// + public IActionResult OnGetCreateSalaries(long schemeId) + { + var groupList = _classificationSchemeApplication.GetGroupToCreateSalariesModal(schemeId).GetAwaiter().GetResult(); + groupList.SchemeId = schemeId; + return Partial("_ClassificationPartials/CreateSalariesAndCoefficient", groupList); + } + + /// + /// ذخیره دستمزدها + /// + /// + /// + public IActionResult OnPostCreateSalaries(SalaryAndRialCoefficientModel command) + { + var result = _classificationSchemeApplication.CreateGroupSalaryAndCoefficient(command).GetAwaiter().GetResult(); + return new JsonResult(result); + } + #endregion + + public IActionResult OnGetAddEmployees() { return Partial("_ClassificationPartials/AddClassificationEmployees"); diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/Index.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Workshops/Index.cshtml index 009414a8..ccb5dfda 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/Index.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/Index.cshtml @@ -764,7 +764,7 @@
    @if (item.IsClassified) { - +

    طرح طبقه بندی diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/ClassificationGroupJobsTab.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/ClassificationGroupJobsTab.cshtml index 956719d2..e6ae5cae 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/ClassificationGroupJobsTab.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/ClassificationGroupJobsTab.cshtml @@ -61,7 +61,7 @@

    @foreach (var itemRight in Model.Take(10)) { -
    +
    @@ -112,7 +112,7 @@
    @foreach (var itemLeft in Model.Skip(10)) { -
    +
    diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/ClassificationGroupSalariesTab.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/ClassificationGroupSalariesTab.cshtml new file mode 100644 index 00000000..d89d154e --- /dev/null +++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/ClassificationGroupSalariesTab.cshtml @@ -0,0 +1,148 @@ +@model CompanyManagment.App.Contracts.ClassificationScheme.SalaryAndRialCoefficientTab +@{ + + + + int rowIndex = 1; +} +
    + + + + +
    + + +
    + + +
    +
    ردیف
    +
    سال
    +
    تاریخ شروع
    +
    تاریخ پایان
    +
    عملیات
    +
    + + @if (!Model.HasAnySalaries) + { +

    + هنوز هیچ دستمزدی افزده نشده است +

    + } + else + { + + @foreach (var item in Model.SalaryAndRialCoefficientTabDataList) + { +
    + +
    @rowIndex
    +
    @item.Year
    +
    @item.StartDateFa
    +
    @item.EndDateFa
    + @{ + rowIndex++; + } + +
    + + + + } + + } + +
    +
    +
    + diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/CreateClassificationGroupSalary.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/CreateClassificationGroupSalary.cshtml deleted file mode 100644 index e4bac05e..00000000 --- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/CreateClassificationGroupSalary.cshtml +++ /dev/null @@ -1,8 +0,0 @@ -@* - For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 -*@ -@{ -} -
    - -
    diff --git a/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/CreateOrEditGroupJobs.cshtml b/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/CreateOrEditGroupJobs.cshtml index b44665ec..528b03aa 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/CreateOrEditGroupJobs.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/Workshops/_ClassificationPartials/CreateOrEditGroupJobs.cshtml @@ -7,6 +7,10 @@ + + var groupIndex = 0; +} + + + + +
    + + + + +
    \ No newline at end of file diff --git a/ServiceHost/wwwroot/AdminTheme/assets/js/site.js b/ServiceHost/wwwroot/AdminTheme/assets/js/site.js index 3bc0ce34..d7b8d9ad 100644 --- a/ServiceHost/wwwroot/AdminTheme/assets/js/site.js +++ b/ServiceHost/wwwroot/AdminTheme/assets/js/site.js @@ -301,11 +301,32 @@ function CallBackHandler(data, action, form) { } else { /*alert(data.message);*/ - + console.log(data.message) $.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', data.message); } break; + + case "newSave": + if (data.isSuccedded) { + + $.Notification.autoHideNotify('success', 'top center', 'پیام سیستم ', data.message); + $('.close').click(); + + setTimeout(function () { + $('#salariesTab').click(); + + + + }, 1000); + + } else { + /*alert(data.message);*/ + + $.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', data.message); + + } + break; case "RefereshList": { if(data.IsSucceedded==true)