// GET: Galerias/Edit/5 public async Task <IActionResult> Edit(string id, string returnUrl) { if (String.IsNullOrEmpty(id)) { return(NotFound()); } var galeria = await _context.Galerias.FindAsync(id); if (galeria == null) { return(NotFound()); } // Todos os serviços numa SelectList SelectList servicos = new SelectList(_context.Servicos, "ID", "Nome", galeria.ServicoFK); var response = new GaleriasCreateViewModel { Galeria = galeria, Servicos = servicos }; ViewData["ReturnUrl"] = returnUrl; return(View(response)); }
// GET: Galerias/Create public async Task <IActionResult> Create(string serv) { Servico servico = null; if (!String.IsNullOrEmpty(serv)) { servico = await _context.Servicos.FindAsync(serv); } // Todos os serviços numa SelectList SelectList servicos = new SelectList(_context.Servicos, "ID", "Nome", servico?.ID); var response = new GaleriasCreateViewModel { Galeria = new Galeria(), Servicos = servicos }; ViewData["serv"] = serv; return(View(response)); }
public async Task <IActionResult> Edit(string id, [Bind("ID,Nome,DataDeCriacao")] Galeria galeria, string servicoID, string metadados) { string feedback = "Galeria editada com sucesso."; if (!id.Equals(galeria.ID)) { return(NotFound()); } #region Avaliar integridade do servicoID selecionado // Certificar que é selecionado um servico if (String.IsNullOrEmpty(servicoID)) { ModelState.AddModelError("Galeria.ServicoFK", "É necessário escolher um serviço."); } else { if (await _context.Servicos.FindAsync(servicoID) == null) // Certificar que o serviço existe { ModelState.AddModelError("Galeria.ServicoFK", "O serviço selecionado não existe."); } } #endregion if (ModelState.IsValid) { #region Associar os metadados à galeria try { var removeList = await _context.Galerias_Metadados.Where(gm => gm.GaleriaFK.Equals(galeria.ID)).ToArrayAsync(); _context.RemoveRange(removeList); if (!String.IsNullOrEmpty(metadados)) // Se houver metadados para relacionar { var addList = metadados.Split(",").Select(m => new Galeria_Metadado { GaleriaFK = galeria.ID, MetadadoFK = Int32.Parse(m) }).ToArray(); await _context.AddRangeAsync(addList); } } catch (Exception e) { await _logger.LogError( descricao : "Erro ao associar metadados à galeria.", classe : "GaleriasController", metodo : "Edit", erro : e.Message ); feedback = "Ocorreu um erro ao associar os metadados à galeria."; } #endregion #region Update da BD try { galeria.ServicoFK = servicoID; // Associar o serviço à galeria _context.Update(galeria); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException e) { if (!GaleriaExists(galeria.ID)) { return(NotFound()); } else { await _logger.LogError( descricao : "Erro ao guardar informação na base de dados.", classe : "GaleriasController", metodo : "Edit", erro : e.Message ); feedback = "Ocorreu um erro ao editar a galeria."; } } #endregion TempData["Feedback"] = feedback; return(RedirectToAction(nameof(Details), new { id = galeria.ID })); } // Todos os serviços numa SelectList SelectList servicos = new SelectList(_context.Servicos, "ID", "Nome", galeria.ServicoFK); var response = new GaleriasCreateViewModel { Galeria = galeria, Servicos = servicos }; return(View(response)); }