예제 #1
0
        public ActionResult Edit([Bind(Include = "SalaID,Nome,QtdAssentos,SalaAudioAnimacaoID1,SalaAudioAnimacaoID2,SalaAudioAnimacaoID3,TipoAudioID1,TipoAudioID1selectList,TipoAnimacaoID1,TipoAnimacaoID1selectList,TipoAudioID2,TipoAudioID2selectList,TipoAnimacaoID2,TipoAnimacaoID2selectList,TipoAudioID3,TipoAudioID3selectList,TipoAnimacaoID3,TipoAnimacaoID3selectList")] SalaEditViewModel ViewModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Sala salaDb = db.Sala.Where(s => s.SalaID == ViewModel.SalaID).FirstOrDefault();

                    if (salaDb == null)
                    {
                        ViewBag.Mensagem = "Não existe um registro na tabela Sala com esse id " + ViewModel.SalaID;
                        return(View("~/Views/Shared/Error.cshtml"));
                    }

                    salaDb.Nome        = ViewModel.Nome;
                    salaDb.QtdAssentos = ViewModel.QtdAssentos;

                    //--versão 2.0 criar lista de Audio/Animação
                    //--Atualiza o relacionamento SalaAudioAnimacao
                    List <SalaAudioAnimacao> itensExcluir   = new List <SalaAudioAnimacao>();
                    List <SalaAudioAnimacao> itensAdicionar = new List <SalaAudioAnimacao>();

                    salaDb.SalaAudioAnimacao
                    .Where(s => s.SalaAudioAnimacaoID == ViewModel.SalaAudioAnimacaoID1)
                    .FirstOrDefault()
                    .TipoAnimacaoID = ViewModel.TipoAnimacaoID1;

                    salaDb.SalaAudioAnimacao
                    .Where(s => s.SalaAudioAnimacaoID == ViewModel.SalaAudioAnimacaoID1)
                    .FirstOrDefault()
                    .TipoAudioID = ViewModel.TipoAudioID1;

                    if (ViewModel.TipoAnimacaoID2.HasValue && ViewModel.TipoAudioID2.HasValue)
                    {
                        if (ViewModel.SalaAudioAnimacaoID2 == 0)
                        {
                            //--insere
                            itensAdicionar.Add(
                                new SalaAudioAnimacao
                            {
                                SalaID         = salaDb.SalaID,
                                TipoAudioID    = ViewModel.TipoAudioID2.Value,
                                TipoAnimacaoID = ViewModel.TipoAnimacaoID2.Value
                            });
                        }
                        else
                        {
                            //--atualiza
                            salaDb.SalaAudioAnimacao
                            .Where(s => s.SalaAudioAnimacaoID == ViewModel.SalaAudioAnimacaoID2)
                            .FirstOrDefault()
                            .TipoAnimacaoID = ViewModel.TipoAnimacaoID2.Value;

                            salaDb.SalaAudioAnimacao
                            .Where(s => s.SalaAudioAnimacaoID == ViewModel.SalaAudioAnimacaoID2)
                            .FirstOrDefault()
                            .TipoAudioID = ViewModel.TipoAudioID2.Value;
                        }
                    }
                    else
                    {
                        if (ViewModel.SalaAudioAnimacaoID2 > 0)
                        {
                            //--remove do banco de dados a opção
                            var deleteItem = salaDb.SalaAudioAnimacao
                                             .Where(s => s.SalaAudioAnimacaoID == ViewModel.SalaAudioAnimacaoID2)
                                             .FirstOrDefault();

                            if (deleteItem != null)
                            {
                                itensExcluir.Add(deleteItem);                    // salaDb.SalaAudioAnimacao.Remove(deleteItem);
                            }
                        }
                    }

                    if (ViewModel.TipoAnimacaoID3.HasValue && ViewModel.TipoAudioID3.HasValue)
                    {
                        if (ViewModel.SalaAudioAnimacaoID3 == 0)
                        {
                            //--insere
                            itensAdicionar.Add(
                                new SalaAudioAnimacao
                            {
                                SalaID         = salaDb.SalaID,
                                TipoAudioID    = ViewModel.TipoAudioID3.Value,
                                TipoAnimacaoID = ViewModel.TipoAnimacaoID3.Value
                            });
                        }
                        else
                        {
                            //--atualiza
                            salaDb.SalaAudioAnimacao
                            .Where(s => s.SalaAudioAnimacaoID == ViewModel.SalaAudioAnimacaoID3)
                            .FirstOrDefault()
                            .TipoAnimacaoID = ViewModel.TipoAnimacaoID3.Value;

                            salaDb.SalaAudioAnimacao
                            .Where(s => s.SalaAudioAnimacaoID == ViewModel.SalaAudioAnimacaoID3)
                            .FirstOrDefault()
                            .TipoAudioID = ViewModel.TipoAudioID3.Value;
                        }
                    }
                    else
                    {
                        if (ViewModel.SalaAudioAnimacaoID3 > 0)
                        {
                            //--remove do banco de dados a opção
                            var deleteItem = salaDb.SalaAudioAnimacao
                                             .Where(s => s.SalaAudioAnimacaoID == ViewModel.SalaAudioAnimacaoID3)
                                             .FirstOrDefault();

                            if (deleteItem != null)
                            {
                                itensExcluir.Add(deleteItem);                    // salaDb.SalaAudioAnimacao.Remove(deleteItem);
                            }
                        }
                    }

                    db.Entry(salaDb).State = EntityState.Modified;
                    db.SaveChanges();

                    foreach (var item in itensExcluir)
                    {
                        db.SalaAudioAnimacao.Remove(item);
                    }

                    foreach (var item in itensAdicionar)
                    {
                        db.SalaAudioAnimacao.Add(item);
                    }

                    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 SalaAudioAnimacao anteriormente selecionados na tela
            ViewModel.TipoAnimacaoID1selectList.First(x => x.Value == "selectedValue").Selected = true;
            ViewModel.TipoAudioID1selectList.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.TipoAnimacaoID3selectList.First(x => x.Value == "selectedValue").Selected = true;
            ViewModel.TipoAudioID3selectList.First(x => x.Value == "selectedValue").Selected    = true;

            return(View(ViewModel));
        }
예제 #2
0
        // GET: Salas/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }


            Sala sala = db.Sala.Find(id);

            if (sala == null)
            {
                return(HttpNotFound());
            }

            SalaEditViewModel ViewModel = new SalaEditViewModel
            {
                SalaID      = sala.SalaID,
                Nome        = sala.Nome,
                QtdAssentos = sala.QtdAssentos
            };

            //--configura DropDownListFor para cada opção de Tipo de Áudio e Tipo de Animação encontrado na tabela SalaAudioAnimacao
            var salaAudioAnimacaoDb = sala.SalaAudioAnimacao.Where(s => s.SalaID == sala.SalaID).ToList();

            if (salaAudioAnimacaoDb != null && salaAudioAnimacaoDb.Any())
            {
                for (int i = 0; i < salaAudioAnimacaoDb.Count(); i++)
                {
                    var TipoAnimacaoID      = salaAudioAnimacaoDb[i].TipoAnimacaoID;
                    var TipoAudioID         = salaAudioAnimacaoDb[i].TipoAudioID;
                    var SalaAudioAnimacaoID = salaAudioAnimacaoDb[i].SalaAudioAnimacaoID;
                    switch (i)
                    {
                    case 0:
                        ViewModel.SalaAudioAnimacaoID1      = SalaAudioAnimacaoID;
                        ViewModel.TipoAnimacaoID1           = TipoAnimacaoID;
                        ViewModel.TipoAnimacaoID1selectList = new SelectList(db.TipoAnimacao, "TipoAnimacaoID", "Descricao", TipoAnimacaoID);
                        ViewModel.TipoAudioID1           = TipoAudioID;
                        ViewModel.TipoAudioID1selectList = new SelectList(db.TipoAudio, "TipoAudioID", "Descricao", TipoAudioID);
                        break;

                    case 1:
                        ViewModel.SalaAudioAnimacaoID2      = SalaAudioAnimacaoID;
                        ViewModel.TipoAnimacaoID2           = TipoAnimacaoID;
                        ViewModel.TipoAnimacaoID2selectList = new SelectList(db.TipoAnimacao, "TipoAnimacaoID", "Descricao", TipoAnimacaoID);
                        ViewModel.TipoAudioID2           = TipoAudioID;
                        ViewModel.TipoAudioID2selectList = new SelectList(db.TipoAudio, "TipoAudioID", "Descricao", TipoAudioID);
                        break;

                    case 2:
                        ViewModel.SalaAudioAnimacaoID3      = SalaAudioAnimacaoID;
                        ViewModel.TipoAnimacaoID3           = TipoAnimacaoID;
                        ViewModel.TipoAnimacaoID3selectList = new SelectList(db.TipoAnimacao, "TipoAnimacaoID", "Descricao", TipoAnimacaoID);
                        ViewModel.TipoAudioID3           = TipoAudioID;
                        ViewModel.TipoAudioID3selectList = new SelectList(db.TipoAudio, "TipoAudioID", "Descricao", TipoAudioID);
                        break;

                    default:
                        break;
                    }
                }
            }

            //--Verifica se a sala foi criada somente com 1 tipo de áudio e 1 tipo de animação
            if (!ViewModel.TipoAnimacaoID2.HasValue)
            {
                ViewModel.TipoAnimacaoID2selectList = new SelectList(db.TipoAnimacao, "TipoAnimacaoID", "Descricao");
                ViewModel.TipoAudioID2selectList    = new SelectList(db.TipoAudio, "TipoAudioID", "Descricao");
            }

            if (!ViewModel.TipoAnimacaoID3.HasValue)
            {
                ViewModel.TipoAnimacaoID3selectList = new SelectList(db.TipoAnimacao, "TipoAnimacaoID", "Descricao");
                ViewModel.TipoAudioID3selectList    = new SelectList(db.TipoAudio, "TipoAudioID", "Descricao");
            }

            return(View(ViewModel));
        }