Exemple #1
0
        // 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));
        }
Exemple #2
0
        // 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));
        }
Exemple #3
0
        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));
        }