Exemplo n.º 1
0
        public async Task<ActionResult> AcceptFlightInvite(int id)
        {
            FlightInvitation invite = dbContext.FlightInvitations.Include(fi => fi.Reservation).FirstOrDefault(fi => fi.Id == id);

            if (invite != null)
            {
                invite.Reservation.Confirmed = true;

                dbContext.Entry(invite).State = EntityState.Deleted;
                await dbContext.SaveChangesAsync();
            }
            else
            {
                return NotFound();
            }

            return Ok();
        }
Exemplo n.º 2
0
        public async Task<ActionResult> DeclineFlightInvite(int id)
        {
            FlightInvitation invite = dbContext.FlightInvitations.Include(fi => fi.Reservation).ThenInclude(r => r.Flight).FirstOrDefault(fi => fi.Id == id);

            if (invite != null)
            {
                FreeReservedSeats(invite.Reservation);

                dbContext.Entry(invite).State = EntityState.Deleted;
                await dbContext.SaveChangesAsync();
            }
            else
            {
                return NotFound();
            }

            return Ok();
        }
Exemplo n.º 3
0
        public async Task<ActionResult> CreateReservation(NewReservationParams data)
        {
            Flight flight = dbContext.Flights.Find(data.FlightId);

            string username = User.Claims.First(c => c.Type == "UserName").Value;
            User user = userManager.FindByNameAsync(username).Result;

            if (flight != null)
            {
                Reservation personalReservation = new Reservation() { Flight = flight, User = user, Seats = "", Confirmed = true };

                for (int i = 0; i < data.Passengers.Length; i++)
                {
                    string passenger = data.Passengers[i];

                    if (passenger.Equals("Self") || passenger.Equals("UU"))
                    {
                        personalReservation.Seats += data.Seats[i] + ",";
                    }
                    else
                    {
                        User friend = userManager.FindByNameAsync(passenger).Result;

                        Reservation friendReservation = new Reservation()
                        {
                            Flight = flight,
                            User = friend,
                            Seats = data.Seats[i].ToString(),
                            Confirmed = false
                        };

                        dbContext.Reservations.Add(friendReservation);

                        // Add invitation
                        FlightInvitation invitation = new FlightInvitation()
                        {
                            From = user,
                            To = friend,
                            Reservation = friendReservation
                        };

                        dbContext.FlightInvitations.Add(invitation);
                    }

                    // Reserve seat on flight
                    char[] seatsString = flight.Seats.ToCharArray();
                    seatsString[data.Seats[i] - 1] = '1';
                    flight.Seats = new string(seatsString);
                }

                // Remove last comma
                string seats = personalReservation.Seats;
                personalReservation.Seats = seats.Remove(seats.Length - 1);

                dbContext.Reservations.Add(personalReservation);
                await dbContext.SaveChangesAsync();
            }
            else
            {
                return BadRequest();
            }

            return Ok();
        }