//public ActionResult NuovaMAB(decimal idTrasferimento)
        //{
        //    MABViewModel mam = new MABViewModel();

        //    List<SelectListItem> lValute = new List<SelectListItem>();

        //    var r = new List<SelectListItem>();

        //    try
        //    {
        //        using (ModelDBISE db = new ModelDBISE())
        //        {
        //            using (dtMaggiorazioneAbitazione dtma = new dtMaggiorazioneAbitazione())
        //            {
        //                using (dtValute dtv = new dtValute())
        //                {
        //                    var lv = dtv.GetElencoValute(db);

        //                    if (lv != null && lv.Count > 0)
        //                    {
        //                        r = (from v in lv
        //                             select new SelectListItem()
        //                             {
        //                                 Text = v.DESCRIZIONEVALUTA,
        //                                 Value = v.IDVALUTA.ToString()
        //                             }).ToList();

        //                        r.Insert(0, new SelectListItem() { Text = "", Value = "" });
        //                    }

        //                    lValute = r;
        //                    ViewBag.lValute = lValute;

        //                    var vm = dtv.GetValutaUfficiale(db);

        //                    mam.id_Valuta = vm.idValuta;
        //                }
        //                using (dtTrasferimento dtt = new dtTrasferimento())
        //                {
        //                    var t = dtt.GetTrasferimentoById(idTrasferimento);
        //                    //mam.dataInizioMAB = t.dataPartenza;
        //                    mam.idTrasferimento = idTrasferimento;
        //                    //mam.dataPartenza = t.dataPartenza;
        //                }
        //                //mam.dataFineMAB = Utility.DataFineStop();
        //                mam.ut_dataFineMAB = null;
        //                mam.importo_canone = 0;

        //                //mam.AnticipoAnnuale = false;
        //                //var mann = dtma.GetMaggiorazioneAnnuale(mam, db);
        //                //mam.idMagAnnuali = mann.idMagAnnuali;

        //                ViewData.Add("idTrasferimento", idTrasferimento);
        //                ViewBag.lValute = lValute;

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

        //}


        public ActionResult ModificaMAB(decimal idMAB)
        {
            MABViewModel mam = new MABViewModel();

            List <SelectListItem> lValute = new List <SelectListItem>();

            var r = new List <SelectListItem>();

            try
            {
                using (ModelDBISE db = new ModelDBISE())
                {
                    using (dtMaggiorazioneAbitazione dtma = new dtMaggiorazioneAbitazione())
                    {
                        using (dtValute dtv = new dtValute())
                        {
                            using (dtTrasferimento dtt = new dtTrasferimento())
                            {
                                var m = db.MAB.Find(idMAB);
                                var t = dtt.GetTrasferimentoById(m.INDENNITA.TRASFERIMENTO.IDTRASFERIMENTO);

                                var mab = dtma.GetMABPartenza(t.idTrasferimento, db);

                                var pmm = dtma.GetPeriodoMABModelPartenza(mab.IDMAB, db);

                                CANONEMAB cm = dtma.GetCanoneMABPartenza(mab, db);

                                var aa = dtma.GetAnticipoAnnualeMABPartenza(mab, db);

                                mam.importo_canone   = cm.IMPORTOCANONE;
                                mam.dataInizioMAB    = pmm.dataInizioMAB;
                                mam.ut_dataInizioMAB = pmm.dataInizioMAB;
                                mam.dataFineMAB      = pmm.dataFineMAB;
                                mam.anticipoAnnuale  = aa.ANTICIPOANNUALE;
                                mam.id_Valuta        = cm.IDVALUTA;

                                var vm = dtv.GetValutaModel(mam.id_Valuta, db);
                                mam.descrizioneValuta = vm.descrizioneValuta;

                                var lv = dtv.GetElencoValute(db);

                                if (lv != null && lv.Count > 0)
                                {
                                    r = (from v in lv
                                         select new SelectListItem()
                                    {
                                        Text = v.DESCRIZIONEVALUTA,
                                        Value = v.IDVALUTA.ToString()
                                    }).ToList();

                                    r.Insert(0, new SelectListItem()
                                    {
                                        Text = "", Value = ""
                                    });
                                }

                                lValute         = r;
                                ViewBag.lValute = lValute;

                                mam.idMAB           = m.IDMAB;
                                mam.idTrasferimento = t.idTrasferimento;
                                var amab = dtma.GetAttivazionePartenzaMAB(t.idTrasferimento);
                                mam.idAttivazioneMAB = amab.idAttivazioneMAB;

                                mam.idMagAnnuali = 0;
                                var mann = dtma.GetMaggiorazioneAnnuale(mab, db);
                                if (mann.IDMAGANNUALI > 0)
                                {
                                    mam.idMagAnnuali = mann.IDMAGANNUALI;
                                }

                                var lpc = dtma.GetListPagatoCondivisoMABPartenza(mam);

                                if (lpc.Count() > 0)
                                {
                                    var pc = lpc.First();
                                    mam.canone_condiviso = pc.CONDIVISO;
                                    mam.canone_pagato    = pc.PAGATO;
                                }

                                mam.ut_dataFineMAB = pmm.dataFineMAB;
                                if (pmm.dataFineMAB == Utility.DataFineStop())
                                {
                                    mam.ut_dataFineMAB = null;
                                }

                                ViewData.Add("idMAB", idMAB);
                                ViewData.Add("idTrasferimento", t.idTrasferimento);
                                ViewBag.lValute = lValute;

                                return(PartialView(mam));
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                return(PartialView("ErrorPartial", new MsgErr()
                {
                    msg = ex.Message
                }));
            }
        }
        public ActionResult ConfermaModificaMAB(MABViewModel mvm, decimal idTrasferimento, decimal idMAB)
        {
            MABViewModel mam = new MABViewModel();

            try
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        using (dtMaggiorazioneAbitazione dtma = new dtMaggiorazioneAbitazione())
                        {
                            dtma.AggiornaMAB(mvm, idTrasferimento, idMAB);
                        }
                    }
                    catch (Exception ex)
                    {
                        ModelState.AddModelError("", ex.Message);

                        List <SelectListItem> lValute = new List <SelectListItem>();

                        var r = new List <SelectListItem>();

                        using (ModelDBISE db = new ModelDBISE())
                        {
                            using (dtValute dtv = new dtValute())
                            {
                                var lv = dtv.GetElencoValute(db);

                                if (lv != null && lv.Count > 0)
                                {
                                    r = (from v in lv
                                         select new SelectListItem()
                                    {
                                        Text = v.DESCRIZIONEVALUTA,
                                        Value = v.IDVALUTA.ToString()
                                    }).ToList();

                                    r.Insert(0, new SelectListItem()
                                    {
                                        Text = "", Value = ""
                                    });
                                }

                                lValute         = r;
                                ViewBag.lValute = lValute;

                                ViewData.Add("idMAB", idMAB);
                                ViewData.Add("idTrasferimento", idTrasferimento);

                                return(PartialView("ModificaMAB", mvm));
                            }
                        }
                    }
                }
                else
                {
                    List <SelectListItem> lValute = new List <SelectListItem>();

                    var r = new List <SelectListItem>();

                    using (ModelDBISE db = new ModelDBISE())
                    {
                        using (dtValute dtv = new dtValute())
                        {
                            var lv = dtv.GetElencoValute(db);

                            if (lv != null && lv.Count > 0)
                            {
                                r = (from v in lv
                                     select new SelectListItem()
                                {
                                    Text = v.DESCRIZIONEVALUTA,
                                    Value = v.IDVALUTA.ToString()
                                }).ToList();

                                r.Insert(0, new SelectListItem()
                                {
                                    Text = "", Value = ""
                                });
                            }

                            lValute         = r;
                            ViewBag.lValute = lValute;

                            ViewData.Add("idMAB", idMAB);
                            ViewData.Add("idTrasferimento", idTrasferimento);

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

            return(RedirectToAction("GestioneMAB", new { idTrasferimento = idTrasferimento }));
        }
        public ActionResult AttivitaMAB(decimal idTrasferimento)
        {
            List <MABViewModel> mavml = new List <MABViewModel>();
            MABViewModel        mavm  = new MABViewModel();
            //MaggiorazioneAbitazioneModel mam = new MaggiorazioneAbitazioneModel();
            MAB                 mab  = new MAB();
            PERIODOMAB          pmab = new PERIODOMAB();
            ATTIVAZIONEMAB      am   = new ATTIVAZIONEMAB();
            AttivazioneMABModel amm  = new AttivazioneMABModel();
            ANTICIPOANNUALEMAB  aa   = new ANTICIPOANNUALEMAB();
            CANONEMAB           cm   = new CANONEMAB();

            using (ModelDBISE db = new ModelDBISE())
            {
                try
                {
                    db.Database.BeginTransaction();

                    bool soloLettura = false;
                    bool siDati      = false;
                    EnumStatoTraferimento statoTrasferimento = 0;
                    using (dtTrasferimento dtt = new dtTrasferimento())
                    {
                        using (dtMaggiorazioneAbitazione dtma = new dtMaggiorazioneAbitazione())
                        {
                            var t = dtt.GetTrasferimentoById(idTrasferimento);

                            amm = dtma.GetAttivazionePartenzaMAB(idTrasferimento);

                            if (amm != null && amm.idAttivazioneMAB > 0)
                            {
                                if (amm.notificaRichiesta)
                                {
                                    soloLettura = true;
                                }
                            }
                            mavm.idAttivazioneMAB = amm.idAttivazioneMAB;

                            mab = dtma.GetMABPartenza(idTrasferimento, db);

                            pmab = dtma.GetPeriodoMABPartenza(mab.IDMAB, db);

                            mavm.idMAB        = mab.IDMAB;
                            mavm.idPeriodoMAB = pmab.IDPERIODOMAB;

                            mavm.rinunciaMAB = mab.RINUNCIAMAB;

                            cm = dtma.GetCanoneMABPartenza(mab, db);

                            aa = dtma.GetAnticipoAnnualeMABPartenza(mab, db);
                            mavm.importo_canone = cm.IMPORTOCANONE;
                            mavm.dataInizioMAB  = pmab.DATAINIZIOMAB;
                            mavm.dataFineMAB    = pmab.DATAFINEMAB > t.dataRientro ? t.dataRientro.Value : pmab.DATAFINEMAB;
                            if (aa.IDANTICIPOANNUALEMAB > 0)
                            {
                                mavm.anticipoAnnuale = aa.ANTICIPOANNUALE;
                            }
                            else
                            {
                                mavm.anticipoAnnuale = false;

                                aa = dtma.CreaAnticipoAnnualePartenza(mavm, db);
                            }

                            mavm.id_Valuta = cm.IDVALUTA;

                            using (dtValute dtv = new dtValute())
                            {
                                var v = dtv.GetValutaModel(mavm.id_Valuta, db);
                                mavm.descrizioneValuta = v.descrizioneValuta;
                            }

                            var lpc = dtma.GetListPagatoCondivisoMABPartenza(mavm);

                            if (lpc.Count() > 0)
                            {
                                var pc = lpc.First();
                                mavm.canone_pagato    = pc.PAGATO;
                                mavm.canone_condiviso = pc.CONDIVISO;
                            }

                            mavml.Add(mavm);

                            siDati = true;

                            statoTrasferimento = t.idStatoTrasferimento;
                            if (statoTrasferimento == EnumStatoTraferimento.Annullato)
                            {
                                soloLettura = true;
                            }

                            if (mab.RINUNCIAMAB)
                            {
                                soloLettura = true;
                            }

                            ViewData.Add("soloLettura", soloLettura);
                            ViewData.Add("siDati", siDati);
                            ViewData.Add("idAttivazioneMAB", amm.idAttivazioneMAB);
                            ViewData.Add("idMAB", mab.IDMAB);
                            ViewData.Add("idTrasferimento", idTrasferimento);
                        }
                    }

                    db.Database.CurrentTransaction.Commit();
                }

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

            return(PartialView(mavml));
        }