Esempio n. 1
0
        public async Task <IActionResult> Search(DateTime?date, string from, string to, int maxPrice)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            // Keep the search variables
            if (date.HasValue)
            {
                ViewBag.date = date.Value.ToString("yyyy-MM-dd");
            }
            ViewBag.from = from;
            ViewBag.to   = to;
            if (maxPrice > 0)
            {
                ViewBag.maxPrice = maxPrice;
            }

            var dayAfterDate = date?.AddDays(1);

            return(View("Index",
                        await _context.Ticket.Include(ticket => ticket.Flight)
                        .ThenInclude(Flight => Flight.Airplane)
                        .Include(ticket => ticket.Flight)
                        .ThenInclude(Flight => Flight.SourceAirport)
                        .Include(ticket => ticket.Flight)
                        .ThenInclude(Flight => Flight.DestAirport)
                        .Where(ticket =>
                               (!date.HasValue || !dayAfterDate.HasValue || (date <= ticket.Flight.Date && ticket.Flight.Date < dayAfterDate)) &&
                               (string.IsNullOrEmpty(from) || ticket.Flight.SourceAirport.Country.ToLower().Contains(from.ToLower()) || ticket.Flight.SourceAirport.City.ToLower().Contains(from.ToLower())) &&
                               (string.IsNullOrEmpty(to) || ticket.Flight.DestAirport.Country.ToLower().Contains(to.ToLower()) || ticket.Flight.DestAirport.City.ToLower().Contains(to.ToLower())) &&
                               ((maxPrice <= 0) || (maxPrice >= ticket.Price)) &&
                               (ticket.Buyer == null))
                        .OrderBy(ticket => ticket.Flight.Date)
                        .ToListAsync()));
        }
Esempio n. 2
0
        // GET: Tickets/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            if (id == null)
            {
                return(NotFound());
            }

            var ticket = await _context.Ticket
                         .Include(t => t.Buyer)
                         .Include(t => t.Flight)
                         .Include(t => t.Flight.SourceAirport)
                         .FirstOrDefaultAsync(m => m.Id == id);

            if (ticket == null)
            {
                return(NotFound());
            }

            return(View(ticket));
        }
Esempio n. 3
0
        public async Task <IActionResult> Create(int id, int SourceAirportId, int DestAirportId, int AirplaneId, DateTime time)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            if (SourceAirportId != 0 && DestAirportId != 0 && AirplaneId != 0 && time != null)
            {
                Flight flight = new Flight();
                flight.SourceAirport = _context.Airport.SingleOrDefault(a => a.ID.Equals(SourceAirportId));
                flight.DestAirport   = _context.Airport.SingleOrDefault(a => a.ID.Equals(DestAirportId));
                flight.Airplane      = _context.Airplane.SingleOrDefault(a => a.Id.Equals(AirplaneId));
                flight.Id            = id;
                flight.Date          = time;
                _context.Add(flight);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));

                return(View(flight));
            }
            else
            {
                return(View());
            }
        }
Esempio n. 4
0
        public ActionResult Create([Bind("Id,FlightID,Price,LuggageWeight")] Ticket ticket)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            if (ticket.FlightID == 0)
            {
                ViewBag.FlightID     = new SelectList(_context.Flight, "Id", "Id");
                ViewBag.ErrorMessage = "You must choose a flight!";
                return(View("Create"));
            }

            if (ModelState.IsValid)
            {
                _context.Ticket.Add(ticket);
                _context.SaveChanges();

                return(RedirectToAction("Index"));
            }

            return(RedirectToAction("Index"));
        }
Esempio n. 5
0
        // GET: Tickets/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            if (id == null)
            {
                return(NotFound());
            }

            var ticket = await _context.Ticket
                         .Include(t => t.Buyer)
                         .Include(t => t.Flight)
                         .Include(t => t.Flight.SourceAirport)
                         .FirstOrDefaultAsync(m => m.Id == id);

            if (ticket == null)
            {
                return(NotFound());
            }
            ViewData["UserId"]   = new SelectList(_context.User, "ID", "Email", ticket.Buyer.ID);
            ViewData["FlightId"] = new SelectList(_context.Flight, "Id", "DestAirport", ticket.Flight.Id);
            return(View(ticket));
        }
Esempio n. 6
0
        public IActionResult Contact()
        {
            UsersController.CheckIfLoginAndManager(this, _context);
            ViewData["Message"] = "Your contact page.";

            return(View());
        }
Esempio n. 7
0
        public IActionResult About()
        {
            UsersController.CheckIfLoginAndManager(this, _context);
            ViewData["Message"] = "Your application description page.";

            return(View());
        }
Esempio n. 8
0
        // GET: Flights/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            if (id == null)
            {
                return(NotFound());
            }

            var flight = await _context.Flight
                         .Include(f => f.Airplane)
                         .Include(a => a.DestAirport)
                         .Include(s => s.SourceAirport).FirstOrDefaultAsync(m => m.Id == id);

            if (flight == null)
            {
                return(NotFound());
            }

            return(View(flight));
        }
Esempio n. 9
0
        public async Task <IActionResult> Edit(int id, int SourceAirportId, int DestAirportId, int AirplaneId, DateTime time)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            //var flight = await _context.Flight.FindAsync(id);
            var flight = await _context.Flight
                         .Include(f => f.Airplane)
                         .Include(a => a.DestAirport)
                         .Include(s => s.SourceAirport).FirstOrDefaultAsync(m => m.Id == id);


            if (id != flight.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    if (SourceAirportId != 0 && DestAirportId != 0 && AirplaneId != 0 && time != null)
                    {
                        flight.SourceAirport = _context.Airport.SingleOrDefault(a => a.ID.Equals(SourceAirportId));
                        flight.DestAirport   = _context.Airport.SingleOrDefault(a => a.ID.Equals(DestAirportId));
                        flight.Airplane      = _context.Airplane.SingleOrDefault(a => a.Id.Equals(AirplaneId));
                        flight.Id            = id;
                        flight.Date          = time;
                        _context.Update(flight);
                        await _context.SaveChangesAsync();
                    }
                    else
                    {
                        return(View());
                    }
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!FlightExists(flight.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(flight));
        }
Esempio n. 10
0
        // GET: Airports
        public async Task <IActionResult> Index()
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            return(View(await _context.Airport.ToListAsync()));
        }
Esempio n. 11
0
        // GET: Airports/Create
        public IActionResult Create()
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            return(View());
        }
Esempio n. 12
0
        public async Task <IActionResult> Edit(int id, int FlightId, int Price, int LuggageWeight, int UserId)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            var ticket = await _context.Ticket.FindAsync(id);

            if (id != ticket.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    if (FlightId != 0 & UserId != 0 && LuggageWeight != 0 && Price != 0)
                    {
                        ticket.Id            = id;
                        ticket.Price         = Price;
                        ticket.LuggageWeight = LuggageWeight;
                        ticket.Flight        = _context.Flight.SingleOrDefault(a => a.Id.Equals(FlightId));
                        ticket.Buyer         = _context.User.SingleOrDefault(a => a.ID.Equals(UserId));
                        _context.Add(ticket);
                        await _context.SaveChangesAsync();

                        ViewData["UserId"]   = new SelectList(_context.User, "ID", "Email", ticket.Buyer.ID);
                        ViewData["FlightId"] = new SelectList(_context.Flight, "Id", "DestAirport", ticket.Flight.Id);
                    }
                    else
                    {
                        return(View());
                    }
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!TicketExists(ticket.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(ticket));
        }
Esempio n. 13
0
        // GET: Tickets/Create
        public IActionResult Create()
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            ViewBag.FlightID = new SelectList(_context.Flight, "Id", "Id");
            return(View());
        }
Esempio n. 14
0
        // GET: Flights/Create
        public IActionResult Create()
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            ViewData["AirplaneId"]    = new SelectList(_context.Airplane, "Id", "Id");
            ViewData["DestAirport"]   = new SelectList(_context.Airport, "DestAirportId", "DestAirportId");
            ViewData["SourceAirport"] = new SelectList(_context.Airport, "SourceAirportId", "SourceAirportId");
            return(View());
        }
Esempio n. 15
0
        // GET: Flights/Create
        public IActionResult Create()
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            ViewBag.SourceAirportID = new SelectList(_context.Airport, "ID", "Acronyms");
            ViewBag.DestAirportID   = new SelectList(_context.Airport, "ID", "Acronyms");
            ViewBag.AirplaneID      = new SelectList(_context.Airplane, "Id", "Model");
            return(View());
        }
Esempio n. 16
0
        // GET: Flights
        public async Task <IActionResult> Index()
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            var flyMeContext = _context.Flight.Include(f => f.Airplane)
                               .Include(a => a.DestAirport)
                               .Include(s => s.SourceAirport);

            return(View(await flyMeContext.ToListAsync()));
        }
Esempio n. 17
0
        public async Task <IActionResult> SignUp([Bind("ID,UserName,Password,FirstName,LastName,Age,Email")] User user)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ModelState.IsValid)
            {
                user.IsManager = false;
                _context.Add(user);
                await _context.SaveChangesAsync();

                return(RedirectToAction("Index", "Home"));
            }

            return(View());
        }
Esempio n. 18
0
        public async Task <IActionResult> DeleteConfirmed(int id)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            var user = await _context.User.FindAsync(id);

            _context.User.Remove(user);
            await _context.SaveChangesAsync();

            return(RedirectToAction(nameof(Index)));
        }
Esempio n. 19
0
        public async Task <IActionResult> Create([Bind("Id,Capacity,Model")] Airplane airplane)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            if (ModelState.IsValid)
            {
                _context.Add(airplane);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(airplane));
        }
Esempio n. 20
0
        // GET: Orders
        public async Task <IActionResult> Index()
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            int?recommendedDestAirportId = getRecommendedDestinationIdForCurrentUser();

            ViewBag.RecommendedTicket = getRecommendedTicketByDestFlightId(recommendedDestAirportId);

            return(View(await _context.Ticket.Include(ticket => ticket.Flight)
                        .ThenInclude(Flight => Flight.Airplane)
                        .Include(ticket => ticket.Flight)
                        .ThenInclude(Flight => Flight.SourceAirport)
                        .Include(ticket => ticket.Flight)
                        .ThenInclude(Flight => Flight.DestAirport)
                        .Where(ticket => ticket.Buyer == null)
                        .OrderBy(ticket => ticket.Flight.Date)
                        .ToListAsync()));
        }
Esempio n. 21
0
        public async Task <IActionResult> Create([Bind("ID,Country,City,Longitude,Latitude,Acronyms")] Airport airport)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            if (ModelState.IsValid)
            {
                _context.Add(airport);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(airport));
        }
Esempio n. 22
0
        public async Task <IActionResult> Create([Bind("ID,UserName,Password,FirstName,LastName,Age,Email,IsManager")] User user)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            if (ModelState.IsValid)
            {
                _context.Add(user);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(user));
        }
Esempio n. 23
0
        public async Task <IActionResult> UserTicketsView(int userId)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            // Keep the searched variables
            if (TempData["date"] != null)
            {
                ViewBag.date = TempData["date"].ToString();
            }
            if (TempData["from"] != null)
            {
                ViewBag.from = TempData["from"].ToString();
            }
            if (TempData["to"] != null)
            {
                ViewBag.to = TempData["to"].ToString();
            }
            if (TempData["maxPrice"] != null)
            {
                ViewBag.maxPrice = Convert.ToInt32(TempData["maxPrice"]);
            }

            int?currentUserId = HttpContext.Session.GetInt32("UserId");

            if (currentUserId == null)
            {
                return(RedirectToAction(nameof(Index)));
            }

            return(View(await _context.Ticket.Include(ticket => ticket.Flight)
                        .ThenInclude(Flight => Flight.Airplane)
                        .Include(ticket => ticket.Flight)
                        .ThenInclude(Flight => Flight.SourceAirport)
                        .Include(ticket => ticket.Flight)
                        .ThenInclude(Flight => Flight.DestAirport)
                        .Join(_context.User,
                              ticket => ticket.Buyer.ID,
                              user => user.ID,
                              (ticket, user) => ticket)
                        .Where(ticket => (ticket.Buyer.ID == currentUserId))
                        .OrderByDescending(ticket => ticket.Flight.Date)
                        .ToListAsync()));
        }
Esempio n. 24
0
        public ActionResult Logout()
        {
            UsersController.CheckIfLoginAndManager(this, _context);
            int?currentUserId = HttpContext.Session.GetInt32("UserId");

            if (currentUserId != null)
            {
                var currentUser = _context.User.FirstOrDefault(u => u.ID == currentUserId);

                if (currentUser != null)
                {
                    HttpContext.Session.Remove("UserId");
                }
                else
                {
                    return(RedirectToAction("FailedLogout", "Users"));
                }
            }

            return(RedirectToAction("Index", "Home"));
        }
Esempio n. 25
0
        public ActionResult Create([Bind("Id,SourceAirportID,DestAirportID,AirplaneID,Date")] Flight flight)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            if (flight.SourceAirportID == 0 || flight.DestAirportID == 0 || flight.AirplaneID == 0)
            {
                if (flight.SourceAirportID == 0)
                {
                    ViewBag.SourceAirportErrorMessage = "You must choose a source airport!";
                }
                if (flight.DestAirportID == 0)
                {
                    ViewBag.DestAirportErrorMessage = "You must choose a destination airport!";
                }
                if (flight.AirplaneID == 0)
                {
                    ViewBag.AirplaneErrorMessage = "You must choose an airplane!";
                }

                ViewBag.SourceAirportID = new SelectList(_context.Airport, "ID", "Acronyms");
                ViewBag.DestAirportID   = new SelectList(_context.Airport, "ID", "Acronyms");
                ViewBag.AirplaneID      = new SelectList(_context.Airplane, "Id", "Model");
                return(View("Create"));
            }

            if (ModelState.IsValid)
            {
                _context.Flight.Add(flight);
                _context.SaveChanges();

                return(RedirectToAction("Index"));
            }

            return(RedirectToAction("Index"));
        }
Esempio n. 26
0
        // GET: Airports/Edit/5
        public async Task <IActionResult> Edit(int?id)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            if (id == null)
            {
                return(NotFound());
            }

            var airport = await _context.Airport.FindAsync(id);

            if (airport == null)
            {
                return(NotFound());
            }
            return(View(airport));
        }
Esempio n. 27
0
        public async Task <IActionResult> MostSoldFlightsView()
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            // Keep the searched variables
            if (TempData["date"] != null)
            {
                ViewBag.date = TempData["date"].ToString();
            }
            if (TempData["from"] != null)
            {
                ViewBag.from = TempData["from"].ToString();
            }
            if (TempData["to"] != null)
            {
                ViewBag.to = TempData["to"].ToString();
            }
            if (TempData["maxPrice"] != null)
            {
                ViewBag.maxPrice = Convert.ToInt32(TempData["maxPrice"]);
            }

            return(View(await _context.Ticket.Include(ticket => ticket.Flight)
                        .ThenInclude(Flight => Flight.Airplane)
                        .Include(ticket => ticket.Flight)
                        .ThenInclude(Flight => Flight.SourceAirport)
                        .Include(ticket => ticket.Flight)
                        .ThenInclude(Flight => Flight.DestAirport)
                        .Where(ticket => (ticket.Buyer != null))
                        .GroupBy(ticket => ticket.Flight)
                        .Select(o => new SoldFlightsView
            {
                Flight = o.Key,
                TicketsSold = o.Count()
            })
                        .OrderByDescending(o => o.TicketsSold)
                        .ToListAsync()));
        }
Esempio n. 28
0
        public async Task <IActionResult> Edit(int id, [Bind("ID,Country,City,Longitude,Latitude,Acronyms")] Airport airport)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            if (id != airport.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(airport);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!AirportExists(airport.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(airport));
        }
Esempio n. 29
0
        public async Task <IActionResult> Edit(int id, [Bind("ID,UserName,Password,FirstName,LastName,Age,Email,IsManager")] User user)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            if (id != user.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(user);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!UserExists(user.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(user));
        }
Esempio n. 30
0
        // GET: Users/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            UsersController.CheckIfLoginAndManager(this, _context);

            if (ViewBag.IsManager == null || !ViewBag.IsManager)
            {
                return(Unauthorized());
            }

            if (id == null)
            {
                return(NotFound());
            }

            var user = await _context.User
                       .FirstOrDefaultAsync(m => m.ID == id);

            if (user == null)
            {
                return(NotFound());
            }

            return(View(user));
        }