public JsonResult ConfermaAttivaRichiestaVariazioneTV(decimal idTitoliViaggio)
        {
            string errore = "";

            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtVariazioneTitoliViaggi dtvtv = new dtVariazioneTitoliViaggi())
                    {
                        decimal idAttivazione = dtvtv.GetAttivazioneTV(idTitoliViaggio, db).IDATTIVAZIONETITOLIVIAGGIO;

                        if (dtvtv.VerificaDocumentiAttivazioneTV(idAttivazione, db))
                        {
                            dtvtv.AttivaRichiestaDocumentiTV(idAttivazione, db);
                        }
                        else
                        {
                            dtvtv.AttivaRichiestaTV(idAttivazione, db);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                errore = ex.Message;
            }

            return
                (Json(
                     new
            {
                err = errore
            }));
        }
        public ActionResult ElencoVariazioneTV(decimal idTitoliViaggio)
        {
            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtVariazioneTitoliViaggi dtvtv = new dtVariazioneTitoliViaggi())
                    {
                        List <ElencoTitoliViaggioModel> ltvm = new List <ElencoTitoliViaggioModel>();

                        var  atv                        = dtvtv.GetAttivazioneTV(idTitoliViaggio, db);
                        var  atv_attivata               = dtvtv.GetUltimaAttivazioneVariazioneAttivata(idTitoliViaggio, db);
                        bool richiestaEseguita          = false;
                        bool richiestaDocumentiEseguita = false;
                        bool faseRichiestaDocumenti     = false;
                        bool faseRichiesta              = false;

                        //se esistono documenti assoctai all'attivazione vuol dire che sto
                        //nella fase di invio documenti di viaggio
                        //altrimenti sto nella fase di richiesta titoli viaggio
                        if (atv_attivata.IDATTIVAZIONETITOLIVIAGGIO > 0)
                        {
                            if (dtvtv.VerificaDocumentiAttivazioneTV(atv_attivata.IDATTIVAZIONETITOLIVIAGGIO, db) == false)
                            {
                                faseRichiestaDocumenti = true;
                                if (atv.NOTIFICARICHIESTA == false && atv.ATTIVAZIONERICHIESTA == false)
                                {
                                    //elenco di tutti i familiari di cui ho richiesto il TV
                                    ltvm = dtvtv.ElencoTVDocumentiDaNotificare(atv);
                                }

                                if (atv.NOTIFICARICHIESTA && atv.ATTIVAZIONERICHIESTA == false)
                                {
                                    //elenco di tutti i familiari associati all'attivazione
                                    ltvm = dtvtv.ElencoTVDocumentiDaAttivare(atv);
                                    richiestaDocumentiEseguita = true;
                                }
                            }
                            else
                            {
                                faseRichiesta = true;

                                if (atv.NOTIFICARICHIESTA && atv.ATTIVAZIONERICHIESTA == false)
                                {
                                    //elenco di tutti i familiari associati all'attivazione
                                    ltvm = dtvtv.ElencoTVDaAttivare(atv);
                                    richiestaEseguita = true;
                                }

                                if (atv.NOTIFICARICHIESTA == false && atv.ATTIVAZIONERICHIESTA == false)
                                {
                                    //elenco di tutti i familiari che non hanno richiesto TV
                                    ltvm = dtvtv.ElencoTVDaRichiedere(atv, db);
                                }
                            }
                        }
                        else
                        {
                            faseRichiesta = true;

                            if (atv.NOTIFICARICHIESTA && atv.ATTIVAZIONERICHIESTA == false)
                            {
                                //elenco di tutti i familiari associati all'attivazione
                                ltvm = dtvtv.ElencoTVDaAttivare(atv);
                                richiestaEseguita = true;
                            }

                            if (atv.NOTIFICARICHIESTA == false && atv.ATTIVAZIONERICHIESTA == false)
                            {
                                //elenco di tutti i familiari che non hanno richiesto TV
                                ltvm = dtvtv.ElencoTVDaRichiedere(atv, db);
                            }
                        }

                        using (dtTrasferimento dtt = new dtTrasferimento())
                        {
                            var t = dtt.GetTrasferimentoByIdTitoloViaggio(idTitoliViaggio);
                            EnumStatoTraferimento statoTrasferimento = t.idStatoTrasferimento;
                            ViewData.Add("statoTrasferimento", statoTrasferimento);
                        }


                        //bool richiestaEseguita = dtvtv.richiestaEseguita(idTitoliViaggio);

                        ViewData.Add("richiestaEseguita", richiestaEseguita);
                        ViewData.Add("faseRichiesta", faseRichiesta);
                        ViewData.Add("faseRichiestaDocumenti", faseRichiestaDocumenti);

                        ViewData.Add("richiestaDocumentiEseguita", richiestaDocumentiEseguita);
                        ViewData.Add("idTitoliViaggio", idTitoliViaggio);
                        ViewData.Add("idAttivazioneTV", atv.IDATTIVAZIONETITOLIVIAGGIO);


                        return(PartialView(ltvm));
                    }
                }
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
        }
        public ActionResult MessaggioAnnullaVariazioneTV(decimal idTitoliViaggio)
        {
            ModelloMsgMail msg = new ModelloMsgMail();

            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtVariazioneTitoliViaggi dtvtv = new dtVariazioneTitoliViaggi())
                    {
                        using (dtDipendenti dtd = new dtDipendenti())
                        {
                            using (dtTrasferimento dtt = new dtTrasferimento())
                            {
                                using (dtUffici dtu = new dtUffici())
                                {
                                    var t = dtt.GetTrasferimentoByIdTitoloViaggio(idTitoliViaggio);

                                    if (t?.idTrasferimento > 0)
                                    {
                                        var dip = dtd.GetDipendenteByID(t.idDipendente);
                                        var uff = dtu.GetUffici(t.idUfficio);

                                        var ultima_att_var_attivata = dtvtv.GetUltimaAttivazioneVariazioneAttivata(idTitoliViaggio, db);
                                        //var conta_attivazioni = dtvtv.GetNumAttivazioniTV(idTitoliViaggio, db);

                                        string messaggioAnnulla = "";

                                        if (ultima_att_var_attivata.IDATTIVAZIONETITOLIVIAGGIO > 0)
                                        {
                                            if (dtvtv.VerificaDocumentiAttivazioneTV(ultima_att_var_attivata.IDATTIVAZIONETITOLIVIAGGIO, db))
                                            {
                                                messaggioAnnulla = Resources.msgEmail.MessaggioAnnullaRichiestaInizialeTitoloViaggio;
                                            }
                                            else
                                            {
                                                messaggioAnnulla = Resources.msgEmail.MessaggioAnnullaRichiestaSuccessivaTitoloViaggio;
                                            }
                                        }
                                        else
                                        {
                                            messaggioAnnulla = Resources.msgEmail.MessaggioAnnullaRichiestaInizialeTitoloViaggio;
                                        }

                                        msg.corpoMsg            = string.Format(messaggioAnnulla, uff.descUfficio + " (" + uff.codiceUfficio + ")", t.dataPartenza.ToShortDateString());
                                        ViewBag.idTrasferimento = t.idTrasferimento;
                                        ViewBag.idTitoliViaggio = idTitoliViaggio;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
            return(PartialView(msg));
        }