dateSalary create

This commit is contained in:
SamSys
2025-05-19 20:34:44 +03:30
parent 2fffa67ff6
commit 8078d8bfdd
12 changed files with 153 additions and 72 deletions

View File

@@ -14,7 +14,7 @@ public interface IInsuranceJobRepositpry:IRepository<long, InsuranceJob>
{
//OperationResult Create(CreateInsurancJob command);
// OperationResult Edit(EditInsurancJob command);
EditInsuranceJob GetDetails(long id);
EditInsuranceJob GetDetails(long id, string year, string month);
List<InsuranceJobViewModel> GetInsurancJob();
List<InsuranceJobViewModel> Search(InsuranceJobSearchModel searchModel);
OperationResult CreateInsuranceJob(CreateInsuranceJob command);
@@ -22,5 +22,7 @@ public interface IInsuranceJobRepositpry:IRepository<long, InsuranceJob>
OperationResult CopyFromLastYear(CopyFromLastYearViewModel command);
OperationResult Remove(long id);
OperationResult EditInsuranceJob(EditInsuranceJob command);
}

View File

@@ -14,7 +14,7 @@ public interface IInsuranceJobItemRepositpry : IRepository<long, InsuranceJobIte
{
void CreateInsuranceJobItem(InsuranceJobItemViewModel model);
DetailsInsuranceJobItem GetDetails(long id);
List<InsuranceJobItemViewModel> GetInsuranceJobItemByInsuranceJobId(long Id);
List<InsuranceJobItemViewModel> GetInsuranceJobItemByInsuranceJobId(long Id, string year, string month);
List<InsuranceJobItemViewModel> Search(InsuranceJobItemSearchModel searchModel);
InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId);

View File

@@ -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<JobViewModel> Jobs { get; set; }
public List<InsuranceJobItemViewModel> InsuranceJobItems { get; set; }
}

View File

@@ -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<InsuranceJobViewModel> GetInsurancJob();
List<InsuranceJobViewModel> Search(InsuranceJobSearchModel searchModel);

View File

@@ -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<InsuranceJobItemViewModel> InsuranceJobItemViewModels { get; set; }
}

View File

@@ -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<InsuranceJobViewModel> GetInsurancJob()

View File

@@ -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);

View File

@@ -44,7 +44,7 @@ public class InsuranceJobItemRepository : RepositoryBase<long, InsuranceJobItem>
throw new NotImplementedException();
}
public List<InsuranceJobItemViewModel> GetInsuranceJobItemByInsuranceJobId(long Id)
public List<InsuranceJobItemViewModel> 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<long, InsuranceJobItem>
// 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<InsuranceJobItemViewModel>();
foreach (var item in insuranceJobItems)
@@ -106,6 +106,8 @@ public class InsuranceJobItemRepository : RepositoryBase<long, InsuranceJobItem>
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 =>

View File

@@ -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<long, InsuranceJob>, 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<long, InsuranceJob>, 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<long, InsuranceJob>, 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<long, InsuranceJob>, IInsur
var percentage2 = new Percentage(item.PercentageMoreThan);
_percentageRepository.Create(percentage2);
}
_percentageRepository.SaveChanges();
}
// SaveChanges();
@@ -123,7 +129,7 @@ public class InsuranceJobRepository : RepositoryBase<long, InsuranceJob>, IInsur
result.Message = "ثبت اطلاعات با موفقیت انجام شد";
}
catch (Exception ex)
{
{
transaction.Rollback();
result.Failed("ثبت اطلاعات با خطا مواجه شد");
}
@@ -133,20 +139,19 @@ public class InsuranceJobRepository : RepositoryBase<long, InsuranceJob>, 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<long, InsuranceJob>, IInsur
catch (Exception e)
{
return op.Failed("تاریخ به درستی وارد نشده است");
}
@@ -177,29 +182,42 @@ public class InsuranceJobRepository : RepositoryBase<long, InsuranceJob>, 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<double> percentaegJoin = new List<double>();
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<long, InsuranceJob>, 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<DateSalaryItem>();
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<long, InsuranceJob>, 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<long, InsuranceJob>, 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<long> deleteIds = new List<long>();
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 <InsuranceJobAndJobs> insuranceJobAndJobsList = new List<InsuranceJobAndJobs>();
List<InsuranceJobAndJobs> insuranceJobAndJobsList = new List<InsuranceJobAndJobs>();
foreach (var item2 in item.JobIds)
{
var insuranceJobAndJobsObj = new InsuranceJobAndJobs();
@@ -315,15 +364,15 @@ public class InsuranceJobRepository : RepositoryBase<long, InsuranceJob>, 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();

View File

@@ -26,11 +26,24 @@
<input type="text" placeholder="" class="input" id="insuranceJobTitle" asp-for="InsuranceJobTitle" tabindex="1">
</div>
<div class="col-md-12 inputs" style="display:flex;">
<label> کد اقتصادی </label>
<input type="text" placeholder="" class="input" style="direction: rtl;" id="economicCode" asp-for="EconomicCode" tabindex="2">
</div>
<div class="col-md-12 inputs" style="display:flex;">
<label> کد اقتصادی </label>
<input type="text" placeholder="" class="input" style="direction: rtl;" id="economicCode" asp-for="EconomicCode" tabindex="2">
</div>
<div class="row" style="text-align: center">
<div class="col-xs-12">
<span>از تاریخ</span>
<span>&nbsp;</span>
<span>@Model.StartDateFa</span>
<span>&nbsp;</span>
<span>الی</span>
<span>&nbsp;</span>
<span>@Model.EndDateFa</span>
</div>
</div>
<input type="hidden" id="yearHidden" asp-for="Year"/>
<input type="hidden" id="monthHidden" asp-for="Month"/>
<div class="col-md-12 inputs" id="table-container">
<table id="worksTable" class="table table-bordered table-striped">
<thead style="background-color:#a9fcff">
@@ -210,6 +223,8 @@
$('#divData').append(`<input type="hidden" name="EconomicCode" id="EconomicCode" value="${$("#economicCode").val()}" />`);
$('#divData').append(`<input type="hidden" name="Id" id="Id" value="${@Model.Id}" />`);
$('#divData').append(`<input type="hidden" name="InsuranceJobTitle" id="InsuranceJobTitle" value="${$("#insuranceJobTitle").val()}" />`);
$('#divData').append(`<input type="hidden" name="Year" id="Year" value="${$("#yearHidden").val()}" />`);
$('#divData').append(`<input type="hidden" name="Month" id="Month" value="${$("#monthHidden").val()}" />`);
$("#worksTable tbody").find('tr').each(function(i) {
const ratioLess = $(this).find("input.ratioLess").val();

View File

@@ -146,7 +146,7 @@
<i class="fa fa-file-text ionSize"></i>
</a>
<a class="btn btn-warning pull-left op-btn rad"
href="#showmodal=@Url.Page("./Index", "Edit", new { item.Id })">
href="#showmodal=@Url.Page("./Index", "Edit", new { item.Id, item.Year, item.Month })">
<i class="fa fa-edit faSize"></i>
</a>
</td>

View File

@@ -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);
}