public async Task <IActionResult> Create([Bind("ApartamentoId,Numero,Andar,Foto,MoradorId,ProprietarioId")] Apartamento apartamento, IFormFile foto) { 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; } } await _apartamentoRepositorio.Inserir(apartamento); TempData["NovoRegistro"] = $"Apartamento número {apartamento.Numero} registrado 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)); }
public async Task <IActionResult> Create([Bind("ApartamentoId,Numero,Andar,Foto,MoradorId,ProprietarioId")] Apartamento apartamento, IFormFile foto) { if (ModelState.IsValid) { // verificar se tem alguma foto selecionada if (foto != null) { string diretorio = Path.Combine(_webHostEnvironment.WebRootPath, "Imagens"); ///wwwwroot, pasta Imagens string nomeFoto = Guid.NewGuid().ToString() + foto.FileName; // FileStream para gravar a foto no diretorio com o nome atribuido using (FileStream fileStream = new FileStream(Path.Combine(diretorio, nomeFoto), FileMode.Create)) { await foto.CopyToAsync(fileStream); // inserir foto no diretorio apartamento.Foto = "~/Imagens/" + nomeFoto; } } await _apartamentoRepositorio.Inserir(apartamento); TempData["NovoRegisto"] = $"Apartamento número {apartamento.Numero} registado com sucesso"; return(RedirectToAction(nameof(Index))); } // caso os dados sejam invalidos ViewData["MoradorId"] = new SelectList(await _utilizadorRepositorio.ObterTodos(), "Id", "UserName", apartamento.MoradorId); // lista com o valor do Id do controler e o nome do utilizador ViewData["ProprietarioId"] = new SelectList(await _utilizadorRepositorio.ObterTodos(), "Id", "UserName", apartamento.ProprietarioId); // lista com o valor do Id do controler e o nome do utilizador return(View(apartamento)); }