Files
Backend-Api/CompanyManagment.Application/MandatoryhoursApplication.cs
2025-02-24 06:32:12 +03:30

280 lines
12 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using _0_Framework.Application;
using Company.Domain.MandatoryHoursAgg;
using CompanyManagment.App.Contracts.MandantoryHours;
namespace CompanyManagment.Application;
public class MandatoryHoursApplication : IMandatoryHoursApplication
{
private readonly IMandatoryHoursRepository _mandatoryHoursRepository;
public MandatoryHoursApplication(IMandatoryHoursRepository mandatoryHoursRepository)
{
_mandatoryHoursRepository = mandatoryHoursRepository;
}
public OperationResult Create(CreateMandatoryHours command)
{
var operation = new OperationResult();
if(_mandatoryHoursRepository.Exists(x=>x.Year == command.Year))
return operation.Failed("سال وارد شده تکراری است");
var mandatory = new MandatoryHours(command.Year, command.Farvardin, command.Ordibehesht, command.Khordad,
command.Tir, command.Mordad, command.Shahrivar, command.Mehr, command.Aban,
command.Azar, command.Dey, command.Bahman, command.Esfand,command.FarvardinFridays,command.OrdibeheshtFridays,command.KhordadFridays,
command.TirFridays,command.MordadFridays,command.ShahrivarFridays,command.MehrFridays,command.AbanFridays,command.AzarFridays,command.DeyFridays,
command.BahmanFridays,command.EsfandFridays,command.FarvardinHolidays,command.OrdibeheshtHolidays, command.KhordadHolidays,command.TirHolidays,command.MordadHolidays,
command.ShahrivarHolidays,command.MehrHolidays,command.AbanHolidays,command.AzarHolidays,command.DeyHolidays,command.BahmanHolidays,command.EsfandHolidays,
command.FarvardinMonadatoryDays,command.OrdibeheshtMonadatoryDays,command.KhordadMonadatoryDays,command.TirMonadatoryDays,command.MordadMonadatoryDays,
command.ShahrivarMonadatoryDays,command.MehrMonadatoryDays,command.AbanMonadatoryDays,command.AzarMonadatoryDays,command.DeyMonadatoryDays,command.BahmanMonadatoryDays,
command.EsfandMonadatoryDays);
_mandatoryHoursRepository.Create(mandatory);
_mandatoryHoursRepository.SaveChanges();
return operation.Succcedded();
}
public OperationResult Edit(EditMandatoryHours command)
{
var operation = new OperationResult();
var mandatory = _mandatoryHoursRepository.Get(command.Id);
if (mandatory == null)
operation.Failed("رکورد مورد نظر وجود ندارد");
if (_mandatoryHoursRepository.Exists(x => x.Year == command.Year && x.id != command.Id))
return operation.Failed("سال وارد شده تکراری است");
mandatory.Edit(command.Year, command.Farvardin, command.Ordibehesht, command.Khordad,
command.Tir, command.Mordad, command.Shahrivar, command.Mehr, command.Aban,
command.Azar, command.Dey, command.Bahman, command.Esfand, command.FarvardinFridays, command.OrdibeheshtFridays, command.KhordadFridays,
command.TirFridays, command.MordadFridays, command.ShahrivarFridays, command.MehrFridays, command.AbanFridays, command.AzarFridays, command.DeyFridays,
command.BahmanFridays, command.EsfandFridays, command.FarvardinHolidays, command.OrdibeheshtHolidays, command.KhordadHolidays, command.TirHolidays, command.MordadHolidays,
command.ShahrivarHolidays, command.MehrHolidays, command.AbanHolidays, command.AzarHolidays, command.DeyHolidays, command.BahmanHolidays, command.EsfandHolidays,
command.FarvardinMonadatoryDays, command.OrdibeheshtMonadatoryDays, command.KhordadMonadatoryDays, command.TirMonadatoryDays, command.MordadMonadatoryDays,
command.ShahrivarMonadatoryDays, command.MehrMonadatoryDays, command.AbanMonadatoryDays, command.AzarMonadatoryDays, command.DeyMonadatoryDays, command.BahmanMonadatoryDays,
command.EsfandMonadatoryDays);
_mandatoryHoursRepository.SaveChanges();
return operation.Succcedded();
}
public EditMandatoryHours GetDetails(long id)
{
return _mandatoryHoursRepository.GetDetails(id);
}
public EditMandatoryHours GetByYearInt(int year)
{
return _mandatoryHoursRepository.GetByYear(year);
}
public EditMandatoryHours GetByYearString(string year)
{
var yearStr = Convert.ToInt32(year);
return _mandatoryHoursRepository.GetByYear(yearStr);
}
public List<MandatoryHoursViewModel> GetMandatoryHours()
{
return _mandatoryHoursRepository.GetMandatoryHours();
}
public double GetMandatoryHoursByYearAndMonth(int yearFa, int monthFa)
{
var yearMandatoryHours = GetByYearInt(yearFa);
switch (monthFa)
{
case 1:
return yearMandatoryHours.Farvardin;
case 2:
return yearMandatoryHours.Ordibehesht;
case 3:
return yearMandatoryHours.Khordad;
case 4:
return yearMandatoryHours.Tir;
case 5:
return yearMandatoryHours.Mordad;
case 6:
return yearMandatoryHours.Shahrivar;
case 7:
return yearMandatoryHours.Mehr;
case 8:
return yearMandatoryHours.Aban;
case 9:
return yearMandatoryHours.Azar;
case 10:
return yearMandatoryHours.Dey;
case 11:
return yearMandatoryHours.Bahman;
case 12:
return yearMandatoryHours.Esfand;
default:
return 0;
}
}
public List<MandatoryHoursViewModel> Search(MandatoryHoursSearchModel searchModel)
{
var query = _mandatoryHoursRepository.Search(searchModel);
query = query.Select(x => new MandatoryHoursViewModel()
{
Id = x.Id,
Year = x.Year,
Farvardin = x.Farvardin,
Ordibehesht = x.Ordibehesht,
Khordad = x.Khordad,
Tir = x.Tir,
Mordad = x.Mordad,
Shahrivar = x.Shahrivar,
Mehr = x.Mehr,
Aban = x.Aban,
Azar = x.Azar,
Dey = x.Dey,
Bahman = x.Bahman,
Esfand = x.Esfand,
FarvardinStr = x.FarvardinStr,
OrdibeheshtStr = x.OrdibeheshtStr,
KhordadStr = x.KhordadStr,
TirStr = x.TirStr,
MordadStr = x.MordadStr,
ShahrivarStr = x.ShahrivarStr,
MehrStr = x.MehrStr,
AbanStr = x.AbanStr,
AzarStr = x.AzarStr,
DeyStr = x.DeyStr,
BahmanStr = x.BahmanStr,
EsfandStr = x.EsfandStr,
FarvardinFridays = x.FarvardinFridays,
OrdibeheshtFridays = x.OrdibeheshtFridays,
KhordadFridays = x.KhordadFridays,
TirFridays = x.TirFridays,
MordadFridays = x.MordadFridays,
ShahrivarFridays = x.ShahrivarFridays,
MehrFridays = x.MehrFridays,
AbanFridays = x.AbanFridays,
AzarFridays = x.AzarFridays,
DeyFridays = x.DeyFridays,
BahmanFridays = x.BahmanFridays,
EsfandFridays = x.EsfandFridays,
FarvardinHolidays = x.FarvardinHolidays,
OrdibeheshtHolidays = x.OrdibeheshtHolidays,
KhordadHolidays = x.KhordadHolidays,
TirHolidays = x.TirHolidays,
MordadHolidays = x.MordadHolidays,
ShahrivarHolidays = x.ShahrivarHolidays,
MehrHolidays = x.MehrHolidays,
AbanHolidays = x.AbanHolidays,
AzarHolidays = x.AzarHolidays,
DeyHolidays = x.DeyHolidays,
BahmanHolidays = x.BahmanHolidays,
EsfandHolidays = x.EsfandHolidays,
FarvardinMonadatoryDays = x.FarvardinMonadatoryDays,
OrdibeheshtMonadatoryDays = x.OrdibeheshtMonadatoryDays,
KhordadMonadatoryDays = x.KhordadMonadatoryDays,
TirMonadatoryDays = x.TirMonadatoryDays,
MordadMonadatoryDays = x.MordadMonadatoryDays,
ShahrivarMonadatoryDays = x.ShahrivarMonadatoryDays,
MehrMonadatoryDays = x.MehrMonadatoryDays,
AbanMonadatoryDays = x.AbanMonadatoryDays,
AzarMonadatoryDays = x.AzarMonadatoryDays,
DeyMonadatoryDays = x.DeyMonadatoryDays,
BahmanMonadatoryDays = x.BahmanMonadatoryDays,
EsfandMonadatoryDays = x.EsfandMonadatoryDays,
SumOfMandatoriesDouble = x.SumOfMandatoriesDouble,
SumOfMandatoriesStr = Tools.ComputationOfHoursAndMinutes(x.SumOfMandatoriesDouble),
SumOfHolidays = x.SumOfHolidays,
SumOfMandatoryDays = x.SumOfMandatoryDays,
SumOfFridays = x.SumOfFridays
}).OrderByDescending(x => x.Year).ToList();
return query;
}
public List<MandatoryHoursPrintViewModel> PrintAll(MandatoryHoursSearchModel searchModel)
{
var query = _mandatoryHoursRepository.PrintAll(searchModel);
query = query.Select(x => new MandatoryHoursPrintViewModel()
{
Id = x.Id,
Year = x.Year,
Farvardin = x.Farvardin,
Ordibehesht = x.Ordibehesht,
Khordad = x.Khordad,
Tir = x.Tir,
Mordad = x.Mordad,
Shahrivar = x.Shahrivar,
Mehr = x.Mehr,
Aban = x.Aban,
Azar = x.Azar,
Dey = x.Dey,
Bahman = x.Bahman,
Esfand = x.Esfand,
FarvardinStr = x.FarvardinStr,
OrdibeheshtStr = x.OrdibeheshtStr,
KhordadStr = x.KhordadStr,
TirStr = x.TirStr,
MordadStr = x.MordadStr,
ShahrivarStr = x.ShahrivarStr,
MehrStr = x.MehrStr,
AbanStr = x.AbanStr,
AzarStr = x.AzarStr,
DeyStr = x.DeyStr,
BahmanStr = x.BahmanStr,
EsfandStr = x.EsfandStr,
FarvardinFridays = x.FarvardinFridays,
OrdibeheshtFridays = x.OrdibeheshtFridays,
KhordadFridays = x.KhordadFridays,
TirFridays = x.TirFridays,
MordadFridays = x.MordadFridays,
ShahrivarFridays = x.ShahrivarFridays,
MehrFridays = x.MehrFridays,
AbanFridays = x.AbanFridays,
AzarFridays = x.AzarFridays,
DeyFridays = x.DeyFridays,
BahmanFridays = x.BahmanFridays,
EsfandFridays = x.EsfandFridays,
FarvardinHolidays = x.FarvardinHolidays,
OrdibeheshtHolidays = x.OrdibeheshtHolidays,
KhordadHolidays = x.KhordadHolidays,
TirHolidays = x.TirHolidays,
MordadHolidays = x.MordadHolidays,
ShahrivarHolidays = x.ShahrivarHolidays,
MehrHolidays = x.MehrHolidays,
AbanHolidays = x.AbanHolidays,
AzarHolidays = x.AzarHolidays,
DeyHolidays = x.DeyHolidays,
BahmanHolidays = x.BahmanHolidays,
EsfandHolidays = x.EsfandHolidays,
FarvardinMonadatoryDays = x.FarvardinMonadatoryDays,
OrdibeheshtMonadatoryDays = x.OrdibeheshtMonadatoryDays,
KhordadMonadatoryDays = x.KhordadMonadatoryDays,
TirMonadatoryDays = x.TirMonadatoryDays,
MordadMonadatoryDays = x.MordadMonadatoryDays,
ShahrivarMonadatoryDays = x.ShahrivarMonadatoryDays,
MehrMonadatoryDays = x.MehrMonadatoryDays,
AbanMonadatoryDays = x.AbanMonadatoryDays,
AzarMonadatoryDays = x.AzarMonadatoryDays,
DeyMonadatoryDays = x.DeyMonadatoryDays,
BahmanMonadatoryDays = x.BahmanMonadatoryDays,
EsfandMonadatoryDays = x.EsfandMonadatoryDays,
SumOfMandatoriesDouble = x.SumOfMandatoriesDouble,
SumOfMandatoriesStr = Tools.ComputationOfHoursAndMinutes(x.SumOfMandatoriesDouble),
SumOfHolidays = x.SumOfHolidays,
SumOfMandatoryDays = x.SumOfMandatoryDays,
SumOfFridays = x.SumOfFridays
}).OrderByDescending(x => x.Year).ToList();
return query;
}
}