280 lines
12 KiB
C#
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;
|
|
}
|
|
} |