diff --git a/Company.Domain/InsuranceJobItemAgg/IInsuranceJobItemRepositpry.cs b/Company.Domain/InsuranceJobItemAgg/IInsuranceJobItemRepositpry.cs index 5d3df675..630d9070 100644 --- a/Company.Domain/InsuranceJobItemAgg/IInsuranceJobItemRepositpry.cs +++ b/Company.Domain/InsuranceJobItemAgg/IInsuranceJobItemRepositpry.cs @@ -17,6 +17,8 @@ public interface IInsuranceJobItemRepositpry : IRepository GetInsuranceJobItemByInsuranceJobId(long Id, string year, string month); List Search(InsuranceJobItemSearchModel searchModel); InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId, - string year, string month); + string year, string month); + + (List workshopList, bool hasAnyWorkshop) GetWorkshopUsedThisInsuranceJob(long insuranceJobId); } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/InsuranceJob/CreateInsuranceJob.cs b/CompanyManagment.App.Contracts/InsuranceJob/CreateInsuranceJob.cs index 0977e780..22cd87a4 100644 --- a/CompanyManagment.App.Contracts/InsuranceJob/CreateInsuranceJob.cs +++ b/CompanyManagment.App.Contracts/InsuranceJob/CreateInsuranceJob.cs @@ -22,5 +22,8 @@ public class CreateInsuranceJob public List Jobs { get; set; } public List InsuranceJobItems { get; set; } + public List WorkshopList { get; set; } + public bool HasAnyWorkshop { get; set; } + } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/InsuranceJobItem/InsuranceJobItemViewModel.cs b/CompanyManagment.App.Contracts/InsuranceJobItem/InsuranceJobItemViewModel.cs index 6c75c986..e880ef8e 100644 --- a/CompanyManagment.App.Contracts/InsuranceJobItem/InsuranceJobItemViewModel.cs +++ b/CompanyManagment.App.Contracts/InsuranceJobItem/InsuranceJobItemViewModel.cs @@ -11,8 +11,23 @@ namespace CompanyManagment.App.Contracts.InsuranceJobItem; public class InsuranceJobItemViewModel { public long Id { get; set; } + + + + /// + /// آیای این درصد در لیست مبالغ مبلغ پر شده دارد + /// + public bool IsPercentageLessThanUse { get; set; } public double PercentageLessThan { get; set; } + + + + /// + /// آیای این درصد در لیست مبالغ مبلغ پر شده دارد + /// + public bool IsPercentageMoreThanUse { get; set; } public double PercentageMoreThan { get; set; } + public double SalaeyLessThan { get; set; } public double SalaryMoreThan { get; set; } public string SalaeyLessThanString { get; set; } diff --git a/CompanyManagment.EFCore/Repository/DateSalaryRepository.cs b/CompanyManagment.EFCore/Repository/DateSalaryRepository.cs index e7112dac..82b5d2a4 100644 --- a/CompanyManagment.EFCore/Repository/DateSalaryRepository.cs +++ b/CompanyManagment.EFCore/Repository/DateSalaryRepository.cs @@ -106,7 +106,7 @@ public class DateSalaryRepository : RepositoryBase, IDateSalar var dateSalary = Get(command.Id); dateSalary.Edit(command.StartDateFa, command.EndDateFa); SaveChanges(); - command.DateSalaryItems = command.DateSalaryItems.Where(x => x.Salary > 0).ToList(); + //command.DateSalaryItems = command.DateSalaryItems.Where(x => x.Salary > 0).ToList(); foreach (var item in command.DateSalaryItems) { if (item.Id == 0) diff --git a/CompanyManagment.EFCore/Repository/InsuranceJobItemRepository.cs b/CompanyManagment.EFCore/Repository/InsuranceJobItemRepository.cs index a0734ec6..41c24f4f 100644 --- a/CompanyManagment.EFCore/Repository/InsuranceJobItemRepository.cs +++ b/CompanyManagment.EFCore/Repository/InsuranceJobItemRepository.cs @@ -6,8 +6,10 @@ using _0_Framework.InfraStructure; using Company.Domain.InsuranceJobAndJobsAgg; using Company.Domain.InsuranceJobItemAgg; +using CompanyManagment.App.Contracts.DateSalaryItem; using CompanyManagment.App.Contracts.InsuranceJobItem; using CompanyManagment.App.Contracts.Job; +using Microsoft.EntityFrameworkCore; namespace CompanyManagment.EFCore.Repository; @@ -94,17 +96,31 @@ public class InsuranceJobItemRepository : RepositoryBase var searcheDate = ($"{year}/{month}/01").ToGeorgianDateTime(); var insuranceJobItems = _context.InsuranceJobItems.Where(i => i.InsuranceJobId == Id && i.StartDate <= searcheDate && i.EndDate >= searcheDate).ToList(); var list = new List(); + var usedParcentsInDateSalaryItems = _context.DateSalaries + .Where(x => x.StartDateGr <= searcheDate && x.EndDateGr >= searcheDate) + .Include(x => x.DateSalaryItemList) + .SelectMany(x => x.DateSalaryItemList) + .ToList(); foreach (var item in insuranceJobItems) { + double lessThan = usedParcentsInDateSalaryItems.Any(x => x.Percent == item.PercentageLessThan && x.Salary > 0) + ? usedParcentsInDateSalaryItems.FirstOrDefault(x => x.Percent == item.PercentageLessThan).Salary + : 0; + + double moreThan = usedParcentsInDateSalaryItems.Any(x => x.Percent == item.PercentageMoreThan && x.Salary > 0) + ? usedParcentsInDateSalaryItems.FirstOrDefault(x => x.Percent == item.PercentageMoreThan).Salary + : 0; var obj = new InsuranceJobItemViewModel(); obj.Id = item.id; obj.PercentageLessThan = item.PercentageLessThan; + obj.IsPercentageLessThanUse = lessThan > 0 ; obj.PercentageMoreThan = item.PercentageMoreThan; + obj.IsPercentageMoreThanUse = moreThan > 0; obj.SalaeyLessThan = item.SalaeyLessThan; obj.SalaryMoreThan = item.SalaryMoreThan; - obj.SalaeyLessThanString = item.SalaryMoreThan.ToMoney(); - obj.SalaryMoreThanString = item.SalaryMoreThan.ToMoney(); + obj.SalaeyLessThanString = lessThan > 0 ? lessThan.ToMoney() : "0"; + obj.SalaryMoreThanString = moreThan > 0 ? moreThan.ToMoney() : "0"; obj.InsuranceJobId = item.InsuranceJobId; obj.StartDate = item.StartDate; obj.EndDate = item.EndDate; @@ -149,6 +165,17 @@ public class InsuranceJobItemRepository : RepositoryBase return insuranceJobItemViewModel; } + public (List workshopList, bool hasAnyWorkshop) GetWorkshopUsedThisInsuranceJob(long insuranceJobId) + { + var workshops = _context.Workshops.Where(x => x.InsuranceJobId == insuranceJobId); + if (!workshops.Any()) + { + return (new List(), false); + } + + return (workshops.Select(x => x.WorkshopFullName).ToList(), true); + } + public List Search(InsuranceJobItemSearchModel searchModel) { throw new NotImplementedException(); diff --git a/CompanyManagment.EFCore/Repository/InsuranceJobRepository.cs b/CompanyManagment.EFCore/Repository/InsuranceJobRepository.cs index 18771f63..639248f0 100644 --- a/CompanyManagment.EFCore/Repository/InsuranceJobRepository.cs +++ b/CompanyManagment.EFCore/Repository/InsuranceJobRepository.cs @@ -11,6 +11,7 @@ using Company.Domain.InsurancJobAgg; using Company.Domain.PercentageAgg; using CompanyManagment.App.Contracts.InsuranceJob; using CompanyManagment.App.Contracts.InsuranceJobItem; +using CompanyManagment.App.Contracts.Percentage; using Microsoft.EntityFrameworkCore; using static Microsoft.EntityFrameworkCore.DbLoggerCategory.Database; @@ -23,12 +24,15 @@ public class InsuranceJobRepository : RepositoryBase, IInsur private readonly TestDbContext _testDbContext; private readonly IInsuranceJobItemRepositpry _insuranceJobItemRepositpry; private readonly IPercentageRepository _percentageRepository; - public InsuranceJobRepository(CompanyContext context, IInsuranceJobItemRepositpry insuranceJobItemRepositpry, IPercentageRepository percentageRepository, TestDbContext testDbContext) : base(context) + private readonly IDateSalaryItemRepository _dateSalaryItemRepository; + + public InsuranceJobRepository(CompanyContext context, IInsuranceJobItemRepositpry insuranceJobItemRepositpry, IPercentageRepository percentageRepository, TestDbContext testDbContext, IDateSalaryItemRepository dateSalaryItemRepository) : base(context) { _context = context; _insuranceJobItemRepositpry = insuranceJobItemRepositpry; _percentageRepository = percentageRepository; _testDbContext = testDbContext; + _dateSalaryItemRepository = dateSalaryItemRepository; } public EditInsuranceJob GetDetails(long id, string year, string month) @@ -40,9 +44,12 @@ public class InsuranceJobRepository : RepositoryBase, IInsur insuranceJob.EconomicCode = details.EconomicCode; insuranceJob.InsuranceJobTitle = details.InsuranceJobTitle; insuranceJob.InsuranceJobItems = _insuranceJobItemRepositpry.GetInsuranceJobItemByInsuranceJobId(id, year, month); + var workshopsUsedThis = _insuranceJobItemRepositpry.GetWorkshopUsedThisInsuranceJob(id); var item = insuranceJob.InsuranceJobItems.FirstOrDefault(); insuranceJob.StartDateFa = item != null ? $"{item.StartDate.ToFarsi()}" : "-"; insuranceJob.EndDateFa = item != null ? $"{item.EndDate.ToFarsi()}" : "-"; + insuranceJob.WorkshopList = workshopsUsedThis.workshopList; + insuranceJob.HasAnyWorkshop = workshopsUsedThis.hasAnyWorkshop; return insuranceJob; } @@ -373,16 +380,33 @@ public class InsuranceJobRepository : RepositoryBase, IInsur var insuranceJob = Get(command.Id); insuranceJob.Edit(command.InsuranceJobTitle, command.YearlySalaryId, command.EconomicCode, command.Year); var searcheDate = ($"{command.Year}/{command.Month}/01").ToGeorgianDateTime(); - var insuranceJobItems = _context.InsuranceJobItems.Where(i => i.InsuranceJobId == command.Id && i.StartDate <= searcheDate && i.EndDate >= searcheDate); - //List deleteIds = new List(); + var insuranceJobItems = _context.InsuranceJobItems + .Include(x=>x.InsuranceJobAndJobs) + .Where(i => i.InsuranceJobId == command.Id && i.StartDate <= searcheDate && i.EndDate >= searcheDate); + DateTime? startDate = insuranceJobItems.Select(x => x.StartDate).FirstOrDefault(); DateTime? endDate = insuranceJobItems.Select(x => x.EndDate).FirstOrDefault(); var insuranceJobItemsIds = insuranceJobItems.Select(x => x.id).ToList(); + + var usedParcentsInDateSalaryItems = _context.DateSalaries + .Where(x => x.StartDateGr <= searcheDate && x.EndDateGr >= searcheDate) + .Include(x => x.DateSalaryItemList) + .SelectMany(x => x.DateSalaryItemList) + .ToList(); + //var editedJobItems = command.InsuranceJobItems.Where(x => x.Id != 0).ToList(); + //var newAdedJobItems = command.InsuranceJobItems.Where(x => x.Id == 0).ToList(); + + //foreach (var item in insuranceJobItems) + //{ + + //} foreach (var item in command.InsuranceJobItems) { long deleteId = insuranceJobItemsIds.Where(x => x == item.Id).FirstOrDefault(); if (deleteId != 0) - { insuranceJobItemsIds.Remove(deleteId); } + { + insuranceJobItemsIds.Remove(deleteId); + } if (item.Id == 0) { @@ -415,18 +439,52 @@ public class InsuranceJobRepository : RepositoryBase, IInsur } #region Percentage + var percentage = new Percentage(item.PercentageLessThan); if (!_percentageRepository.Exists(x => x.Percent == item.PercentageLessThan)) { - var percentage = new Percentage(item.PercentageLessThan); + _percentageRepository.Create(percentage); } + var percentage2 = new Percentage(item.PercentageMoreThan); if (!_percentageRepository.Exists(x => x.Percent == item.PercentageMoreThan)) { - var percentage2 = new Percentage(item.PercentageMoreThan); + _percentageRepository.Create(percentage2); } _percentageRepository.SaveChanges(); #endregion + + + #region DateSalaryItems + + var checkExitLeesThan = usedParcentsInDateSalaryItems.Any(x => x.Percent == item.PercentageLessThan); + if (!checkExitLeesThan && usedParcentsInDateSalaryItems.Any()) + { + + if(percentage.id == 0) + percentage.id = _percentageRepository.Search(new PercentageSearchModel(){Percent = item.PercentageLessThan }).FirstOrDefault()!.Id; + + var dateSalaryId =usedParcentsInDateSalaryItems.FirstOrDefault()!.DateSalaryId; + var dateSalaryItem = new DateSalaryItem(item.PercentageLessThan, percentage.id, 0, dateSalaryId); + _dateSalaryItemRepository.Create(dateSalaryItem); + + } + + var checkExitMoreThan = usedParcentsInDateSalaryItems.Any(x => x.Percent == item.PercentageMoreThan); + if (!checkExitMoreThan && usedParcentsInDateSalaryItems.Any()) + { + if (percentage2.id == 0) + percentage2.id = _percentageRepository.Search(new PercentageSearchModel() { Percent = item.PercentageMoreThan }).FirstOrDefault()!.Id; + + var dateSalaryId = usedParcentsInDateSalaryItems.FirstOrDefault()!.DateSalaryId; + var dateSalaryItem = new DateSalaryItem(item.PercentageMoreThan, percentage2.id, 0, dateSalaryId); + _dateSalaryItemRepository.Create(dateSalaryItem); + + } + + _dateSalaryItemRepository.SaveChanges(); + + #endregion } #region removeJobItems diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Edit.cshtml b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Edit.cshtml index e5db4953..ad1c6434 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Edit.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Edit.cshtml @@ -1,542 +1,648 @@ @model CompanyManagment.App.Contracts.InsuranceJob.EditInsuranceJob +@{ + +} @*MASHAGHEL MAGHTUE*@ - +
- -
ویرایش مشاغل قیمت مقطوع سازمان تامین اجتماعی
-
-
-
+ +
ویرایش مشاغل قیمت مقطوع سازمان تامین اجتماعی
+
+ +
+
+ @* *@ + +
+
+ -
- @* *@ - -
-
- + + + + + +
+ + + +
- +
- از تاریخ -   - @Model.StartDateFa -   - الی -   - @Model.EndDateFa +
+ + از تاریخ +   + @Model.StartDateFa +   + الی +   + @Model.EndDateFa + +
+
- - -
- - - - - - - - - - - - - - + + +
+
بیشتر از 500000 نفر کمتر از 500000 نفرمشاغل#
ضریبضریب
+ + + + + + + + + + + + + - @{ - var index = 1; - var tabIndex = 3; - } - @foreach (var item in Model.InsuranceJobItems) - { - - + - - - - + + + + + + - index = index + 1; - tabIndex = tabIndex + 3; - } - -
بیشتر از 500000 نفر کمتر از 500000 نفرمشاغل#
ضریبضریب
-
- -
-
- @if (index == 1) - { - - - - } - else - { - - - - } + @{ + var index = 1; + var tabIndex = 3; + } + @foreach (var item in Model.InsuranceJobItems) + { +
+
+ + + @item.SalaryMoreThanString + +
+
+ @if (index == 1 || item.IsPercentageMoreThanUse || item.IsPercentageLessThanUse) + { + + + + } + else + { + + + + } -
-
-
- -
-
@index
+
+ + + @item.SalaeyLessThanString + +
+
@index
-
- افزودن -
-
-
- ذخیره - -
-
-
+ index = index + 1; + tabIndex = tabIndex + 3; + } + + +
+ افزودن +
+
+
+ ذخیره + +
+
+
@{ - - - - - - - - // + + + + + + + + // } \ No newline at end of file diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Index.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Index.cshtml.cs index c0cb3c25..ab0d5925 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Index.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Index.cshtml.cs @@ -199,7 +199,7 @@ public class IndexModel : PageModel public IActionResult OnPostEdit(EditInsuranceJob command) { - Console.WriteLine(command.Year); + var result = _insuranceJobApplication.Edit(command); return new JsonResult(result); } diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJobItem/Edit.cshtml b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJobItem/Edit.cshtml index b0d97249..fc9c5bc6 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJobItem/Edit.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJobItem/Edit.cshtml @@ -1,5 +1,14 @@ @model CompanyManagment.App.Contracts.DateSalary.CreateDateSalaryForInsuranceJob - +@{ + +} @Html.AntiForgeryToken()
@@ -9,10 +18,10 @@
- +
- +
diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJobItem/Index.cshtml b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJobItem/Index.cshtml index b23e5ce0..b9342b7d 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJobItem/Index.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJobItem/Index.cshtml @@ -5,9 +5,9 @@
diff --git a/ServiceHost/wwwroot/AdminTheme/css/create-insurance-jobs.css b/ServiceHost/wwwroot/AdminTheme/css/create-insurance-jobs.css index cef471e6..d335032f 100644 --- a/ServiceHost/wwwroot/AdminTheme/css/create-insurance-jobs.css +++ b/ServiceHost/wwwroot/AdminTheme/css/create-insurance-jobs.css @@ -180,9 +180,9 @@ input.no-spinner { border: 1px solid #9393938a; } #worksTable th { - background-color: #aaecf9; - text-align: center; - color: #010838; + background-color: #a5cfd7 !important; + text-align: center; + color: #010838; } #worksTable thead {