Files
Backend-Api/CompanyManagment.EFCore/Repository/DateSalaryRepository.cs
2025-05-10 20:37:38 +03:30

160 lines
5.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using _0_Framework.Application;
using _0_Framework.InfraStructure;
using Company.Domain.DateSalaryAgg;
using Company.Domain.DateSalaryItemAgg;
using CompanyManagment.App.Contracts.DateSalary;
namespace CompanyManagment.EFCore.Repository;
public class DateSalaryRepository : RepositoryBase<long, DateSalary>, IDateSalaryRepository
{
private readonly CompanyContext _context;
private readonly IDateSalaryItemRepository _dateSalaryItemRepository;
public DateSalaryRepository(CompanyContext context, IDateSalaryItemRepository dateSalaryItemRepository) : base(context)
{
_context = context;
_dateSalaryItemRepository = dateSalaryItemRepository;
}
public EditDateSalary GetDetails(long id)
{
//return _context.DateSalaries.Select(x => new EditDateSalary()
//{
// StartDateFa = x.StartDateFa,
// EndDateFa = x.EndDateFa,
//}).FirstOrDefault(x => x.Id == id);
var dateSalary = Get(id);
EditDateSalary dateSalaryViewModel = new EditDateSalary();
dateSalaryViewModel.Id = id;
dateSalaryViewModel.EndDateFa = dateSalary.EndDateFa;
dateSalaryViewModel.StartDateFa = dateSalary.StartDateFa;
return dateSalaryViewModel;
}
public List<DateSalaryViewModel> Search(DateSalarySearchModel searchModel)
{
var query = _context.DateSalaries.Select(x => new DateSalaryViewModel()
{ Id = x.id,
Year = x.Year,
StartDateFa = x.StartDateFa,
EndDateFa = x.EndDateFa,
});
var list = query.OrderByDescending(x => x.Id).ToList();
if(!string.IsNullOrWhiteSpace(searchModel.Year))
list = list.Where(x=>x.Year==searchModel.Year).OrderByDescending(x => x.Month).ToList();
if (!string.IsNullOrWhiteSpace(searchModel.Month))
list = list.Where(x => x.Year == searchModel.Month).OrderByDescending(x => x.Year).ToList();
return list;
}
public DateSalaryViewModel GetDateSalaryViewModel(DateSalarySearchModel searchModel)
{
var query = _context.DateSalaries.FirstOrDefault(x => x.StartDateGr < searchModel.EndDateGr && x.EndDateGr > searchModel.StartDateGr);
var dateSalary = new DateSalaryViewModel();
if (query != null)
{
dateSalary.Id = query.id;
dateSalary.Year = query.Year;
dateSalary.StartDateFa = query.StartDateFa;
dateSalary.EndDateFa = query.EndDateFa;
//dateSalary.StartDateGr = x.StartDateGr;
//dateSalary.EndDateGr = x.EndDateGr;
}
return dateSalary;
}
public bool CreateDateSalaryItemForInsuranceJob(CreateDateSalaryForInsuranceJob command)
{
using (var transaction = _context.Database.BeginTransaction())
{
try
{
var dateSalary = new DateSalary(command.StartDateFa, command.EndDateFa);
Create(dateSalary);
SaveChanges();
command.DateSalaryItems = command.DateSalaryItems.Where(x => x.Salary > 0).ToList();
foreach (var item in command.DateSalaryItems)
{
var dateSalaryItem = new DateSalaryItem(item.Percent, item.PercentageId, Convert.ToInt64(item.Salary), dateSalary.id);
_dateSalaryItemRepository.Create(dateSalaryItem);
}
_dateSalaryItemRepository.SaveChanges();
transaction.Commit();
return true;
}
catch (Exception ex)
{
transaction.Rollback();
return false;
}
}
}
public bool EditDateSalaryItemForInsuranceJob(CreateDateSalaryForInsuranceJob command)
{
using (var transaction = _context.Database.BeginTransaction())
{
try
{
var dateSalary = Get(command.Id);
dateSalary.Edit(command.StartDateFa, command.EndDateFa);
SaveChanges();
command.DateSalaryItems = command.DateSalaryItems.Where(x => x.Salary > 0).ToList();
foreach (var item in command.DateSalaryItems)
{
if (item.Id == 0)
{
var dateSalaryItem = new DateSalaryItem(item.Percent, item.PercentageId, Convert.ToInt64(item.Salary), dateSalary.id);
_dateSalaryItemRepository.Create(dateSalaryItem);
}
else
{
var dateSalaryItem = _dateSalaryItemRepository.Get(item.Id);
dateSalaryItem.Edit(item.Percent, item.PercentageId, Convert.ToInt64(item.Salary));
}
}
_dateSalaryItemRepository.SaveChanges();
transaction.Commit();
return true;
}
catch (Exception ex)
{
transaction.Rollback();
return false;
}
}
}
public bool Remove(long id)
{
using (var transaction = _context.Database.BeginTransaction())
{
try
{
var dateSalaryItems = _context.DateSalaryItems.Where(x => x.DateSalaryId == id).ToList();
_context.DateSalaryItems.RemoveRange(dateSalaryItems);
_dateSalaryItemRepository.SaveChanges();
var dateSalary = Get(id);
_context.DateSalaries.Remove(dateSalary);
SaveChanges();
transaction.Commit();
return true;
}
catch (Exception ex)
{
transaction.Rollback();
return false;
}
}
}
}