public void RicalcoloPS(DateTime dtIniVar, DateTime dtFinVar, EnumTipoTrasferimento tipotrasf)
 {
     using (ModelDBISE db = new ModelDBISE())
     {
         this.RicPS(dtIniVar, dtFinVar, tipotrasf, db);
     }
 }
        public IList <IndennitaSistemazioneModel> GetListIndennitaSistemazione(EnumTipoTrasferimento tipoTrasf, DateTime dt, ModelDBISE db)
        {
            List <IndennitaSistemazioneModel> lism = new List <IndennitaSistemazioneModel>();


            var lis =
                db.INDENNITASISTEMAZIONE.Where(
                    a =>
                    a.ANNULLATO == false && a.DATAINIZIOVALIDITA <= dt.Date && a.DATAFINEVALIDITA >= dt.Date &&
                    a.IDTIPOTRASFERIMENTO == (decimal)tipoTrasf)
                .OrderBy(a => a.DATAINIZIOVALIDITA).ToList();

            if (lis?.Any() ?? false)
            {
                foreach (var indSist in lis)
                {
                    var ism = new IndennitaSistemazioneModel()
                    {
                        idIndSist           = indSist.IDINDSIST,
                        idTipoTrasferimento = indSist.IDTIPOTRASFERIMENTO,
                        dataInizioValidita  = indSist.DATAINIZIOVALIDITA,
                        dataFineValidita    = indSist.DATAFINEVALIDITA,
                        coefficiente        = indSist.COEFFICIENTE,
                        dataAggiornamento   = indSist.DATAAGGIORNAMENTO,
                        annullato           = indSist.ANNULLATO
                    };

                    lism.Add(ism);
                }
            }

            return(lism);
        }
        private void RicPS(DateTime dtIniVar, DateTime dtFinVar, EnumTipoTrasferimento tipotrasf, ModelDBISE db)
        {
            var lt =
                db.TRASFERIMENTO.Where(
                    a =>
                    a.DATAPARTENZA >= dtIniVar && a.DATAPARTENZA <= dtFinVar &&
                    (EnumTipoTrasferimento)a.IDTIPOTRASFERIMENTO == tipotrasf &&
                    ((EnumStatoTraferimento)a.IDSTATOTRASFERIMENTO == EnumStatoTraferimento.Da_Attivare ||
                     (EnumStatoTraferimento)a.IDSTATOTRASFERIMENTO == EnumStatoTraferimento.Attivo)).ToList();

            if (lt?.Any() ?? false)
            {
                using (dtPrimaSistemazione dtps = new dtPrimaSistemazione())
                {
                    using (dtIndennitaSistemazione dtis = new dtIndennitaSistemazione())
                    {
                        foreach (var t in lt)
                        {
                            var ps   = t.PRIMASITEMAZIONE;
                            var lism = dtis.GetListIndennitaSistemazione((EnumTipoTrasferimento)t.IDTIPOTRASFERIMENTO, t.DATAPARTENZA, db);

                            foreach (var ism in lism)
                            {
                                var esisteAssociazione =
                                    ps.INDENNITASISTEMAZIONE?.All(
                                        a => a.IDINDSIST != ism.idIndSist && a.ANNULLATO == false) ?? false;
                                if (esisteAssociazione == false)
                                {
                                    dtps.AssociaIndennitaSistemazione(ps.IDPRIMASISTEMAZIONE, ism.idIndSist, db);
                                }
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="idPrimaSistemazione"></param>
        /// <param name="tipoTrasf"></param>
        /// <param name="dt"></param>
        /// <param name="db"></param>
        /// <returns></returns>
        public IndennitaSistemazioneModel GetIndennitaSistemazioneAssociata(Decimal idPrimaSistemazione, EnumTipoTrasferimento tipoTrasf, DateTime dt, ModelDBISE db)
        {
            IndennitaSistemazioneModel ism = new IndennitaSistemazioneModel();

            var ps = db.PRIMASITEMAZIONE.Find(idPrimaSistemazione);

            if (ps != null && ps.IDPRIMASISTEMAZIONE > 0)
            {
                var lIndSist =
                    ps.INDENNITASISTEMAZIONE.Where(
                        a =>
                        a.ANNULLATO == false && a.IDTIPOTRASFERIMENTO == (decimal)tipoTrasf &&
                        dt >= a.DATAINIZIOVALIDITA && dt <= a.DATAFINEVALIDITA)
                    .OrderByDescending(a => a.DATAFINEVALIDITA);

                if (lIndSist?.Any() ?? false)
                {
                    var indSist = lIndSist.First();
                    ism = new IndennitaSistemazioneModel()
                    {
                        idIndSist           = indSist.IDINDSIST,
                        idTipoTrasferimento = indSist.IDTIPOTRASFERIMENTO,
                        dataInizioValidita  = indSist.DATAINIZIOVALIDITA,
                        dataFineValidita    = indSist.DATAFINEVALIDITA,
                        coefficiente        = indSist.COEFFICIENTE,
                        dataAggiornamento   = indSist.DATAAGGIORNAMENTO,
                        annullato           = indSist.ANNULLATO
                    };
                }
            }


            return(ism);
        }