Files
Backend-Api/CompanyManagment.EFCore/Repository/MandatoryHoursRepository.cs
2024-07-05 21:36:15 +03:30

487 lines
21 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using _0_Framework.Application;
using _0_Framework.InfraStructure;
using Company.Domain.MandatoryHoursAgg;
using CompanyManagment.App.Contracts.MandantoryHours;
using PersianTools.Core;
namespace CompanyManagment.EFCore.Repository;
public class MandatoryHoursRepository : RepositoryBase<long, MandatoryHours>, IMandatoryHoursRepository
{
private readonly CompanyContext _context;
public MandatoryHoursRepository(CompanyContext context) : base(context)
{
_context = context;
}
public List<MandatoryHoursViewModel> GetMandatoryHours()
{
return _context.MandatoryHoursDbSet.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
}).ToList();
}
public EditMandatoryHours GetDetails(long id)
{
return _context.MandatoryHoursDbSet.Select(x => new EditMandatoryHours
{
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,
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,
}).FirstOrDefault(x => x.Id == id);
}
public EditMandatoryHours GetByYear(int year)
{
return _context.MandatoryHoursDbSet.Select(x => new EditMandatoryHours
{
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,
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,
}).FirstOrDefault(x => x.Year == year);
}
public FridayAndMondatoryDayVeiwModel GetMondatoryDays(DateTime startDate, DateTime endDate)
{
var year = Convert.ToInt32(startDate.ToFarsiYear());
var query= _context.MandatoryHoursDbSet.Select(x => new EditMandatoryHours
{
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,
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,
}).FirstOrDefault(x => x.Year == year);
var result = new FridayAndMondatoryDayVeiwModel();
int days = 0;
int fridays = 0;
if (query != null)
{
var sdate = startDate.ToFarsi();
var edate = endDate.ToFarsi();
var syear = Convert.ToInt32(sdate.Substring(0, 4));
var smonth = Convert.ToInt32(sdate.Substring(5, 2));
var sday = Convert.ToInt32(sdate.Substring(8, 2));
var eyear = Convert.ToInt32(edate.Substring(0, 4));
var emonth = Convert.ToInt32(edate.Substring(5, 2));
var eday = Convert.ToInt32(edate.Substring(8, 2));
var startDateFa = new PersianDateTime(syear, smonth, sday);
var endDateFa = new PersianDateTime(eyear, emonth, eday);
for (var start = startDateFa; start <= endDateFa; start = start.AddMonths(1))
{
switch (start.Month)
{
case 1:
var res1 = query.FarvardinMonadatoryDays;
days += res1;
fridays += query.FarvardinFridays;
break;
case 2:
var res2 = query.OrdibeheshtMonadatoryDays;
days += res2;
fridays += query.OrdibeheshtFridays;
break;
case 3:
var res3 = query.KhordadMonadatoryDays;
days += res3;
fridays += query.KhordadFridays;
break;
case 4:
var res4 = query.TirMonadatoryDays;
days += res4;
fridays += query.TirFridays;
break;
case 5:
var res5 = query.MordadMonadatoryDays;
days += res5;
fridays += query.MordadFridays;
break;
case 6:
var res6 = query.ShahrivarMonadatoryDays;
days += res6;
fridays += query.ShahrivarFridays;
break;
case 7:
var res7 = query.MehrMonadatoryDays;
days += res7;
fridays += query.MehrFridays;
break;
case 8:
var res8 = query.AbanMonadatoryDays;
days += res8;
fridays += query.AbanFridays;
break;
case 9:
var res9 = query.AzarMonadatoryDays;
days += res9;
fridays += query.AzarFridays;
break;
case 10:
var res10 = query.DeyMonadatoryDays;
days += res10;
fridays += query.DeyFridays;
break;
case 11:
var res11 = query.BahmanMonadatoryDays;
days += res11;
fridays += query.BahmanFridays;
break;
case 12:
var res12 = query.EsfandMonadatoryDays;
days += res12;
fridays += query.EsfandFridays;
break;
}
}
}
result.MoandatoryDays = days;
result.Fridays = fridays;
return result;
}
public List<MandatoryHoursViewModel> Search(MandatoryHoursSearchModel searchModel)
{
var query = _context.MandatoryHoursDbSet.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 = Tools.ComputationOfHoursAndMinutes(x.Farvardin),
OrdibeheshtStr = Tools.ComputationOfHoursAndMinutes(x.Ordibehesht),
KhordadStr = Tools.ComputationOfHoursAndMinutes(x.Khordad),
TirStr = Tools.ComputationOfHoursAndMinutes(x.Tir),
MordadStr = Tools.ComputationOfHoursAndMinutes(x.Mordad),
ShahrivarStr = Tools.ComputationOfHoursAndMinutes(x.Shahrivar),
MehrStr = Tools.ComputationOfHoursAndMinutes(x.Mehr),
AbanStr = Tools.ComputationOfHoursAndMinutes(x.Aban),
AzarStr = Tools.ComputationOfHoursAndMinutes(x.Azar),
DeyStr = Tools.ComputationOfHoursAndMinutes(x.Dey),
BahmanStr = Tools.ComputationOfHoursAndMinutes(x.Bahman),
EsfandStr = Tools.ComputationOfHoursAndMinutes(x.Esfand),
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 = Math.Round((x.Farvardin + x.Ordibehesht + x.Khordad + x.Tir + x.Mordad + x.Shahrivar + x.Mehr + x.Aban + x.Azar + x.Dey + x.Bahman + x.Esfand), 2),
SumOfFridays = x.FarvardinFridays + x.OrdibeheshtFridays + x.KhordadFridays + x.TirFridays + x.MordadFridays + x.ShahrivarFridays + x.MehrFridays + x.AbanFridays + x.AzarFridays + x.DeyFridays + x.BahmanFridays + x.EsfandFridays,
SumOfHolidays = x.FarvardinHolidays + x.OrdibeheshtHolidays + x.KhordadHolidays + x.TirHolidays + x.MordadHolidays + x.ShahrivarHolidays + x.MehrHolidays + x.AbanHolidays + x.AzarHolidays + x.DeyHolidays + x.BahmanHolidays + x.EsfandHolidays,
SumOfMandatoryDays = x.FarvardinMonadatoryDays + x.OrdibeheshtMonadatoryDays + x.KhordadMonadatoryDays + x.TirMonadatoryDays + x.MordadMonadatoryDays + x.ShahrivarMonadatoryDays + x.MehrMonadatoryDays + x.AbanMonadatoryDays + x.AzarMonadatoryDays + x.DeyMonadatoryDays + x.BahmanMonadatoryDays + x.EsfandMonadatoryDays
});
if (searchModel.Year > 0)
query = query.Where(x => x.Year == searchModel.Year);
return query.OrderByDescending(x => x.Year).ToList();
}
public List<MandatoryHoursPrintViewModel> PrintAll(MandatoryHoursSearchModel searchModel)
{
var query = _context.MandatoryHoursDbSet.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 = Tools.ComputationOfHoursAndMinutes(x.Farvardin),
OrdibeheshtStr = Tools.ComputationOfHoursAndMinutes(x.Ordibehesht),
KhordadStr = Tools.ComputationOfHoursAndMinutes(x.Khordad),
TirStr = Tools.ComputationOfHoursAndMinutes(x.Tir),
MordadStr = Tools.ComputationOfHoursAndMinutes(x.Mordad),
ShahrivarStr = Tools.ComputationOfHoursAndMinutes(x.Shahrivar),
MehrStr = Tools.ComputationOfHoursAndMinutes(x.Mehr),
AbanStr = Tools.ComputationOfHoursAndMinutes(x.Aban),
AzarStr = Tools.ComputationOfHoursAndMinutes(x.Azar),
DeyStr = Tools.ComputationOfHoursAndMinutes(x.Dey),
BahmanStr = Tools.ComputationOfHoursAndMinutes(x.Bahman),
EsfandStr = Tools.ComputationOfHoursAndMinutes(x.Esfand),
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 = Math.Round((x.Farvardin + x.Ordibehesht + x.Khordad + x.Tir + x.Mordad + x.Shahrivar + x.Mehr + x.Aban + x.Azar + x.Dey + x.Bahman + x.Esfand), 2),
SumOfFridays = x.FarvardinFridays + x.OrdibeheshtFridays + x.KhordadFridays + x.TirFridays + x.MordadFridays + x.ShahrivarFridays + x.MehrFridays + x.AbanFridays + x.AzarFridays + x.DeyFridays + x.BahmanFridays + x.EsfandFridays,
SumOfHolidays = x.FarvardinHolidays + x.OrdibeheshtHolidays + x.KhordadHolidays + x.TirHolidays + x.MordadHolidays + x.ShahrivarHolidays + x.MehrHolidays + x.AbanHolidays + x.AzarHolidays + x.DeyHolidays + x.BahmanHolidays + x.EsfandHolidays,
SumOfMandatoryDays = x.FarvardinMonadatoryDays + x.OrdibeheshtMonadatoryDays + x.KhordadMonadatoryDays + x.TirMonadatoryDays + x.MordadMonadatoryDays + x.ShahrivarMonadatoryDays + x.MehrMonadatoryDays + x.AbanMonadatoryDays + x.AzarMonadatoryDays + x.DeyMonadatoryDays + x.BahmanMonadatoryDays + x.EsfandMonadatoryDays
});
if (searchModel.Year > 0)
query = query.Where(x => x.Year == searchModel.Year);
var result = query.OrderByDescending(x => x.Year).ToList();
return result;
}
}