示例#1
0
        public static List <string> CheckValiditaGiorni(this FoglioPresenzeModel model)
        {
            List <string> anomalieGiorni = new List <string>();

            for (int i = 0; i < model.TotaliGiornalieri.Count; i++)
            {
                if (model.GiorniFestivi.Contains(i + 1))
                {
                    if (model.TotaliGiornalieri[i] != 0)
                    {
                        anomalieGiorni.Add(DataSettings.ErroreOreFestive);
                    }
                }
                else if (model.GiorniFestivi.Contains(i + 1) && model.TotaliGiornalieri[i] != 0 || model.TotaliGiornalieri[i] > 8)
                {
                    anomalieGiorni.Add(DataSettings.ErroreOreGiornoMaggioriStandard);
                }
                else if (model.TotaliGiornalieri[i] < 8)
                {
                    anomalieGiorni.Add(DataSettings.ErroreOreGiornoMinoriStandard);
                }
            }

            return(anomalieGiorni);
        }
        public async Task <HttpResponseMessage> AggiornaFoglio([FromBody] FoglioPresenzeModel model)
        {
            var foglio = await _context.FogliPresenze
                         .Include(f => f.OreLavorative)
                         .FirstOrDefaultAsync(f => f.Id == model.Id);

            if (foglio == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Foglio non trovato."));
            }

            foreach (var nuovaOra in model.Ore)
            {
                var vecchiaOra = foglio.OreLavorative.FirstOrDefault(o => o.Id == nuovaOra.Id);
                if (vecchiaOra == null)
                {
                    foglio.OreLavorative.Add(nuovaOra);
                }
                else if (vecchiaOra.Quantita != nuovaOra.Quantita)
                {
                    vecchiaOra.Quantita = nuovaOra.Quantita;
                }
            }

            foglio.Stato = "Modificato";

            await _context.SaveChangesAsync();

            return(Request.CreateResponse(HttpStatusCode.OK));
        }
示例#3
0
        public static List <int> CalcolaTotaliGiornalieri(this FoglioPresenzeModel model)
        {
            List <int> totaliGiornalieri = new List <int>();

            for (int i = 1; i <= DateTime.DaysInMonth(model.Anno, model.Mese); i++)
            {
                totaliGiornalieri.Add(model.Ore
                                      .Where(o => o.Giorno == i)
                                      .Sum(o => o.Quantita));
            }

            return(totaliGiornalieri);
        }
示例#4
0
        public static List <string> CreaListaAnomalie(this FoglioPresenzeModel model)
        {
            List <string> anomalie = new List <string>();

            anomalie.AddRange(model.CheckValiditaGiorni());
            string anomaliaMese = model.CheckValiditaMese();

            if (anomaliaMese != null)
            {
                anomalie.Add(anomaliaMese);
            }

            return(anomalie);
        }
示例#5
0
        public static string CheckValiditaMese(this FoglioPresenzeModel model)
        {
            int giorniLavorativi = DateTime.DaysInMonth(model.Anno, model.Mese) - model.GiorniFestivi.Count;
            int oreStandard      = giorniLavorativi * 8;
            int oreMensili       = model.TotaliGiornalieri.Sum();

            if (oreMensili < oreStandard)
            {
                return(DataSettings.ErroreOreMeseMinoriStandard);
            }
            else if (oreMensili > oreStandard)
            {
                return(DataSettings.ErroreOreMeseMaggioriStandard);
            }

            return(null);
        }
示例#6
0
        public static List <CategoriaModel> CalcolaTotaliCategorie(this FoglioPresenzeModel model)
        {
            List <CategoriaModel> totaliCategorie = new List <CategoriaModel>();

            foreach (string cat in DataSettings.Categorie)
            {
                totaliCategorie.Add(new CategoriaModel
                {
                    Nome      = cat,
                    OreTotali = model.Ore
                                .Where(o => o.Tipo == cat)
                                .Sum(o => o.Quantita)
                });
            }

            return(totaliCategorie);
        }