// GET: Sessoes/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                ViewBag.Mensagem = "Não existe Sessão com esse id= " + id;
                return(View("~/Views/Shared/Error.cshtml"));
            }


            Sessao sessao = db.Sessao.Find(id);

            if (sessao == null)
            {
                ViewBag.Mensagem = "Não existe Sessão com esse id= " + id;
                return(View("~/Views/Shared/Error.cshtml"));
            }

            SessaoEditViewModel ViewModel = new SessaoEditViewModel
            {
                SessaoID                    = sessao.SessaoID,
                Data                        = sessao.Data,
                HorarioInicio               = sessao.HorarioInicio,
                HorarioFim                  = sessao.HorarioFim,
                ValorIngresso               = sessao.ValorIngresso,
                SalaAudioAnimacaoID         = sessao.SalaAudioAnimacaoID,
                SalaAudioAnimacaoSelectList = new SelectList(db.vwSala, "SalaAudioAnimacaoID", "SalaNome", sessao.SalaAudioAnimacaoID),
                FilmeID                     = sessao.FilmeID,
                FilmeSelectList             = new SelectList(db.Filme, "FilmeID", "Titulo", sessao.FilmeID)
            };


            return(View(ViewModel));
        }
        public ActionResult Edit([Bind(Include = "SessaoID,Data,HorarioInicio,HorarioFim,ValorIngresso,SalaAudioAnimacaoID,SalaAudioAnimacaoSelectList,FilmeID,FilmeSelectList")] SessaoEditViewModel ViewModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    if (
                        HasConflitoHorario(ViewModel.SalaAudioAnimacaoID.Value,
                                           ViewModel.Data.Value,
                                           ViewModel.HorarioInicio.Value,
                                           GetHoraFimSessao(ViewModel.HorarioInicio, ViewModel.FilmeID))
                        )
                    {
                        ViewBag.PostError = GetDadosConflitoHorario(ViewModel.SalaAudioAnimacaoID.Value,
                                                                    ViewModel.Data.Value,
                                                                    ViewModel.HorarioInicio.Value,
                                                                    GetHoraFimSessao(ViewModel.HorarioInicio, ViewModel.FilmeID));
                    }
                    else
                    {
                        var sessaoDb = db.Sessao.Where(s => s.SessaoID == ViewModel.SessaoID).FirstOrDefault();

                        if (sessaoDb != null)
                        {
                            sessaoDb.Data                = ViewModel.Data.Value;
                            sessaoDb.HorarioInicio       = ViewModel.HorarioInicio.Value;
                            sessaoDb.HorarioFim          = ViewModel.HorarioInicio.Value;
                            sessaoDb.ValorIngresso       = ViewModel.ValorIngresso.Value;
                            sessaoDb.SalaAudioAnimacaoID = ViewModel.SalaAudioAnimacaoID.Value;
                            sessaoDb.FilmeID             = ViewModel.FilmeID.Value;

                            db.Entry(sessaoDb).State = EntityState.Modified;
                            db.SaveChanges();
                            return(RedirectToAction("Index"));
                        }
                    }
                }
                catch (Exception ex)
                {
                    var erro         = ex.Message;
                    var msg1         = ex.InnerException != null ? ex.InnerException.Message : "";
                    var msg2         = ex.InnerException != null ? (ex.InnerException.InnerException != null ? ex.InnerException.InnerException.Message : "") : "";
                    var finalMessage = erro + " " + msg1 + " " + msg2;
                    ViewBag.Mensagem = finalMessage;
                    return(View("~/Views/Shared/Error.cshtml"));
                }
            }

            ViewModel.SalaAudioAnimacaoSelectList = new SelectList(db.vwSala, "SalaAudioAnimacaoID", "SalaNome", ViewModel.SalaAudioAnimacaoID);
            ViewModel.FilmeSelectList             = new SelectList(db.Filme, "FilmeID", "Titulo", ViewModel.FilmeID);

            return(View(ViewModel));
        }