Files
Backend-Api/CompanyManagment.EFCore/Repository/InsuranceJobItemRepository.cs
2025-05-23 22:35:45 +03:30

183 lines
8.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 CompanyManagment.App.Contracts.DateSalaryItem;
using CompanyManagment.App.Contracts.InsuranceJobItem;
using CompanyManagment.App.Contracts.Job;
using Microsoft.EntityFrameworkCore;
namespace CompanyManagment.EFCore.Repository;
public class InsuranceJobItemRepository : RepositoryBase<long, InsuranceJobItem>, IInsuranceJobItemRepositpry
{
private readonly CompanyContext _context;
public InsuranceJobItemRepository(CompanyContext context) : base(context)
{
_context = context;
}
public void CreateInsuranceJobItem(InsuranceJobItemViewModel model)
{
InsuranceJobItem incuranceJobItemObj = new InsuranceJobItem(0, 0,
0, 0, model.InsuranceJobId, model.StartDate,model.EndDate);
_context.InsuranceJobItems.Add(incuranceJobItemObj);
_context.SaveChanges();
List<InsuranceJobAndJobs> insuranceJobAndJobsList = new List<InsuranceJobAndJobs>();
foreach (var item in model.JobIds)
{
var insuranceJobAndJobsObj = new InsuranceJobAndJobs();
insuranceJobAndJobsObj.JobId = item;
insuranceJobAndJobsObj.InsuranceJobItemId = incuranceJobItemObj.id;
insuranceJobAndJobsList.Add(insuranceJobAndJobsObj);
}
_context.InsuranceJobAndJobsSet.AddRange(insuranceJobAndJobsList);
_context.SaveChanges();
}
public DetailsInsuranceJobItem GetDetails(long id)
{
throw new NotImplementedException();
}
public List<InsuranceJobItemViewModel> GetInsuranceJobItemByInsuranceJobId(long Id, string year, string month)
{
//var list = _context.InsuranceJobItems.Where(x => x.InsuranceJobId == Id).ToList().Select(x=>new InsuranceJobItemViewModel()
//{
// Id =x.id,
// PercentageLessThan=x.PercentageLessThan,
// PercentageMoreThan=x.PercentageMoreThan,
// SalaeyLessThan=x.SalaeyLessThan,
// SalaryMoreThan = x.SalaryMoreThan,
// SalaeyLessThanString = x.SalaryMoreThan.ToMoney(),
// SalaryMoreThanString = x.SalaryMoreThan.ToMoney(),
// InsuranceJobId = x.InsuranceJobId,
// JobIds = _context.InsuranceJobAndJobsSet.Where(p => p.InsuranceJobItemId == x.id).Select(p=>p.JobId).ToList()
//});
//var insuranceJobItemIds = _context.InsuranceJobAndJobsSet.Where(x => x.JobId == Id).Select(x=>x.InsuranceJobItemId).ToList();
//var insuranceJobItems = _context.InsuranceJobItems.Where(x => insuranceJobItemIds.Contains(x.InsuranceJobId)).ToList();
//var list = new List<InsuranceJobItemViewModel>();
//foreach (var item in insuranceJobItems)
//{
// var obj = new InsuranceJobItemViewModel();
// obj.Id = item.id;
// obj.PercentageLessThan = item.PercentageLessThan;
// obj.PercentageMoreThan = item.PercentageMoreThan;
// obj.SalaeyLessThan = item.SalaeyLessThan;
// obj.SalaryMoreThan = item.SalaryMoreThan;
// obj.SalaeyLessThanString = item.SalaryMoreThan.ToMoney();
// obj.SalaryMoreThanString = item.SalaryMoreThan.ToMoney();
// obj.InsuranceJobId = item.InsuranceJobId;
// 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 =>
// new JobViewModel()
// {
// Id = x.id,
// JobName = x.JobName,
// JobCode = x.JobCode,
// }).ToList();
// list.Add(obj);
//}
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>();
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 = lessThan > 0 ? lessThan.ToMoney() : "0";
obj.SalaryMoreThanString = moreThan > 0 ? moreThan.ToMoney() : "0";
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 =>
new JobViewModel()
{
Id = x.id,
JobName = x.JobName,
JobCode = x.JobCode,
}).ToList();
list.Add(obj);
}
return list.ToList();
}
public InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId, string year, string month)
{
var searcheDate = ($"{year}/{month}/01").ToGeorgianDateTime();
var insuranceJobItemViewModel = new InsuranceJobItemViewModel();
var insuranceJobItems = _context.InsuranceJobItems.Where(i => i.InsuranceJobId == insuranceJobId && i.StartDate <= searcheDate && i.EndDate >= searcheDate).ToList();
var insuranceJobItemIds = insuranceJobItems.Select(x => x.id).ToList();
var jobAndJob = _context.InsuranceJobAndJobsSet
.Where(x => insuranceJobItemIds.Contains(x.InsuranceJobItemId) && x.JobId == jobId).FirstOrDefault();
if (jobAndJob != null)
{
var item = insuranceJobItems.Where(x => x.id == jobAndJob.InsuranceJobItemId).FirstOrDefault();
insuranceJobItemViewModel.Id = item.id;
insuranceJobItemViewModel.PercentageLessThan = item.PercentageLessThan;
insuranceJobItemViewModel.PercentageMoreThan = item.PercentageMoreThan;
insuranceJobItemViewModel.SalaeyLessThan = item.SalaeyLessThan;
insuranceJobItemViewModel.SalaryMoreThan = item.SalaryMoreThan;
insuranceJobItemViewModel.SalaeyLessThanString = item.SalaryMoreThan.ToMoney();
insuranceJobItemViewModel.SalaryMoreThanString = item.SalaryMoreThan.ToMoney();
insuranceJobItemViewModel.InsuranceJobId = item.InsuranceJobId;
}
return insuranceJobItemViewModel;
}
public (List<string> workshopList, bool hasAnyWorkshop) GetWorkshopUsedThisInsuranceJob(long insuranceJobId)
{
var workshops = _context.Workshops.Where(x => x.InsuranceJobId == insuranceJobId);
if (!workshops.Any())
{
return (new List<string>(), false);
}
return (workshops.Select(x => x.WorkshopFullName).ToList(), true);
}
public List<InsuranceJobItemViewModel> Search(InsuranceJobItemSearchModel searchModel)
{
throw new NotImplementedException();
}
}