7bc4eca2fd
- corretto periodo mostrato con selettore periodo git-svn-id: https://keyhammer.ath.cx/svn/WebGIM/trunk@85 3e04ef4b-3b25-4b6c-be27-bb5389ca777b
49 lines
2.0 KiB
C#
49 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Web;
|
|
using SteamWare;
|
|
|
|
/// <summary>
|
|
/// Utility varie di WebGim
|
|
/// </summary>
|
|
public class WebGimUtils
|
|
{
|
|
protected WebGimUtils()
|
|
{
|
|
}
|
|
/// <summary>
|
|
/// calcola le ore lavorative equivalenti ad un dato periodo calcolando la settimana tipo e togliendo le festività eventualmente presenti
|
|
/// </summary>
|
|
/// <param name="periodo"></param>
|
|
/// <returns></returns>
|
|
public double oreEquivalenti(intervalloDate periodo)
|
|
{
|
|
double answ = 0;
|
|
// carico valori di default
|
|
double oreSett = (double)TA_app.obj.taOreApert.oreAperturaSett();
|
|
DS_applicazione.OreAperturaSettDataTable tabOre = TA_app.obj.taOreApert.GetData();
|
|
DS_applicazione.CalendFesteFerieDataTable tabCalFF = TA_app.obj.taCalFF.getByPeriodo(periodo.inizio, periodo.fine);
|
|
// calcolo il numero di settimane comprese nel periodo
|
|
int numSett = (int)Math.Floor(periodo.fine.Subtract(periodo.inizio).TotalDays / 7);
|
|
// moltiplico per le h/sett
|
|
answ = oreSett * numSett;
|
|
// aggiungo le ore delle giornate che eccedono il multiplo delle settimane
|
|
int numGgRimanenti = (int)(periodo.fine.Subtract(periodo.inizio).TotalDays - numSett * 7);
|
|
// NB: dayOfWeek è 0-6 da domenica a sabato...
|
|
int ggSett = (int)periodo.inizio.DayOfWeek;
|
|
for (int i = 0; i < numGgRimanenti; i++)
|
|
{
|
|
// il primo giorno è pari al giorno iniziale... e poi calcolo il "modulo" a 7 (con "%")
|
|
answ = answ + (double)tabOre[(i + ggSett)%7].apertura;
|
|
}
|
|
// cerco eventuali festività che cadano nel periodo e le tolgo
|
|
foreach (DS_applicazione.CalendFesteFerieRow riga in tabCalFF)
|
|
{
|
|
answ = answ - (double)tabOre[(int)riga.data.DayOfWeek].apertura;
|
|
}
|
|
// restituisco risposta
|
|
return answ;
|
|
}
|
|
|
|
public static WebGimUtils obj = new WebGimUtils();
|
|
} |