// GET: Sessoes/Create
        public ActionResult Create()
        {
            SessaoCreateViewModel viewModel = new SessaoCreateViewModel
            {
                SalaAudioAnimacaoSelectList = new SelectList(db.vwSala, "SalaAudioAnimacaoID", "SalaNome"),
                FilmeSelectList             = new SelectList(db.Filme, "FilmeID", "Titulo")
            };

            return(View(viewModel));
        }
        public ActionResult Create([Bind(Include = "Data,HorarioInicio,HorarioFim,ValorIngresso,SalaAudioAnimacaoID,FilmeID")] SessaoCreateViewModel 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
                    {
                        Sessao sessao = new Sessao
                        {
                            Data                = ViewModel.Data.Value,
                            HorarioInicio       = ViewModel.HorarioInicio.Value,
                            HorarioFim          = GetHoraFimSessao(ViewModel.HorarioInicio, ViewModel.FilmeID),
                            ValorIngresso       = ViewModel.ValorIngresso.Value,
                            SalaAudioAnimacaoID = ViewModel.SalaAudioAnimacaoID.Value,
                            FilmeID             = ViewModel.FilmeID.Value
                        };

                        db.Sessao.Add(sessao);
                        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.HorarioFim                  = (ViewModel.HorarioInicio.HasValue && ViewModel.FilmeID.HasValue) ? GetHoraFimSessao(ViewModel.HorarioInicio.Value, ViewModel.FilmeID.Value) : new TimeSpan(0, 0, 0);
            ViewModel.FilmeSelectList             = new SelectList(db.Filme, "FilmeID", "Titulo", ViewModel.FilmeID);
            ViewModel.SalaAudioAnimacaoSelectList = new SelectList(db.vwSala, "SalaAudioAnimacaoID", "SalaNome", ViewModel.SalaAudioAnimacaoID);

            return(View(ViewModel));
        }