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 AltriDatiFamiliariFiglio(decimal idTitoliViaggio, decimal idFiglio, decimal idTabTV)
        {
            AltriDatiFamFiglioModel         adffm = new AltriDatiFamFiglioModel();
            TitoloViaggioModel              tvm   = new TitoloViaggioModel();
            List <ElencoTitoliViaggioModel> ltvm  = new List <ElencoTitoliViaggioModel>();

            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtVariazioneTitoliViaggi dtvtv = new dtVariazioneTitoliViaggi())
                    {
                        adffm = dtvtv.GetAltriDatiFamiliariFiglio(idTitoliViaggio, idFiglio);

                        decimal idAttivazioneTV = dtvtv.GetAttivazioneTV(idTitoliViaggio, db).IDATTIVAZIONETITOLIVIAGGIO;

                        ViewData.Add("idTitoliViaggio", idTitoliViaggio);
                        ViewData.Add("idAttivazioneTV", idAttivazioneTV);
                        ViewData.Add("idTabTV", idTabTV);

                        using (dtFigli dtf = new dtFigli())
                        {
                            FigliModel f = dtf.GetFigliobyID(idFiglio);
                            if (f != null && f.HasValue())
                            {
                                switch (f.idTipologiaFiglio)
                                {
                                case EnumTipologiaFiglio.Residente:
                                    adffm.residente = true;
                                    adffm.studente  = false;
                                    break;

                                case EnumTipologiaFiglio.NonResidente:
                                    adffm.residente = false;
                                    adffm.studente  = false;
                                    break;

                                case EnumTipologiaFiglio.StudenteResidente:
                                    adffm.studente  = true;
                                    adffm.residente = true;
                                    break;

                                case EnumTipologiaFiglio.StudenteNonResidente:
                                    adffm.residente = false;
                                    adffm.studente  = true;
                                    break;

                                default:
                                    throw new ArgumentOutOfRangeException();
                                }
                            }
                        }
                    }

                    if (adffm != null && adffm.HasValue())
                    {
                        using (dtFigli dtc = new dtFigli())
                        {
                            var fm = dtc.GetFigliobyID(idFiglio);
                            adffm.Figli = fm;
                        }
                    }
                }

                return(PartialView(adffm));
            }

            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
        }
        public ActionResult AltriDatiFamiliariConiuge(decimal idTitoliViaggio, decimal idConiuge, decimal idTabTV)
        {
            AltriDatiFamConiugeModel        adfcm = new AltriDatiFamConiugeModel();
            TitoloViaggioModel              tvm   = new TitoloViaggioModel();
            List <ElencoTitoliViaggioModel> ltvm  = new List <ElencoTitoliViaggioModel>();

            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtVariazioneTitoliViaggi dtvtv = new dtVariazioneTitoliViaggi())
                    {
                        adfcm = dtvtv.GetAltriDatiFamiliariConiuge(idTitoliViaggio, idConiuge);

                        decimal idAttivazioneTV = dtvtv.GetAttivazioneTV(idTitoliViaggio, db).IDATTIVAZIONETITOLIVIAGGIO;

                        ViewData.Add("idTitoliViaggio", idTitoliViaggio);
                        ViewData.Add("idAttivazioneTV", idAttivazioneTV);
                        ViewData.Add("idTabTV", idTabTV);

                        using (dtConiuge dtc = new dtConiuge())
                        {
                            ConiugeModel c = dtc.GetConiugebyID(idConiuge);
                            if (c != null && c.HasValue())
                            {
                                switch (c.idTipologiaConiuge)
                                {
                                case EnumTipologiaConiuge.Residente:
                                    adfcm.residente           = true;
                                    adfcm.ulterioreMagConiuge = false;
                                    break;

                                case EnumTipologiaConiuge.NonResidente_A_Carico:
                                    adfcm.residente           = false;
                                    adfcm.ulterioreMagConiuge = true;
                                    break;

                                case EnumTipologiaConiuge.NonResidente:
                                    adfcm.residente           = false;
                                    adfcm.ulterioreMagConiuge = false;
                                    break;

                                default:
                                    throw new ArgumentOutOfRangeException();
                                }
                            }
                        }
                    }

                    if (adfcm != null && adfcm.HasValue())
                    {
                        using (dtConiuge dtc = new dtConiuge())
                        {
                            var cm = dtc.GetConiugebyID(idConiuge);
                            adfcm.Coniuge = cm;
                        }
                    }
                }

                return(PartialView(adfcm));
            }

            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
        }