163 lines
5.9 KiB
C#
163 lines
5.9 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,
|
|
StartDateGr = x.StartDateGr,
|
|
EndDateGr = x.EndDateGr
|
|
|
|
});
|
|
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.OrderByDescending(x=>x.StartDateGr).ToList();
|
|
}
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
|
|
} |