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 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 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 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; } }