コード例 #1
0
        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());
        }
コード例 #2
0
        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));
            }
        }