public JsonResult InserisciDocumentoTV(
            decimal idTrasferimento,
            decimal idTipoDocumento,
            HttpPostedFileBase file,
            decimal idFamiliare,
            decimal idAttivazione,
            decimal idParentela,
            decimal idConiugeTV,
            decimal idFigliTV,
            decimal idDocTV)
        {
            using (ModelDBISE db = new ModelDBISE())
            {
                CONIUGETITOLIVIAGGIO ctv = new CONIUGETITOLIVIAGGIO();
                FIGLITITOLIVIAGGIO   ftv = new FIGLITITOLIVIAGGIO();
                try
                {
                    db.Database.BeginTransaction();

                    using (dtVariazioneTitoliViaggi dtvtv = new dtVariazioneTitoliViaggi())
                    {
                        using (dtDocumenti dtd = new dtDocumenti())
                        {
                            DocumentiModel dm                      = new DocumentiModel();
                            bool           esisteFile              = false;
                            bool           gestisceEstensioni      = false;
                            bool           dimensioneConsentita    = false;
                            string         dimensioneMaxConsentita = string.Empty;

                            Utility.PreSetDocumento(file, out dm, out esisteFile, out gestisceEstensioni,
                                                    out dimensioneConsentita, out dimensioneMaxConsentita,
                                                    (EnumTipoDoc)idTipoDocumento);

                            if (esisteFile)
                            {
                                if (gestisceEstensioni == false)
                                {
                                    throw new Exception(
                                              "Il documento selezionato non è nel formato consentito. Il formato supportato è: pdf.");
                                }

                                if (dimensioneConsentita)
                                {
                                    //verifica se il documento è gia presente ritornando l'eventuale id
                                    //decimal idDocumentoEsistente = dtvtv.VerificaEsistenzaDocumentoTV(idTrasferimento, idTipoDocumento, idParentela, idFamiliare);
                                    decimal idDocumentoEsistente = idDocTV;

                                    if (idDocumentoEsistente > 0)
                                    {
                                        //se già esiste lo sostituisco (imposto modificato=true su quello esistente e ne inserisco una altro)
                                        dtvtv.SostituisciDocumentoTV(ref dm, idDocumentoEsistente, idAttivazione, db);
                                    }
                                    else
                                    {
                                        //se non esiste lo inserisco
                                        dtvtv.SetDocumentoTV(ref dm, idAttivazione, db);
                                    }

                                    switch ((EnumParentela)idParentela)
                                    {
                                    case EnumParentela.Coniuge:
                                        dtvtv.AssociaDocumento_ConiugeTV(idConiugeTV, dm.idDocumenti, db);
                                        dtd.AssociaDocumentoConiuge(idFamiliare, dm.idDocumenti, db);
                                        break;

                                    case EnumParentela.Figlio:
                                        dtvtv.AssociaDocumento_FigliTV(idFigliTV, dm.idDocumenti, db);
                                        dtd.AssociaDocumentoFiglio(idFamiliare, dm.idDocumenti, db);
                                        break;
                                    }

                                    Utility.SetLogAttivita(EnumAttivitaCrud.Inserimento, "Inserimento di una nuovo documento (maggiorazione abitazione).", "Documenti", db, idTrasferimento, dm.idDocumenti);
                                }
                                else
                                {
                                    throw new Exception(
                                              "Il documento selezionato supera la dimensione massima consentita (" +
                                              dimensioneMaxConsentita + " Mb).");
                                }
                            }
                            else
                            {
                                throw new Exception("Il documento è obbligatorio.");
                            }
                        }
                    }

                    db.Database.CurrentTransaction.Commit();
                    return(Json(new { msg = "Il documento è stato inserito." }));
                }
                catch (Exception ex)
                {
                    db.Database.CurrentTransaction.Rollback();
                    return(Json(new { err = ex.Message }));
                }
            }
        }