public IActionResult Post([FromBody] Apartamento apartamento)
        {
            try
            {
                apartamento.Validate();
                if (!apartamento.EhValido)
                {
                    return(BadRequest(apartamento.ObterMensagensValidacao()));
                }
                if (apartamento.Id > 0)
                {
                    _apartamentoRepositorio.Atualizar(apartamento);
                }
                else
                {
                    _apartamentoRepositorio.Adicionar(apartamento);
                }

                return(Created("api/apartamento", apartamento));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.ToString()));
            }
        }
Beispiel #2
0
        public async Task <IActionResult> Edit(int id, [Bind("ApartamentoId,Numero,Andar,Foto,MoradorId,ProprietarioId")] Apartamento apartamento, IFormFile foto)
        {
            if (id != apartamento.ApartamentoId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                if (foto != null)
                {
                    string diretorio = Path.Combine(_webHostEnvironment.WebRootPath, "Imagens");
                    string nomeFoto  = Guid.NewGuid().ToString() + foto.FileName;

                    using (FileStream fileStream = new FileStream(Path.Combine(diretorio, nomeFoto), FileMode.Create))
                    {
                        await foto.CopyToAsync(fileStream);

                        apartamento.Foto = "~/Imagens/" + nomeFoto;
                        // quando escolho nova foto, a anterior é substituida
                        System.IO.File.Delete(TempData["Foto"].ToString().Replace("~", "wwwroot"));
                    }
                }
                else
                {
                    // quando o user nao escolhe nada a foto atual é preservada
                    apartamento.Foto = TempData["Foto"].ToString();
                }

                await _apartamentoRepositorio.Atualizar(apartamento); // atualizar apartamento

                TempData["Atualizacao"] = $"Apartamento número {apartamento.Numero} atualizado com sucesso";
                return(RedirectToAction(nameof(Index)));
            }
            // caso os dados nao sejam validos , retorna o user para a view
            ViewData["MoradorId"]      = new SelectList(await _utilizadorRepositorio.ObterTodos(), "Id", "UserName", apartamento.MoradorId);
            ViewData["ProprietarioId"] = new SelectList(await _utilizadorRepositorio.ObterTodos(), "Id", "UserName", apartamento.ProprietarioId);
            return(View(apartamento));
        }
        public async Task <IActionResult> Edit(int id, [Bind("ApartamentoId,Numero,Andar,Foto,MoradorId,ProprietarioId")] Apartamento apartamento, IFormFile foto)
        {
            if (id != apartamento.ApartamentoId)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                if (foto != null)
                {
                    var diretorio = Path.Combine(WebHostEnvironment.WebRootPath, "Imagens");
                    var nomeFoto  = Guid.NewGuid().ToString() + foto.FileName;

                    using (var fileStream = new FileStream(Path.Combine(diretorio, nomeFoto), FileMode.Create))
                    {
                        await foto.CopyToAsync(fileStream);

                        apartamento.Foto = "~/Imagens/" + nomeFoto;
                        System.IO.File.Delete(TempData["Foto"].ToString().Replace("~", "wwwroot"));
                    }
                }
                else
                {
                    apartamento.Foto = TempData["Foto"].ToString();
                }

                await ApartamentoRepository.Atualizar(apartamento);

                TempData["Atualizacao"] = $"Apartamento número {apartamento.Numero} atualizado com sucesso";

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["MoradorId"]      = new SelectList(await UsuarioRepositorio.PegarTodos(), "Id", "UserName", apartamento.MoradorId);
            ViewData["ProprietarioId"] = new SelectList(await UsuarioRepositorio.PegarTodos(), "Id", "UserName", apartamento.ProprietarioId);

            return(View(apartamento));
        }