public ActionResult Richiamo(decimal idTrasferimento, decimal idFKm, string dataRichiamo, decimal nuovo = 0)
        {
            DateTime dataPartenza = new DateTime();
            bool     admin        = Utility.Amministratore();
            bool     solaLettura  = false;

            ViewBag.Amministratore = admin;
            try
            {
                ViewData["idFKm"]           = idFKm;
                ViewData["idTrasferimento"] = idTrasferimento;
                ViewData["dataRichiamo"]    = dataRichiamo;
                CaricaComboFKM(idFKm, nuovo);
                ViewData["abilitaModifica"] = idFKm;
                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtRichiamo dtr = new dtRichiamo())
                    {
                        dataPartenza = dtr.Restituisci_DataPartenza(idTrasferimento, db);
                        RichiamoModel rcm = dtr.Restituisci_Ultimo_Richiamo(idTrasferimento);
                        ViewData["idRichiamo"] = rcm.IdRichiamo;
                        if (rcm.IdRichiamo != 0)
                        {
                            ViewData["dataRientro"]  = rcm.DataRientro;
                            ViewData["dataRichiamo"] = rcm.DataRichiamo;
                        }
                        CaricaComboFKM(rcm.CoeffKm, nuovo, rcm.IdRichiamo);
                    }
                    using (dtTrasferimento dtt = new dtTrasferimento())
                    {
                        TrasferimentoModel trm = dtt.GetTrasferimentoById(idTrasferimento);
                        if (trm != null)
                        {
                            var ultimo_trasf = dtt.GetUltimoTrasferimentoValidoByMatricola(trm.Dipendente.matricola.ToString());
                            if (ultimo_trasf.idTrasferimento > 0)
                            {
                                if (ultimo_trasf.idTrasferimento != idTrasferimento)
                                {
                                    solaLettura = true;
                                }
                            }
                        }
                    }
                }
                ViewData["solaLettura"]  = solaLettura;
                ViewData["dataPartenza"] = dataPartenza;
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
            return(PartialView());
        }
 public ActionResult MessaggioInserisciRichiamo(decimal idTrasferimento, decimal idFKm, string dataInserita, decimal idRichiamo = 0)
 {
     ViewData["idTrasferimento"] = idTrasferimento;
     ViewData["idFKm"]           = idFKm;
     ViewData["dataInserita"]    = dataInserita == null ? "" : dataInserita.ToString();
     CaricaComboFKM(idFKm, 0, idRichiamo);
     using (ModelDBISE db = new ModelDBISE())
     {
         using (dtRichiamo dtr = new dtRichiamo())
         {
             DateTime dataPartenza = dtr.Restituisci_DataPartenza(idTrasferimento, db);
             ViewData["dataPartenza"] = dataPartenza;
         }
     }
     return(PartialView());
 }
        public JsonResult ConfermaModificaRichiamo(decimal idTrasferimento, decimal idFasciaFKM, string dataRichiamo, decimal idRichiamo)
        {
            using (ModelDBISE db = new ModelDBISE())
            {
                db.Database.BeginTransaction();

                string errore = "";
                var    lstr   = new List <SelectListItem>();


                try
                {
                    ViewData["idTrasferimento"] = idTrasferimento;
                    ViewData["idFKm"]           = idFasciaFKM;
                    DateTime dataPartenza = new DateTime();

                    CaricaComboFKM(idFasciaFKM, idFasciaFKM);
                    using (dtRichiamo dtric = new dtRichiamo())
                    {
                        dataPartenza = dtric.Restituisci_DataPartenza(idTrasferimento, db);
                    }
                    ViewData["dataPartenza"] = dataPartenza;
                    try
                    {
                        RichiamoModel ri = new RichiamoModel();
                        ri.DataRichiamo      = Convert.ToDateTime(dataRichiamo);
                        ri.DataAggiornamento = DateTime.Now;
                        ri.CoeffKm           = idFasciaFKM;
                        ri.idTrasferimento   = idTrasferimento;
                        using (dtRichiamo dtric = new dtRichiamo())
                        {
                            decimal idCoeffIndRichiamo  = dtric.Restituisci_ID_CoeffIndRichiamo_Da_Data(ri, db);
                            decimal idCoeffMaggRichiamo = dtric.Restituisci_ID_CoeffMagIndRichiamo_Da_Data(ri, db);
                            decimal IDPFKM = dtric.Restituisci_ID_PercentualeFKM_Da_Data(ri, db);
                            if (idCoeffIndRichiamo == 0 || IDPFKM == 0 || idCoeffMaggRichiamo == 0)
                            {
                                errore             = "Non esistono coefficenti corrispondenti ai criteri del Richiamo";
                                ViewData["errore"] = errore;
                            }
                            ri.IDPFKM = IDPFKM;

                            DateTime dataRientroPrecedente = dtric.Restituisci_Data_Rientro(idTrasferimento);
                            DateTime DataRientro           = Convert.ToDateTime(dataRichiamo).AddDays(-1);

                            ri.DataRientro = DataRientro;

                            if (idRichiamo != 0)
                            {
                                ViewData["dataRichiamo"] = ri.DataRichiamo.ToShortDateString();
                                ViewData["dataRientro"]  = ri.DataRientro.ToShortDateString();
                                ViewData["idRichiamo"]   = idRichiamo;

                                if (DataRientro < dataPartenza)
                                {
                                    errore = "Data Rientro (" + DataRientro.ToShortDateString() + ") non può essere inferiore alla data Partenza (" + dataPartenza.ToShortDateString() + " )";
                                }
                                else
                                {
                                    idRichiamo = dtric.EditRichiamo(ri, idCoeffIndRichiamo, idCoeffMaggRichiamo, IDPFKM, DataRientro, idRichiamo, db);
                                    errore     = "";
                                    lstr       = AggiornaViewBag_Lista_Trasferimenti(idTrasferimento, db);

                                    //using (dtVariazioniMaggiorazioneFamiliare dtvmf = new dtVariazioniMaggiorazioneFamiliare())
                                    //{
                                    //    dtvmf.TerminaMaggiorazioniFamiliariByDataFineTrasf(idTrasferimento, ri.DataRientro, db);
                                    //}
                                    //using (dtVariazioniMaggiorazioneAbitazione dtvmab = new dtVariazioniMaggiorazioneAbitazione())
                                    //{
                                    //    dtvmab.TerminaMABbyDataFineTrasf(idTrasferimento, ri.DataRientro, db);
                                    //}

                                    using (dtDipendenti dtd = new dtDipendenti())
                                    {
                                        dtd.DataInizioRicalcoliDipendente(idTrasferimento, ri.DataRientro, db, true);
                                    }

                                    string sede           = dtric.DeterminaSede(idTrasferimento);
                                    string oggetto        = Resources.msgEmail.OggettoRichiamoModifica;
                                    string corpoMessaggio = string.Format(Resources.msgEmail.MessaggioRichiamoModifica, sede, dataRientroPrecedente.ToShortDateString(), ri.DataRientro.ToShortDateString());

                                    InviaMailRichiamo(idTrasferimento, db, corpoMessaggio, oggetto);
                                }
                            }
                            else
                            {
                                ViewData["errore"] = "Errore riscontrato nell'inserimento del Richiamo";
                                errore             = "Non esistono coefficenti corrispondenti ai criteri del Richiamo";
                                //  return PartialView("Richiamo");
                                // return PartialView("ErrorPartial", new MsgErr() { msg = "Errore riscontrato nell'inserimento del Richiamo" });
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        ViewData["errore"] = ex.Message;
                        // return PartialView("Richiamo");
                        //  return PartialView("ErrorPartial", new MsgErr() { msg = ex.Message });
                        errore = ex.Message;
                    }
                    db.Database.CurrentTransaction.Commit();
                }
                catch (Exception ex)
                {
                    db.Database.CurrentTransaction.Rollback();
                    throw ex;
                }
                return(Json(new { err = errore, list = lstr }));
            }
        }
        public JsonResult ConfermaInserisciRichiamo(decimal idTrasferimento, decimal idFasciaFKM, string dataRichiamo)
        {
            using (ModelDBISE db = new ModelDBISE())
            {
                db.Database.BeginTransaction();

                string errore = "";
                var    lstr   = new List <SelectListItem>();

                try
                {
                    ViewData["idTrasferimento"] = idTrasferimento;
                    ViewData["idFKm"]           = idFasciaFKM;
                    CaricaComboFKM(idFasciaFKM, idFasciaFKM);
                    DateTime dataPartenza = new DateTime();
                    using (dtRichiamo dtric = new dtRichiamo())
                    {
                        dataPartenza = dtric.Restituisci_DataPartenza(idTrasferimento, db);
                    }
                    ViewData["dataPartenza"] = dataPartenza;
                    decimal idRichiamo = 0;
                    try
                    {
                        RichiamoModel ri = new RichiamoModel();
                        ri.DataRichiamo      = Convert.ToDateTime(dataRichiamo);
                        ri.DataAggiornamento = DateTime.Now;
                        ri.CoeffKm           = idFasciaFKM;
                        ri.idTrasferimento   = idTrasferimento;
                        using (dtRichiamo dtric = new dtRichiamo())
                        {
                            decimal idCoeffIndRichiamo    = dtric.Restituisci_ID_CoeffIndRichiamo_Da_Data(ri, db);
                            decimal idCoeffMagIndRichiamo = dtric.Restituisci_ID_CoeffMagIndRichiamo_Da_Data(ri, db);
                            decimal IDPFKM = dtric.Restituisci_ID_PercentualeFKM_Da_Data(ri, db);
                            //var r = new List<SelectListItem>();
                            if (idCoeffIndRichiamo == 0 || IDPFKM == 0 || idCoeffMagIndRichiamo == 0)
                            {
                                ViewData["errore"] = "Non esistono coefficenti corrispondenti ai criteri del Richiamo";
                                errore             = "Non esistono coefficenti corrispondenti ai criteri del Richiamo";
                                throw new Exception("Non esistono coefficenti corrispondenti ai criteri del Richiamo");
                            }



                            ri.IDPFKM = IDPFKM;
                            DateTime DataRientro = Convert.ToDateTime(dataRichiamo).AddDays(-1);
                            ri.DataRientro = DataRientro;

                            ViewData["dataRichiamo"] = ri.DataRichiamo.ToShortDateString();
                            ViewData["dataRientro"]  = ri.DataRientro.ToShortDateString();
                            ViewData["idRichiamo"]   = idRichiamo;

                            if (DataRientro < dataPartenza)
                            {
                                errore = "Data Rientro " + DataRientro.ToShortDateString() + " non può essere inferiore alla data Partenza " + dataPartenza.ToShortDateString();
                            }
                            else
                            {
                                idRichiamo             = dtric.SetRichiamo(ri, idCoeffIndRichiamo, IDPFKM, idCoeffMagIndRichiamo, DataRientro, db);
                                ViewData["idRichiamo"] = idRichiamo;
                                errore = "";
                            }

                            lstr = AggiornaViewBag_Lista_Trasferimenti(idTrasferimento, db);
                            string sede           = dtric.DeterminaSede(idTrasferimento);
                            string oggetto        = Resources.msgEmail.OggettoRichiamoInserisci;
                            string corpoMessaggio = string.Format(Resources.msgEmail.MessaggioRichiamoInserisci, sede, ri.DataRientro.ToShortDateString());

                            using (dtDipendenti dtd = new dtDipendenti())
                            {
                                dtd.DataInizioRicalcoliDipendente(idTrasferimento, ri.DataRientro, db, true);
                            }

                            InviaMailRichiamo(idTrasferimento, db, corpoMessaggio, oggetto);
                        }
                    }
                    catch (Exception ex)
                    {
                        ViewData["errore"] = ex.Message;
                        errore             = ex.Message;
                    }
                    db.Database.CurrentTransaction.Commit();
                }
                catch (Exception ex)
                {
                    db.Database.CurrentTransaction.Rollback();
                    throw ex;
                }
                return(Json(new { err = errore, list = lstr }));
            }
        }