Files
Backend-Api/CompanyManagment.Application/YearlySalaryApplication.cs

166 lines
6.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Threading.Tasks;
using _0_Framework.Application;
using Company.Domain.YearlySalaryAgg;
using CompanyManagment.App.Contracts.Holiday;
using CompanyManagment.App.Contracts.YearlySalary;
using CompanyManagment.EFCore;
namespace CompanyManagment.Application;
public class YearlySalaryApplication : IYearlySalaryApplication
{
private readonly IYearlySalaryRepository _yearlySalaryRepository;
private readonly CompanyContext _context;
public YearlySalaryApplication(IYearlySalaryRepository yearlySalaryRepository, CompanyContext context)
{
_yearlySalaryRepository = yearlySalaryRepository;
_context = context;
}
public List<string> GetYears()
{
return _yearlySalaryRepository.GetYears();
}
public OperationResult Create(CreateYearlySalary command)
{
var start = command.StartDate.ToGeorgianDateTime();
var end = command.EndDate.ToGeorgianDateTime();
var operation = new OperationResult();
if (_yearlySalaryRepository.Exists(x => x.StartDate == start && x.EndDate == end))
return operation.Failed(" تاریخ شروع و پایان تکراری است");
if (_yearlySalaryRepository.Exists(x => x.StartDate == start))
return operation.Failed(" تاریخ شروع تکراری است");
if (_yearlySalaryRepository.Exists(x => x.EndDate == end))
return operation.Failed(" تاریخ پایان تکراری است");
if (start == new DateTime(3000, 12, 20, new PersianCalendar()) && end == new DateTime(3000, 12, 20, new PersianCalendar()))
return operation.Failed("تاریخ شروع و تاریخ پایان صحیح وارد نشده اند");
if(start == new DateTime(3000, 12, 20, new PersianCalendar()))
return operation.Failed("تاریخ شروع صحیح وارد نشده است");
if (end == new DateTime(3000, 12, 20, new PersianCalendar()))
return operation.Failed("تاریخ پایان صحیح وارد نشده است");
//var convertDailyWages = double.Parse(command.DailyWages.ToDoubleMoney());
//if (convertDailyWages == 0)
// return operation.Failed("مبلغ مزد روزانه صحیح نیست");
//var convertCommodityAllowance = double.Parse(command.CommodityAllowance.ToDoubleMoney());
//if (convertCommodityAllowance == 0)
// return operation.Failed("مبلغ کمک هزینه اقلام صحیح نیست");
//var convertBasicSalary = double.Parse(command.BasicSalary.ToDoubleMoney());
//if (convertBasicSalary == 0)
// return operation.Failed("مبلغ مزد پایه صحیح نیست");
//var convertHousingAllowance = double.Parse(command.HousingAllowance.ToDoubleMoney());
//if (convertHousingAllowance == 0)
// return operation.Failed("مبلغ کمک هزینه مسکن صحیح نیست");
//var convertFixedWages = double.Parse(command.FixedWages.ToDoubleMoney());
//if (convertFixedWages == 0)
// return operation.Failed("مبلغ مزد ثابت صحیح نیست");
//connectionid += 1;
var yearlySalaries = new YearlySalary(start, end, command.ConnectionId);
_yearlySalaryRepository.Create(yearlySalaries);
_yearlySalaryRepository.SaveChanges();
return operation.Succcedded();
}
public OperationResult Edit(EditYearlySalary command)
{
var start = command.StartDate.ToGeorgianDateTime();
var end = command.EndDate.ToGeorgianDateTime();
var opration = new OperationResult();
var yearlysalaryedit = _yearlySalaryRepository.Get(command.Id);
if (yearlysalaryedit == null)
return opration.Failed("رکورد مورد نظر یافت نشد");
if (_yearlySalaryRepository.Exists(x =>
x.StartDate == start && x.EndDate == end && x.id != command.Id))
return opration.Failed("تاریخ شروع و پایان تکراری است");
if (_yearlySalaryRepository.Exists(x =>
x.StartDate == start && x.id != command.Id))
return opration.Failed("تاریخ شروع تکراری است");
if (_yearlySalaryRepository.Exists(x =>
x.EndDate == end && x.id != command.Id))
return opration.Failed("تاریخ پایان تکراری است");
if (start == new DateTime(3000, 12, 20, new PersianCalendar()) && end == new DateTime(3000, 12, 20, new PersianCalendar()))
return opration.Failed("تاریخ شروع و تاریخ پایان صحیح وارد نشده اند");
if (start == new DateTime(3000, 12, 20, new PersianCalendar()))
return opration.Failed("تاریخ شروع صحیح وارد نشده است");
if (end == new DateTime(3000, 12, 20, new PersianCalendar()))
return opration.Failed("تاریخ پایان صحیح وارد نشده است");
yearlysalaryedit.Edit(start, end);
_yearlySalaryRepository.SaveChanges();
return opration.Succcedded();
}
public OperationResult Err()
{
var opration = new OperationResult();
return opration.Failed("مقادیر نباید خالی باشند");
}
public EditYearlySalary GetDetails(long id)
{
return _yearlySalaryRepository.GetDetails(id);
}
public List<YearlySalaryViewModel> GetYearlySalary()
{
return _yearlySalaryRepository.GetYearlySalary();
}
public List<YearlySalaryViewModel> Search(YearlySalarySearchModel searchModel)
{
return _yearlySalaryRepository.Search(searchModel);
}
public EditYearlySalary GetDetailsBySearchModel(YearlySalarySearchModel searchModel)
{
return _yearlySalaryRepository.GetDetailsBySearchModel(searchModel);
}
public Task<HolidayApiVewModel> HolidayGregorian(DateTime gregorianDate)
{
return _yearlySalaryRepository.HolidayGregorian(gregorianDate);
}
public Task<HolidayApiVewModel> HolidayShamsi(string shamsiDate)
{
return _yearlySalaryRepository.HolidayShamsi(shamsiDate);
}
#region Insurance
/// <summary>
/// دریافت مقادیر برای استفاده در بیمه
/// </summary>
/// <param name="startDate"></param>
/// <param name="endDate"></param>
/// <param name="year"></param>
/// <returns></returns>
public InsuranceYearlySalaryModel GetInsuranceItems(DateTime startDate, DateTime endDate, string year)
{
return _yearlySalaryRepository.GetInsuranceItems(startDate, endDate, year);
}
#endregion
}