public async Task <ViewResult> Anuncio(int id) { var anuncioAtual = _context.Anuncios.Include(p => p.Utilizador).FirstOrDefault(a => a.Id_anuncio == id); var anuncios = await _context.Anuncios.Where(a => a.Utilizador == anuncioAtual.Utilizador).ToListAsync(); var anunciosModel = new List <AnunciosModel>(); if (anuncioAtual != null && anuncioAtual.Ativo == true) { foreach (var anuncio in anuncios) { if (anuncio.Id_anuncio != id) { anunciosModel.Add(new AnunciosModel() { Título = anuncio.Título, Descricao = anuncio.Descricao, Categoria = anuncio.Categoria, Preco_dia = anuncio.Preco_dia, UrlImagem = anuncio.UrlImagem, Localizacao = anuncio.Localizacao, Ativo = anuncio.Ativo, Data_publicacao = anuncio.Data_publicacao, Id_anuncio = anuncio.Id_anuncio }); } } UtilizadorModel utilizador = new UtilizadorModel() { AnunciosModel = anunciosModel, Id_utilizador = anuncioAtual.Utilizador.Id_utilizador, Descricao = anuncioAtual.Utilizador.Descricao, Nome = anuncioAtual.Utilizador.Nome, UrlImagemPerfil = anuncioAtual.Utilizador.UrlImagemPerfil, Email = anuncioAtual.Utilizador.Email }; var DetalhesAnuncio = new ReservasAnuncios() { Utilizador = utilizador, Id_anuncio = anuncioAtual.Id_anuncio, Título = anuncioAtual.Título, Descricao = anuncioAtual.Descricao, Categoria = anuncioAtual.Categoria, Preco_dia = anuncioAtual.Preco_dia, Localizacao = anuncioAtual.Localizacao, UrlImagem = anuncioAtual.UrlImagem, Ativo = anuncioAtual.Ativo, Data_inicio = DateTime.Now, Data_fim = DateTime.Now }; return(View(DetalhesAnuncio)); } return(View()); }
public async Task <IActionResult> Reservar([Bind("Id_anuncio, Id_reserva, Utilizador.Id_utilizador, Data_inicio, Data_fim")] ReservasAnuncios reservasAnuncios, string Preco) { var claimsidentity = User.Identity as ClaimsIdentity; if (User.Identity.IsAuthenticated) { if (!_context.Reservas.Where(a => a.Utilizador.Email == claimsidentity.Name && a.Anuncio.Id_anuncio == reservasAnuncios.Id_anuncio && a.Data_inicio == reservasAnuncios.Data_inicio && a.Data_fim == reservasAnuncios.Data_fim).Any()) { var claimsIdentity = User.Identity as ClaimsIdentity; var utilizador = _context.Utilizador.FirstOrDefault(a => a.Email == User.Identity.Name); var anuncio = _context.Anuncios.FirstOrDefault(a => a.Id_anuncio == reservasAnuncios.Id_anuncio); ViewBag.mensagem = ""; double Total = double.Parse(Preco, CultureInfo.InvariantCulture.NumberFormat); if (reservasAnuncios.Data_fim > reservasAnuncios.Data_inicio) { Reservas novaReserva = new Reservas { Anuncio = anuncio, Utilizador = utilizador, Data_inicio = reservasAnuncios.Data_inicio, Data_fim = reservasAnuncios.Data_fim, Preco = Total, Cancelado = false, Aceite = false }; await _context.Reservas.AddAsync(novaReserva); await _context.SaveChangesAsync(); return(RedirectToAction("Anuncio", new { id = reservasAnuncios.Id_anuncio })); } else { ViewBag.mensagem = "Data inválida."; return(RedirectToAction("Anuncio", new { id = reservasAnuncios.Id_anuncio })); } } else { ViewBag.mensagem = "Já tens uma reserva para esta data"; return(RedirectToAction("Anuncio", new { id = reservasAnuncios.Id_anuncio })); } } else { string url = "../Identity/Account/Login"; return(Redirect(url)); } }