582 lines
25 KiB
C#
582 lines
25 KiB
C#
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Threading.Tasks;
|
||
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;
|
||
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;
|
||
|
||
|
||
namespace CompanyManagment.EFCore.Repository;
|
||
|
||
public class InsuranceJobRepository : RepositoryBase<long, InsuranceJob>, IInsuranceJobRepositpry
|
||
{
|
||
private readonly CompanyContext _context;
|
||
private readonly TestDbContext _testDbContext;
|
||
private readonly IInsuranceJobItemRepositpry _insuranceJobItemRepositpry;
|
||
private readonly IPercentageRepository _percentageRepository;
|
||
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)
|
||
{
|
||
var insuranceJob = new EditInsuranceJob();
|
||
var details = Get(id);
|
||
insuranceJob.Id = id;
|
||
insuranceJob.Year = details.Year;
|
||
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;
|
||
}
|
||
|
||
public List<InsuranceJobViewModel> GetInsurancJob()
|
||
{
|
||
var list = _context.InsuranceJobs.Select(x => new InsuranceJobViewModel
|
||
{
|
||
Id = x.id,
|
||
InsuranceJobTitle = x.InsuranceJobTitle,
|
||
EconomicCode = x.EconomicCode
|
||
}).ToList();
|
||
return list;
|
||
}
|
||
|
||
public List<InsuranceJobViewModel> Search(InsuranceJobSearchModel searchModel)
|
||
{
|
||
|
||
string now = Tools.ToFarsi(DateTime.Now);
|
||
string year = now.Substring(0, 4);
|
||
string month = now.Substring(5, 2);
|
||
if (!string.IsNullOrWhiteSpace(searchModel.Year))
|
||
year = searchModel.Year;
|
||
if (!string.IsNullOrWhiteSpace(searchModel.Month))
|
||
month = searchModel.Month;
|
||
|
||
|
||
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))
|
||
.Select(x => new InsuranceJobViewModel
|
||
{
|
||
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));
|
||
|
||
if (!string.IsNullOrWhiteSpace(searchModel.InsuranceJobTitle))
|
||
query = query.Where(x => x.InsuranceJobTitle.Contains(searchModel.InsuranceJobTitle));
|
||
|
||
return query.OrderByDescending(x => x.Id).ToList();
|
||
}
|
||
|
||
public OperationResult CreateInsuranceJob(CreateInsuranceJob command)
|
||
{
|
||
OperationResult result = new OperationResult();
|
||
var insuranceJobItemObj = _insuranceJobItemRepositpry.Get(command.InsuranceJobItemId);
|
||
if (insuranceJobItemObj == null)
|
||
return result.Failed("آیتم شغلی انتخاب شده وجود ندارد");
|
||
|
||
List<double> percentaegJoin = new List<double>();
|
||
var percentageLessThan = command.InsuranceJobItems.Select(x => x.PercentageLessThan).ToList();
|
||
var percentageMoreThan = command.InsuranceJobItems.Select(x => x.PercentageMoreThan).ToList();
|
||
if (percentageMoreThan != null)
|
||
{
|
||
percentaegJoin = percentageLessThan
|
||
.Concat(percentageMoreThan)
|
||
.Distinct()
|
||
.ToList();
|
||
}
|
||
using (var transaction = _context.Database.BeginTransaction())
|
||
{
|
||
try
|
||
{
|
||
var insuranceJobObj = new InsuranceJob(command.InsuranceJobTitle, command.YearlySalaryId, command.EconomicCode, command.Year);
|
||
Create(insuranceJobObj);
|
||
SaveChanges();
|
||
foreach (var item in command.InsuranceJobItems)
|
||
{
|
||
item.PercentageLessThan = item.PercentageLessThan;
|
||
item.PercentageMoreThan = item.PercentageMoreThan;
|
||
item.InsuranceJobId = insuranceJobObj.id;
|
||
item.StartDate = insuranceJobItemObj.StartDate;
|
||
item.EndDate = insuranceJobItemObj.EndDate;
|
||
_insuranceJobItemRepositpry.CreateInsuranceJobItem(item);
|
||
|
||
if (!_percentageRepository.Exists(x => x.Percent == item.PercentageLessThan))
|
||
{
|
||
var percentage = new Percentage(item.PercentageLessThan);
|
||
_percentageRepository.Create(percentage);
|
||
}
|
||
|
||
if (!_percentageRepository.Exists(x => x.Percent == item.PercentageMoreThan))
|
||
{
|
||
var percentage2 = new Percentage(item.PercentageMoreThan);
|
||
_percentageRepository.Create(percentage2);
|
||
}
|
||
|
||
_percentageRepository.SaveChanges();
|
||
}
|
||
|
||
var dateSalary = _context.DateSalaries.FirstOrDefault(x =>
|
||
x.StartDateGr == insuranceJobItemObj.StartDate && x.EndDateGr == insuranceJobItemObj.EndDate);
|
||
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();
|
||
result.IsSuccedded = true;
|
||
result.Message = "ثبت اطلاعات با موفقیت انجام شد";
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
transaction.Rollback();
|
||
result.Failed("ثبت اطلاعات با خطا مواجه شد");
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
public List<(long id, string date)> GetOldYersInsuranceItemIds()
|
||
{
|
||
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,
|
||
|
||
|
||
}).OrderByDescending(x=>x.StartDate);
|
||
|
||
return res.Select(x => (x.Id, $"{(x.StartDate.HasValue ? x.StartDate.Value.ToFarsi() : "نامشخص")} - {(x.EndDate.HasValue ? x.EndDate.Value.ToFarsi() : "نامشخص")}")).ToList();
|
||
|
||
}
|
||
|
||
public OperationResult CopyFromLastYear(CopyFromLastYearViewModel command)
|
||
{
|
||
var op = new OperationResult();
|
||
if (command.InsuranceJobItemId == 0)
|
||
return op.Failed("بازه را انتخاب کنید");
|
||
DateTime startDateGr = new DateTime();
|
||
DateTime endDateGr = new DateTime();
|
||
try
|
||
{
|
||
startDateGr = command.StartDate.ToGeorgianDateTime();
|
||
endDateGr = command.EndDate.ToGeorgianDateTime();
|
||
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
return op.Failed("تاریخ به درستی وارد نشده است");
|
||
|
||
}
|
||
|
||
|
||
var chekExist = _insuranceJobItemRepositpry.Exists(x => x.StartDate < endDateGr && x.EndDate > startDateGr);
|
||
if (chekExist)
|
||
return op.Failed("بازه تاریخ وارد شده با بازه های قبلی تداخل دارد");
|
||
|
||
var insuranceJobItemObj = _insuranceJobItemRepositpry.Get(command.InsuranceJobItemId);
|
||
if (insuranceJobItemObj == null)
|
||
return op.Failed("آیتم شغلی انتخاب شده وجود ندارد");
|
||
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);
|
||
_percentageRepository.Create(percentage);
|
||
}
|
||
|
||
if (!_percentageRepository.Exists(x => x.Percent == item.PercentageMoreThan))
|
||
{
|
||
var percentage2 = new Percentage(item.PercentageMoreThan);
|
||
_percentageRepository.Create(percentage2);
|
||
}
|
||
|
||
_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;
|
||
op.Message = "ثبت اطلاعات با موفقیت انجام شد";
|
||
return op;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
transaction.Rollback();
|
||
return op.Failed("ثبت اطلاعات با خطا مواجه شد");
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
public OperationResult RecoveryOldData1403()
|
||
{
|
||
|
||
OperationResult result = new OperationResult();
|
||
using (var transaction = _context.Database.BeginTransaction())
|
||
{
|
||
try
|
||
{
|
||
var res = _testDbContext.InsuranceJobItems.Include(x => x.InsuranceJobAndJobs).ToList();
|
||
foreach (var item in res)
|
||
{
|
||
var createItem = new InsuranceJobItem(item.PercentageLessThan, 0, item.PercentageMoreThan, 0,
|
||
item.InsuranceJobId, item.StartDate, item.EndDate);
|
||
_context.InsuranceJobItems.Add(createItem);
|
||
_context.SaveChanges();
|
||
Console.WriteLine(createItem.InsuranceJobId + " " + createItem.PercentageLessThan);
|
||
List<InsuranceJobAndJobs> insuranceJobAndJobsList = new List<InsuranceJobAndJobs>();
|
||
foreach (var jobItem in item.InsuranceJobAndJobs)
|
||
{
|
||
var insuranceJobAndJobsObj = new InsuranceJobAndJobs();
|
||
insuranceJobAndJobsObj.JobId = jobItem.JobId;
|
||
insuranceJobAndJobsObj.InsuranceJobItemId = createItem.id;
|
||
insuranceJobAndJobsList.Add(insuranceJobAndJobsObj);
|
||
}
|
||
_context.InsuranceJobAndJobsSet.AddRange(insuranceJobAndJobsList);
|
||
_context.SaveChanges();
|
||
|
||
|
||
if (!_percentageRepository.Exists(x => x.Percent == item.PercentageLessThan))
|
||
{
|
||
var percentage = new Percentage(item.PercentageLessThan);
|
||
_percentageRepository.Create(percentage);
|
||
}
|
||
|
||
if (!_percentageRepository.Exists(x => x.Percent == item.PercentageMoreThan))
|
||
{
|
||
var percentage2 = new Percentage(item.PercentageMoreThan);
|
||
_percentageRepository.Create(percentage2);
|
||
}
|
||
|
||
_percentageRepository.SaveChanges();
|
||
|
||
}
|
||
|
||
transaction.Commit();
|
||
result.IsSuccedded = true;
|
||
result.Message = "حذف اطلاعات با موفقیت انجام شد";
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
transaction.Rollback();
|
||
result.Failed("ثبت اطلاعات با خطا مواجه شد");
|
||
}
|
||
}
|
||
|
||
return result;
|
||
|
||
|
||
}
|
||
public OperationResult Remove(long id)
|
||
{
|
||
OperationResult result = new OperationResult();
|
||
var insuranceJobItems = _context.InsuranceJobItems.Where(x => x.InsuranceJobId == id).ToList();
|
||
var start = insuranceJobItems.FirstOrDefault()!.StartDate;
|
||
var end = insuranceJobItems.FirstOrDefault()!.StartDate;
|
||
var usedParcentsInDateSalaryItems = _context.DateSalaries
|
||
.Where(x => x.StartDateGr == start && x.EndDateGr >= end)
|
||
.Include(x => x.DateSalaryItemList)
|
||
.SelectMany(x => x.DateSalaryItemList)
|
||
.ToList();
|
||
var itemsLessThan = insuranceJobItems.Select(x => x.PercentageLessThan).ToList();
|
||
var itemsMoreThan = insuranceJobItems.Select(x => x.PercentageMoreThan).ToList();
|
||
bool lessThan = usedParcentsInDateSalaryItems.Any(x => itemsLessThan.Contains(x.Percent) && x.Salary > 0);
|
||
bool moreThan = usedParcentsInDateSalaryItems.Any(x => itemsMoreThan.Contains(x.Percent) && x.Salary > 0);
|
||
if (lessThan || moreThan)
|
||
return result.Failed("درصد های این صنف دارای مبلغ می باشند");
|
||
|
||
var percentaegJoin = itemsLessThan
|
||
.Concat(itemsMoreThan)
|
||
.Distinct()
|
||
.ToList();
|
||
using (var transaction = _context.Database.BeginTransaction())
|
||
{
|
||
try
|
||
{
|
||
|
||
_context.InsuranceJobItems.RemoveRange(insuranceJobItems);
|
||
|
||
var insuranceJobObj = Get(id);
|
||
_context.InsuranceJobs.Remove(insuranceJobObj);
|
||
|
||
|
||
|
||
var toBeRemove = usedParcentsInDateSalaryItems.Where(x => percentaegJoin.Contains(x.Percent)).Select(x=>x.id);
|
||
var dateSalaryItemToBeRemovde = _context.DateSalaryItems.Where(x => toBeRemove.Contains(x.id));
|
||
_context.DateSalaryItems.RemoveRange(dateSalaryItemToBeRemovde);
|
||
|
||
_context.SaveChanges();
|
||
transaction.Commit();
|
||
result.IsSuccedded = true;
|
||
result.Message = "حذف اطلاعات با موفقیت انجام شد";
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
transaction.Rollback();
|
||
result.Failed("ثبت اطلاعات با خطا مواجه شد");
|
||
}
|
||
}
|
||
|
||
return result;
|
||
}
|
||
|
||
public OperationResult EditInsuranceJob(EditInsuranceJob command)
|
||
{
|
||
OperationResult result = new OperationResult();
|
||
using (var transaction = _context.Database.BeginTransaction())
|
||
{
|
||
try
|
||
{
|
||
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
|
||
.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);
|
||
}
|
||
|
||
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, startDate, endDate);
|
||
|
||
#region JobAndJob
|
||
|
||
var jobAndJobList = _context.InsuranceJobAndJobsSet.Where(x => x.InsuranceJobItemId == item.Id).ToList();
|
||
_context.InsuranceJobAndJobsSet.RemoveRange(jobAndJobList);
|
||
List<InsuranceJobAndJobs> insuranceJobAndJobsList = new List<InsuranceJobAndJobs>();
|
||
foreach (var item2 in item.JobIds)
|
||
{
|
||
var insuranceJobAndJobsObj = new InsuranceJobAndJobs();
|
||
insuranceJobAndJobsObj.JobId = item2;
|
||
insuranceJobAndJobsObj.InsuranceJobItemId = item.Id;
|
||
insuranceJobAndJobsList.Add(insuranceJobAndJobsObj);
|
||
}
|
||
_context.InsuranceJobAndJobsSet.AddRange(insuranceJobAndJobsList);
|
||
#endregion
|
||
}
|
||
|
||
#region Percentage
|
||
var percentage = new Percentage(item.PercentageLessThan);
|
||
if (!_percentageRepository.Exists(x => x.Percent == item.PercentageLessThan))
|
||
{
|
||
|
||
_percentageRepository.Create(percentage);
|
||
}
|
||
var percentage2 = new Percentage(item.PercentageMoreThan);
|
||
if (!_percentageRepository.Exists(x => x.Percent == 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
|
||
var deleteList = _context.InsuranceJobItems.Where(x => insuranceJobItemsIds.Contains(x.id)).ToList();
|
||
_context.InsuranceJobItems.RemoveRange(deleteList);
|
||
#endregion
|
||
|
||
|
||
_context.SaveChanges();
|
||
transaction.Commit();
|
||
result.IsSuccedded = true;
|
||
result.Message = "ثبت اطلاعات با موفقیت انجام شد";
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
transaction.Rollback();
|
||
result.Failed("ثبت اطلاعات با خطا مواجه شد");
|
||
}
|
||
}
|
||
return result;
|
||
}
|
||
|
||
public async Task<List<InsuranceJobSelectListViewModel>> GetSelectList()
|
||
{
|
||
return await _context.InsuranceJobs.Select(x => new InsuranceJobSelectListViewModel()
|
||
{
|
||
EconomicCode = x.EconomicCode,
|
||
Id = x.id,
|
||
InsuranceJobTitle = x.InsuranceJobTitle
|
||
}).ToListAsync();
|
||
}
|
||
} |