diff --git a/Company.Domain/InsurancJobAgg/IInsuranceJobRepositpry.cs b/Company.Domain/InsurancJobAgg/IInsuranceJobRepositpry.cs index 67fa9799..052084b5 100644 --- a/Company.Domain/InsurancJobAgg/IInsuranceJobRepositpry.cs +++ b/Company.Domain/InsurancJobAgg/IInsuranceJobRepositpry.cs @@ -14,7 +14,7 @@ public interface IInsuranceJobRepositpry:IRepository { //OperationResult Create(CreateInsurancJob command); // OperationResult Edit(EditInsurancJob command); - EditInsuranceJob GetDetails(long id); + EditInsuranceJob GetDetails(long id, string year, string month); List GetInsurancJob(); List Search(InsuranceJobSearchModel searchModel); OperationResult CreateInsuranceJob(CreateInsuranceJob command); @@ -22,5 +22,7 @@ public interface IInsuranceJobRepositpry:IRepository OperationResult CopyFromLastYear(CopyFromLastYearViewModel command); OperationResult Remove(long id); OperationResult EditInsuranceJob(EditInsuranceJob command); + + } diff --git a/Company.Domain/InsuranceJobItemAgg/IInsuranceJobItemRepositpry.cs b/Company.Domain/InsuranceJobItemAgg/IInsuranceJobItemRepositpry.cs index 5df3d2e5..c1df4b41 100644 --- a/Company.Domain/InsuranceJobItemAgg/IInsuranceJobItemRepositpry.cs +++ b/Company.Domain/InsuranceJobItemAgg/IInsuranceJobItemRepositpry.cs @@ -14,7 +14,7 @@ public interface IInsuranceJobItemRepositpry : IRepository GetInsuranceJobItemByInsuranceJobId(long Id); + List GetInsuranceJobItemByInsuranceJobId(long Id, string year, string month); List Search(InsuranceJobItemSearchModel searchModel); InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId); diff --git a/CompanyManagment.App.Contracts/InsuranceJob/CreateInsuranceJob.cs b/CompanyManagment.App.Contracts/InsuranceJob/CreateInsuranceJob.cs index dcb227c0..0977e780 100644 --- a/CompanyManagment.App.Contracts/InsuranceJob/CreateInsuranceJob.cs +++ b/CompanyManagment.App.Contracts/InsuranceJob/CreateInsuranceJob.cs @@ -14,10 +14,13 @@ public class CreateInsuranceJob public long YearlySalaryId { get; set; } public string EconomicCode { get; set; } public string Year { get; set; } + public string Month { get; set; } public long JobId { get; set; } public string StartDateFa { get; set; } public string EndDateFa { get; set; } public List Jobs { get; set; } public List InsuranceJobItems { get; set; } + + } \ No newline at end of file diff --git a/CompanyManagment.App.Contracts/InsuranceJob/IInsuranceJobApplication.cs b/CompanyManagment.App.Contracts/InsuranceJob/IInsuranceJobApplication.cs index 915d3a5d..7d0015ac 100644 --- a/CompanyManagment.App.Contracts/InsuranceJob/IInsuranceJobApplication.cs +++ b/CompanyManagment.App.Contracts/InsuranceJob/IInsuranceJobApplication.cs @@ -14,7 +14,7 @@ public interface IInsuranceJobApplication OperationResult CopyFromLastYear(CopyFromLastYearViewModel command); OperationResult Create(CreateInsuranceJob command); OperationResult Edit(EditInsuranceJob command); - EditInsuranceJob GetDetails(long id); + EditInsuranceJob GetDetails(long id,string year, string month); List GetInsurancJob(); List Search(InsuranceJobSearchModel searchModel); diff --git a/CompanyManagment.App.Contracts/InsuranceJob/InsuranceJobViewModel.cs b/CompanyManagment.App.Contracts/InsuranceJob/InsuranceJobViewModel.cs index 89981b33..8ee6b852 100644 --- a/CompanyManagment.App.Contracts/InsuranceJob/InsuranceJobViewModel.cs +++ b/CompanyManagment.App.Contracts/InsuranceJob/InsuranceJobViewModel.cs @@ -14,5 +14,7 @@ public class InsuranceJobViewModel //public long YearlySalaryId { get; set; } public string EconomicCode { get; set; } public string Year { get; set; } + public string Month { get; set; } public List InsuranceJobItemViewModels { get; set; } + } \ No newline at end of file diff --git a/CompanyManagment.Application/InsuranceJobApplication.cs b/CompanyManagment.Application/InsuranceJobApplication.cs index c5213272..99f85b97 100644 --- a/CompanyManagment.Application/InsuranceJobApplication.cs +++ b/CompanyManagment.Application/InsuranceJobApplication.cs @@ -126,9 +126,9 @@ public class InsuranceJobApplication: IInsuranceJobApplication return opration.Failed("ویرایش با خطا مواجه شد."); } } - public EditInsuranceJob GetDetails(long id) + public EditInsuranceJob GetDetails(long id, string year, string month) { - return _insuranceJobRepositpry.GetDetails(id); + return _insuranceJobRepositpry.GetDetails(id, year,month); } public List GetInsurancJob() diff --git a/CompanyManagment.Application/InsuranceListApplication.cs b/CompanyManagment.Application/InsuranceListApplication.cs index 7d05e2d3..63e7186f 100644 --- a/CompanyManagment.Application/InsuranceListApplication.cs +++ b/CompanyManagment.Application/InsuranceListApplication.cs @@ -1656,6 +1656,7 @@ public class InsuranceListApplication: IInsuranceListApplication private double? GetDailyWageFixedSalary(string year, long workshopId,long employeeId,DateTime? startDateGr, DateTime? endDateGr, long jobId, string population, long? insuranceJobId) { double? result = 0; + string month = $"{startDateGr.ToFarsi()}".Substring(5, 2); //اگر مشاغل مقطوع بود و شغلش کارفرما بود // در جدول لیست بیمه قبلی چک شود if (jobId == 10) //کارفرما @@ -1666,7 +1667,7 @@ public class InsuranceListApplication: IInsuranceListApplication { var inJob = _insuranceJobItemRepository - .GetInsuranceJobItemByInsuranceJobId((long)workshop.InsuranceJobId); + .GetInsuranceJobItemByInsuranceJobId((long)workshop.InsuranceJobId,year, month); if (workshop.Population == "MoreThan500") { var max = inJob.MaxBy(x => x.PercentageMoreThan); diff --git a/CompanyManagment.EFCore/Repository/InsuranceJobItemRepository.cs b/CompanyManagment.EFCore/Repository/InsuranceJobItemRepository.cs index fdf6ceb9..180b7e01 100644 --- a/CompanyManagment.EFCore/Repository/InsuranceJobItemRepository.cs +++ b/CompanyManagment.EFCore/Repository/InsuranceJobItemRepository.cs @@ -44,7 +44,7 @@ public class InsuranceJobItemRepository : RepositoryBase throw new NotImplementedException(); } - public List GetInsuranceJobItemByInsuranceJobId(long Id) + public List GetInsuranceJobItemByInsuranceJobId(long Id, string year, string month) { //var list = _context.InsuranceJobItems.Where(x => x.InsuranceJobId == Id).ToList().Select(x=>new InsuranceJobItemViewModel() @@ -91,8 +91,8 @@ public class InsuranceJobItemRepository : RepositoryBase // list.Add(obj); //} - - var insuranceJobItems = _context.InsuranceJobItems.Where(x => x.InsuranceJobId == Id).ToList(); + 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(); foreach (var item in insuranceJobItems) @@ -106,6 +106,8 @@ public class InsuranceJobItemRepository : RepositoryBase obj.SalaeyLessThanString = item.SalaryMoreThan.ToMoney(); obj.SalaryMoreThanString = item.SalaryMoreThan.ToMoney(); obj.InsuranceJobId = item.InsuranceJobId; + obj.StartDate = item.StartDate; + obj.EndDate = item.EndDate; obj.JobIds = _context.InsuranceJobAndJobsSet.Where(p => p.InsuranceJobItemId == item.id) .Select(p => p.JobId).ToList(); obj.JobList = _context.Jobs.Where(x => obj.JobIds.Contains(x.id)).ToList().Select(x => diff --git a/CompanyManagment.EFCore/Repository/InsuranceJobRepository.cs b/CompanyManagment.EFCore/Repository/InsuranceJobRepository.cs index 428feb77..dadba359 100644 --- a/CompanyManagment.EFCore/Repository/InsuranceJobRepository.cs +++ b/CompanyManagment.EFCore/Repository/InsuranceJobRepository.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using System.Linq; using _0_Framework.Application; using _0_Framework.InfraStructure; +using Company.Domain.DateSalaryAgg; +using Company.Domain.DateSalaryItemAgg; using Company.Domain.InsuranceJobAndJobsAgg; using Company.Domain.InsuranceJobItemAgg; using Company.Domain.InsurancJobAgg; @@ -20,14 +22,14 @@ public class InsuranceJobRepository : RepositoryBase, IInsur private readonly CompanyContext _context; private readonly IInsuranceJobItemRepositpry _insuranceJobItemRepositpry; private readonly IPercentageRepository _percentageRepository; - public InsuranceJobRepository(CompanyContext context, IInsuranceJobItemRepositpry insuranceJobItemRepositpry , IPercentageRepository percentageRepository) : base(context) + public InsuranceJobRepository(CompanyContext context, IInsuranceJobItemRepositpry insuranceJobItemRepositpry, IPercentageRepository percentageRepository) : base(context) { _context = context; _insuranceJobItemRepositpry = insuranceJobItemRepositpry; _percentageRepository = percentageRepository; } - public EditInsuranceJob GetDetails(long id) + public EditInsuranceJob GetDetails(long id, string year, string month) { var insuranceJob = new EditInsuranceJob(); var details = Get(id); @@ -35,7 +37,10 @@ public class InsuranceJobRepository : RepositoryBase, IInsur insuranceJob.Year = details.Year; insuranceJob.EconomicCode = details.EconomicCode; insuranceJob.InsuranceJobTitle = details.InsuranceJobTitle; - insuranceJob.InsuranceJobItems = _insuranceJobItemRepositpry.GetInsuranceJobItemByInsuranceJobId(id); + insuranceJob.InsuranceJobItems = _insuranceJobItemRepositpry.GetInsuranceJobItemByInsuranceJobId(id, year, month); + var item = insuranceJob.InsuranceJobItems.FirstOrDefault(); + insuranceJob.StartDateFa = item != null ? $"{item.StartDate.ToFarsi()}" : "-"; + insuranceJob.EndDateFa = item != null ? $"{item.EndDate.ToFarsi()}" : "-"; return insuranceJob; } @@ -64,20 +69,21 @@ public class InsuranceJobRepository : RepositoryBase, IInsur var searcheDate = ($"{year}/{month}/01").ToGeorgianDateTime(); var query = _context.InsuranceJobs - .Include(x=>x.InsuranceJobItemList).Where(x=>x.InsuranceJobItemList.Any(i=>i.StartDate <= searcheDate && i.EndDate >= searcheDate)) + .Include(x => x.InsuranceJobItemList).Where(x => x.InsuranceJobItemList.Any(i => i.StartDate <= searcheDate && i.EndDate >= searcheDate)) .Select(x => new InsuranceJobViewModel - { - Id = x.id, - InsuranceJobTitle = x.InsuranceJobTitle, - EconomicCode = x.EconomicCode, - Year = year - - - }); + { + Id = x.id, + InsuranceJobTitle = x.InsuranceJobTitle, + EconomicCode = x.EconomicCode, + Year = year, + Month = month, + + + }); if (!string.IsNullOrWhiteSpace(searchModel.EconomicCode)) - query = query.Where(x => x.EconomicCode.Contains(searchModel.EconomicCode)); - + query = query.Where(x => x.EconomicCode.Contains(searchModel.EconomicCode)); + if (!string.IsNullOrWhiteSpace(searchModel.InsuranceJobTitle)) query = query.Where(x => x.InsuranceJobTitle.Contains(searchModel.InsuranceJobTitle)); @@ -114,7 +120,7 @@ public class InsuranceJobRepository : RepositoryBase, IInsur var percentage2 = new Percentage(item.PercentageMoreThan); _percentageRepository.Create(percentage2); } - + _percentageRepository.SaveChanges(); } // SaveChanges(); @@ -123,7 +129,7 @@ public class InsuranceJobRepository : RepositoryBase, IInsur result.Message = "ثبت اطلاعات با موفقیت انجام شد"; } catch (Exception ex) - { + { transaction.Rollback(); result.Failed("ثبت اطلاعات با خطا مواجه شد"); } @@ -133,20 +139,19 @@ public class InsuranceJobRepository : RepositoryBase, IInsur public List<(long id, string date)> GetOldYersInsuranceItemIds() { - var res = _context.InsuranceJobItems - .GroupBy(x => x.StartDate) - .Select(g => g.First()) - + var res = _context.InsuranceJobItems.Where(x=>x.StartDate != null && x.EndDate != null) + .GroupBy(x => x.StartDate) + .Select(g => g.First()) .ToList().Select(x => new InsuranceJobItemViewModel() - { - Id = x.id, - StartDate = x.StartDate, - EndDate = x.EndDate, + { + Id = x.id, + StartDate = x.StartDate, + EndDate = x.EndDate, - }); - - return res.Select(x=> (x.Id, $"{(x.StartDate.HasValue ? x.StartDate.Value.ToFarsi() : "نامشخص")} - {(x.EndDate.HasValue ? x.EndDate.Value.ToFarsi() : "نامشخص")}")).ToList(); + }); + + return res.Select(x => (x.Id, $"{(x.StartDate.HasValue ? x.StartDate.Value.ToFarsi() : "نامشخص")} - {(x.EndDate.HasValue ? x.EndDate.Value.ToFarsi() : "نامشخص")}")).ToList(); } @@ -166,7 +171,7 @@ public class InsuranceJobRepository : RepositoryBase, IInsur catch (Exception e) { return op.Failed("تاریخ به درستی وارد نشده است"); - + } @@ -177,29 +182,42 @@ public class InsuranceJobRepository : RepositoryBase, IInsur var insuranceJobItemObj = _insuranceJobItemRepositpry.Get(command.InsuranceJobItemId); if (insuranceJobItemObj == null) return op.Failed("آیتم شغلی انتخاب شده وجود ندارد"); - var insuranceJobItemList = _context.InsuranceJobItems.Where(x => x.StartDate == insuranceJobItemObj.StartDate).Select(x => new InsuranceJobItemViewModel() - { - PercentageLessThan = 0, - PercentageMoreThan = 0, - InsuranceJobId = insuranceJobItemObj.InsuranceJobId, - StartDate = startDateGr, - EndDate = endDateGr, - }); + var insuranceJobItemList = _context.InsuranceJobItems + .Include(jobs => jobs.InsuranceJobAndJobs) + .Where(x => x.StartDate == insuranceJobItemObj.StartDate).Select(x => new InsuranceJobItemViewModel() + { + PercentageLessThan = x.PercentageLessThan, + PercentageMoreThan = x.PercentageMoreThan, + InsuranceJobId = x.InsuranceJobId, + StartDate = startDateGr, + EndDate = endDateGr, + JobIds = x.InsuranceJobAndJobs.Select(j => j.JobId).ToList() + }).ToList(); if (!insuranceJobItemList.Any()) return op.Failed("خطا"); + List percentaegJoin = new List(); + var percentageLessThan = insuranceJobItemList.Select(x => x.PercentageLessThan).ToList(); + var percentageMoreThan = insuranceJobItemList.Select(x => x.PercentageMoreThan).ToList(); + if (percentageMoreThan != null) + { + percentaegJoin = percentageLessThan + .Concat(percentageMoreThan) + .Distinct() + .ToList(); + } - using (var transaction = _context.Database.BeginTransaction()) { try { - + foreach (var item in insuranceJobItemList) { - + _insuranceJobItemRepositpry.CreateInsuranceJobItem(item); + if (!_percentageRepository.Exists(x => x.Percent == item.PercentageLessThan)) { var percentage = new Percentage(item.PercentageLessThan); @@ -214,6 +232,33 @@ public class InsuranceJobRepository : RepositoryBase, IInsur _percentageRepository.SaveChanges(); } + + var dateSalary = new DateSalary(command.StartDate, command.EndDate); + _context.DateSalaries.Add(dateSalary); + _context.SaveChanges(); + var percentages = _context.Percentages.Select(x=> new{x.id, x.Percent}).ToList(); + var dateSalaryItemList = new List(); + foreach (var percent in percentaegJoin) + { + var percentageId = percentages.FirstOrDefault(x => x.Percent == percent); + if (percentageId != null) + { + + var dateSalaryItem = new DateSalaryItem(percent, percentageId.id, 0, dateSalary.id); + dateSalaryItemList.Add(dateSalaryItem); + } + + + } + + if (dateSalaryItemList.Count > 0) + { + _context.DateSalaryItems.AddRange(dateSalaryItemList); + _context.SaveChanges(); + } + + + // SaveChanges(); transaction.Commit(); op.IsSuccedded = true; @@ -236,7 +281,7 @@ public class InsuranceJobRepository : RepositoryBase, IInsur { try { - var insuranceJobItems = _context.InsuranceJobItems.Where(x=>x.InsuranceJobId==id).ToList(); + var insuranceJobItems = _context.InsuranceJobItems.Where(x => x.InsuranceJobId == id).ToList(); _context.InsuranceJobItems.RemoveRange(insuranceJobItems); var insuranceJobObj = Get(id); @@ -266,33 +311,37 @@ public class InsuranceJobRepository : RepositoryBase, IInsur { var insuranceJob = Get(command.Id); insuranceJob.Edit(command.InsuranceJobTitle, command.YearlySalaryId, command.EconomicCode, command.Year); - - var insuranceJobItemsIds = _context.InsuranceJobItems.Where(x => x.InsuranceJobId == command.Id).Select(x=>x.id).ToList(); + 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(); - + DateTime? startDate = insuranceJobItems.Select(x => x.StartDate).FirstOrDefault(); + DateTime? endDate = insuranceJobItems.Select(x => x.EndDate).FirstOrDefault(); + var insuranceJobItemsIds = insuranceJobItems.Select(x => x.id).ToList(); foreach (var item in command.InsuranceJobItems) { - long deleteId = insuranceJobItemsIds.Where(x => x==item.Id).FirstOrDefault(); - if (deleteId !=0) - { insuranceJobItemsIds.Remove(deleteId);} + long deleteId = insuranceJobItemsIds.Where(x => x == item.Id).FirstOrDefault(); + if (deleteId != 0) + { insuranceJobItemsIds.Remove(deleteId); } if (item.Id == 0) { item.PercentageLessThan = item.PercentageLessThan; item.PercentageMoreThan = item.PercentageMoreThan; item.InsuranceJobId = command.Id; + item.StartDate = startDate; + item.EndDate = endDate; _insuranceJobItemRepositpry.CreateInsuranceJobItem(item); } else { var insuranceJobItem = _insuranceJobItemRepositpry.Get(item.Id); - insuranceJobItem.Edit(item.PercentageLessThan, item.SalaeyLessThan, item.PercentageMoreThan, item.SalaryMoreThan, command.Id,item.StartDate,item.EndDate); + insuranceJobItem.Edit(item.PercentageLessThan, item.SalaeyLessThan, item.PercentageMoreThan, item.SalaryMoreThan, command.Id, startDate, endDate); #region JobAndJob - var jobAndJobList = _context.InsuranceJobAndJobsSet .Where(x => x.InsuranceJobItemId == item.Id).ToList(); + var jobAndJobList = _context.InsuranceJobAndJobsSet.Where(x => x.InsuranceJobItemId == item.Id).ToList(); _context.InsuranceJobAndJobsSet.RemoveRange(jobAndJobList); - List insuranceJobAndJobsList = new List(); + List insuranceJobAndJobsList = new List(); foreach (var item2 in item.JobIds) { var insuranceJobAndJobsObj = new InsuranceJobAndJobs(); @@ -315,15 +364,15 @@ public class InsuranceJobRepository : RepositoryBase, IInsur var percentage2 = new Percentage(item.PercentageMoreThan); _percentageRepository.Create(percentage2); } - _percentageRepository.SaveChanges(); + _percentageRepository.SaveChanges(); #endregion } - + #region removeJobItems var deleteList = _context.InsuranceJobItems.Where(x => insuranceJobItemsIds.Contains(x.id)).ToList(); _context.InsuranceJobItems.RemoveRange(deleteList); #endregion - + _context.SaveChanges(); transaction.Commit(); diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Edit.cshtml b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Edit.cshtml index ad1f3173..e5db4953 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Edit.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Edit.cshtml @@ -26,11 +26,24 @@ -
- - -
- +
+ + +
+
+ +
+ از تاریخ +   + @Model.StartDateFa +   + الی +   + @Model.EndDateFa +
+
+ +
@@ -210,6 +223,8 @@ $('#divData').append(``); $('#divData').append(``); $('#divData').append(``); + $('#divData').append(``); + $('#divData').append(``); $("#worksTable tbody").find('tr').each(function(i) { const ratioLess = $(this).find("input.ratioLess").val(); diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Index.cshtml b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Index.cshtml index 4a7c10aa..7f476910 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Index.cshtml +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Index.cshtml @@ -146,7 +146,7 @@ + href="#showmodal=@Url.Page("./Index", "Edit", new { item.Id, item.Year, item.Month })"> diff --git a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Index.cshtml.cs b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Index.cshtml.cs index 8ed82289..b8b5001a 100644 --- a/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Index.cshtml.cs +++ b/ServiceHost/Areas/Admin/Pages/Company/InsuranceJob/Index.cshtml.cs @@ -37,7 +37,11 @@ public class IndexModel : PageModel public void OnGet(InsuranceJobSearchModel searchModel) { - YearlyList = _yearlySalaryApplication.GetYears(); + if(!string.IsNullOrWhiteSpace(searchModel.Year)) + Console.WriteLine(searchModel.Year); + if (!string.IsNullOrWhiteSpace(searchModel.Month)) + Console.WriteLine(searchModel.Month); + YearlyList = _yearlySalaryApplication.GetYears(); var insuranceJobs = _insuranceJobApplication.Search(searchModel); InsuranceJobList = insuranceJobs; @@ -120,9 +124,9 @@ public class IndexModel : PageModel }); } - public IActionResult OnGetDetails(long id) + public IActionResult OnGetDetails(long id, string year, string month) { - var details = _insuranceJobApplication.GetDetails(id); + var details = _insuranceJobApplication.GetDetails(id, year, month); return Partial("Details", details); } @@ -178,15 +182,18 @@ public class IndexModel : PageModel return new JsonResult(result); } - public IActionResult OnGetEdit(long id) + public IActionResult OnGetEdit(long id,string year, string month) { var model = new EditInsuranceJob(); - model = _insuranceJobApplication.GetDetails(id); + model = _insuranceJobApplication.GetDetails(id, year, month); + model.Year = year; + model.Month = month; return Partial("./Edit", model); } public IActionResult OnPostEdit(EditInsuranceJob command) { + Console.WriteLine(command.Year); var result = _insuranceJobApplication.Edit(command); return new JsonResult(result); }