222 lines
9.2 KiB
C#
222 lines
9.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using _0_Framework.Application;
|
|
using _0_Framework.InfraStructure;
|
|
using Company.Domain.InsuranceJobAndJobsAgg;
|
|
using Company.Domain.InsuranceJobItemAgg;
|
|
using Company.Domain.InsurancJobAgg;
|
|
using Company.Domain.PercentageAgg;
|
|
using CompanyManagment.App.Contracts.InsuranceJob;
|
|
|
|
|
|
namespace CompanyManagment.EFCore.Repository;
|
|
|
|
public class InsuranceJobRepository : RepositoryBase<long, InsuranceJob>, IInsuranceJobRepositpry
|
|
{
|
|
private readonly CompanyContext _context;
|
|
private readonly IInsuranceJobItemRepositpry _insuranceJobItemRepositpry;
|
|
private readonly IPercentageRepository _percentageRepository;
|
|
public InsuranceJobRepository(CompanyContext context, IInsuranceJobItemRepositpry insuranceJobItemRepositpry , IPercentageRepository percentageRepository) : base(context)
|
|
{
|
|
_context = context;
|
|
_insuranceJobItemRepositpry = insuranceJobItemRepositpry;
|
|
_percentageRepository = percentageRepository;
|
|
}
|
|
|
|
public EditInsuranceJob GetDetails(long id)
|
|
{
|
|
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);
|
|
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)
|
|
{
|
|
var query = _context.InsuranceJobs.Select(x => new InsuranceJobViewModel
|
|
{
|
|
Id = x.id,
|
|
InsuranceJobTitle = x.InsuranceJobTitle,
|
|
EconomicCode = x.EconomicCode
|
|
});
|
|
|
|
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();
|
|
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;
|
|
_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();
|
|
}
|
|
// 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();
|
|
using (var transaction = _context.Database.BeginTransaction())
|
|
{
|
|
try
|
|
{
|
|
var insuranceJobItems = _context.InsuranceJobItems.Where(x=>x.InsuranceJobId==id).ToList();
|
|
_context.InsuranceJobItems.RemoveRange(insuranceJobItems);
|
|
|
|
var insuranceJobObj = Get(id);
|
|
_context.InsuranceJobs.Remove(insuranceJobObj);
|
|
|
|
_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 insuranceJobItemsIds = _context.InsuranceJobItems.Where(x => x.InsuranceJobId == command.Id).Select(x=>x.id).ToList();
|
|
//List<long> deleteIds = new List<long>();
|
|
|
|
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;
|
|
_insuranceJobItemRepositpry.CreateInsuranceJobItem(item);
|
|
}
|
|
else
|
|
{
|
|
var insuranceJobItem = _insuranceJobItemRepositpry.Get(item.Id);
|
|
insuranceJobItem.Edit(item.PercentageLessThan, item.SalaeyLessThan, item.PercentageMoreThan, item.SalaryMoreThan, command.Id);
|
|
|
|
#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
|
|
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();
|
|
#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;
|
|
}
|
|
} |