// GET: Salas/Create
        public ActionResult Create()
        {
            SalaCreateViewModel viewModel = new SalaCreateViewModel
            {
                TipoAnimacaoID3selectList = new SelectList(db.TipoAnimacao, "TipoAnimacaoID", "Descricao"),
                TipoAudioID3selectList    = new SelectList(db.TipoAudio, "TipoAudioID", "Descricao"),
                TipoAnimacaoID2selectList = new SelectList(db.TipoAnimacao, "TipoAnimacaoID", "Descricao"),
                TipoAudioID2selectList    = new SelectList(db.TipoAudio, "TipoAudioID", "Descricao"),
                TipoAnimacaoID1selectList = new SelectList(db.TipoAnimacao, "TipoAnimacaoID", "Descricao"),
                TipoAudioID1selectList    = new SelectList(db.TipoAudio, "TipoAudioID", "Descricao")
            };

            return(View(viewModel));
        }
        public ActionResult Create([Bind(Include = "Nome,QtdAssentos,TipoAudioID1,TipoAudioID1selectList,TipoAnimacaoID1,TipoAnimacaoID1selectList,TipoAudioID2,TipoAudioID2selectList,TipoAnimacaoID2,TipoAnimacaoID2selectList,TipoAudioID3,TipoAudioID3selectList,TipoAnimacaoID3,TipoAnimacaoID3selectList")] SalaCreateViewModel ViewModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Sala sala = new Sala
                    {
                        Nome        = ViewModel.Nome,
                        QtdAssentos = ViewModel.QtdAssentos
                    };

                    //--Armazena as opções Tipo Animacao e Tipo Audio obrigatórias
                    SalaAudioAnimacao salaAudioAnimacao1 = new SalaAudioAnimacao
                    {
                        Sala           = sala,
                        TipoAnimacaoID = ViewModel.TipoAnimacaoID1,
                        TipoAudioID    = ViewModel.TipoAudioID1
                    };

                    db.Sala.Add(sala);
                    db.SalaAudioAnimacao.Add(salaAudioAnimacao1);

                    //--versão 2.0 criar lista de Audio/Animação
                    //--Vincula à sala as 2 opções Tipo Animacao e Tipo Audio opcionais
                    if (ViewModel.TipoAnimacaoID2.HasValue && ViewModel.TipoAnimacaoID2.Value != 0 &&
                        ViewModel.TipoAudioID2.HasValue && ViewModel.TipoAudioID2.Value != 0)
                    {
                        if (ViewModel.TipoAnimacaoID1 != ViewModel.TipoAnimacaoID2.Value ||
                            ViewModel.TipoAudioID1 != ViewModel.TipoAudioID2.Value)
                        {
                            SalaAudioAnimacao salaAudioAnimacao2 = new SalaAudioAnimacao
                            {
                                Sala           = sala,
                                TipoAnimacaoID = ViewModel.TipoAnimacaoID2.Value,
                                TipoAudioID    = ViewModel.TipoAudioID2.Value
                            };

                            db.SalaAudioAnimacao.Add(salaAudioAnimacao2);
                        }

                        if (ViewModel.TipoAnimacaoID3.HasValue && ViewModel.TipoAnimacaoID3.Value != 0 &&
                            ViewModel.TipoAudioID3.HasValue && ViewModel.TipoAudioID3.Value != 0)
                        {
                            if ((ViewModel.TipoAnimacaoID3.Value != ViewModel.TipoAnimacaoID2.Value &&
                                 ViewModel.TipoAnimacaoID3.Value != ViewModel.TipoAnimacaoID1) ||
                                (ViewModel.TipoAudioID3.Value != ViewModel.TipoAudioID2.Value &&
                                 ViewModel.TipoAudioID3.Value != ViewModel.TipoAudioID1))
                            {
                                SalaAudioAnimacao salaAudioAnimacao3 = new SalaAudioAnimacao
                                {
                                    Sala           = sala,
                                    TipoAnimacaoID = ViewModel.TipoAnimacaoID3.Value,
                                    TipoAudioID    = ViewModel.TipoAudioID3.Value
                                };

                                db.SalaAudioAnimacao.Add(salaAudioAnimacao3);
                            }
                        }
                    }

                    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"));
                }
            }

            //--Configura os valores anteriormente selecionados na tela
            ViewModel.TipoAnimacaoID3selectList.First(x => x.Value == "selectedValue").Selected = true;
            ViewModel.TipoAudioID3selectList.First(x => x.Value == "selectedValue").Selected    = true;
            ViewModel.TipoAnimacaoID2selectList.First(x => x.Value == "selectedValue").Selected = true;
            ViewModel.TipoAudioID2selectList.First(x => x.Value == "selectedValue").Selected    = true;
            ViewModel.TipoAnimacaoID1selectList.First(x => x.Value == "selectedValue").Selected = true;
            ViewModel.TipoAudioID1selectList.First(x => x.Value == "selectedValue").Selected    = true;

            return(View(ViewModel));
        }