public async Task <IActionResult> PutFlight(int id, TOFlight flight) { string role = User.Claims.First(c => c.Type == "Roles").Value; if (role != "aeroAdmin" && role != "aeroAdminNew") { return(BadRequest("You are not authorised to do this action")); } if (id != flight.FlightId) { return(BadRequest()); } AirlineMicroservice.Models.Flight tempFlight = await _context.Flights.FindAsync(flight.FlightId); var success = false; if (tempFlight.Version != flight.Version) { return(Ok(new { success })); } tempFlight.Arrival = DateTime.Parse(flight.Arrival); tempFlight.Departure = DateTime.Parse(flight.Departure); tempFlight.Version++; _context.Entry(tempFlight).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!FlightExists(id)) { return(NotFound()); } else { throw; } } success = true; return(Ok(new { success })); }
public async Task <ActionResult <TOFlight> > DeleteFlight(int id, [FromQuery] int version) { string role = User.Claims.First(c => c.Type == "Roles").Value; if (role != "aeroAdmin" && role != "aeroAdminNew") { return(BadRequest("You are not authorised to do this action")); } var flight = await _context.Flights.Include(flight => flight.Seats).FirstOrDefaultAsync(flight => flight.FlightId == id); if (flight == null) { return(NotFound()); } bool success = false; if (flight.Version != version) { return(Ok(new { success })); } foreach (Seat seat in flight.Seats) { var fastTicket = await _context.FastTickets.FindAsync(seat.SeatId); if (fastTicket != null) { _context.FastTickets.Remove(fastTicket); } } TOFlight toFlight = new TOFlight(flight); _context.Flights.Remove(flight); await _context.SaveChangesAsync(); success = true; return(Ok(new { success })); }
public async Task <ActionResult <FlightReservation> > PostFlightReservation(TOFlightReservation flightReservation, int points) { TOFlight tempFlight = new TOFlight(); string userId = User.Claims.First(c => c.Type == "UserID").Value; string username = User.Claims.First(c => c.Type == "Username").Value; Common.Models.AppUser inviter = null; using (HttpClient client = new HttpClient()) { var httpRequest = new HttpRequestMessage(HttpMethod.Get, "http://usermicroservice/api/AppUsers/GetUser/" + username); HttpResponseMessage message = await client.SendAsync(httpRequest); var temp = await message.Content.ReadAsStringAsync(); inviter = JsonSerializer.Deserialize <Common.Models.AppUser>(temp); } Common.Models.VehicleForEmail vehicle = null; if (flightReservation.VehicleReservationId != 0) { using (HttpClient client = new HttpClient()) { var httpRequest = new HttpRequestMessage(HttpMethod.Get, "http://rentacarmicroservice/api/VehicleReservations/Vehicle/" + flightReservation.VehicleReservationId); HttpResponseMessage message = await client.SendAsync(httpRequest); var temp = await message.Content.ReadAsStringAsync(); vehicle = JsonSerializer.Deserialize <Common.Models.VehicleForEmail>(temp); } } FlightReservation tempFlightReservation = new FlightReservation() { ReservationId = 0, TimeOfCreation = DateTime.Now, Creator = ((Common.Models.AppUser)inviter).UserName, VehicleReservationId = flightReservation.VehicleReservationId, FinalPrice = flightReservation.FinalPrice }; flightReservation.FlightReservationDetails.ForEach(flightReservation => { ((Common.Models.AppUser)inviter).NumberOfPoint += (int)Math.Round(flightReservation.Flight.Distance); }); ((Common.Models.AppUser)inviter).NumberOfPoint -= points; using (var client = new HttpClient()) { Common.Models.PointsClass p = new Common.Models.PointsClass { Id = inviter.Id, Points = inviter.NumberOfPoint }; client.BaseAddress = new Uri("http://usermicroservice/"); await client.PutAsJsonAsync("api/AppUsers/UpdatePoints", p); } _context.FlightReservations.Add(tempFlightReservation); await _context.SaveChangesAsync(); foreach (TOFlightReservationDetail tOFlightReservationDetail in flightReservation.FlightReservationDetails) { tempFlight = tOFlightReservationDetail.Flight; FlightReservationDetail flightReservationDetail = new FlightReservationDetail() { FlightId = tOFlightReservationDetail.Flight.FlightId, FlightReservation = tempFlightReservation, FlightReservationDetailId = 0, AirlineName = tOFlightReservationDetail.Flight.AirlineName }; _context.Entry(flightReservationDetail).State = EntityState.Added; await _context.SaveChangesAsync(); foreach (TOPassengerSeat tOPassengerSeat in tOFlightReservationDetail.PassengerSeats) { PassengerSeat passengerSeat = new PassengerSeat() { SeatId = tOPassengerSeat.Seat.SeatId, Surname = tOPassengerSeat.Surname, PassengerSeatId = 0, Name = tOPassengerSeat.Name, Passport = tOPassengerSeat.Passport, Username = tOPassengerSeat.Username, FlightReservationDetail = flightReservationDetail, AirlineScored = false, FlightScored = false, }; if (passengerSeat.Username == "" || passengerSeat.Username == ((Common.Models.AppUser)inviter).UserName) { passengerSeat.Accepted = true; } else { passengerSeat.Accepted = false; } _context.Entry(passengerSeat).State = EntityState.Added; if (passengerSeat.Username != null && passengerSeat.Username != "" && passengerSeat.Username != ((Common.Models.AppUser)inviter).UserName) { Common.Models.AppUser user = null; using (HttpClient client = new HttpClient()) { var httpRequest = new HttpRequestMessage(HttpMethod.Get, "http://usermicroservice/api/AppUsers/GetUser/" + passengerSeat.Username); HttpResponseMessage message = await client.SendAsync(httpRequest); var temp = await message.Content.ReadAsStringAsync(); user = JsonSerializer.Deserialize <Common.Models.AppUser>(temp); } MailingService.SendEMailInvite(((Common.Models.AppUser)inviter), (Common.Models.AppUser)user, flightReservation, vehicle, tempFlightReservation.ReservationId); } Seat seat = await _context.Seats.FindAsync(passengerSeat.SeatId); seat.Occupied = true; _context.Entry(seat).State = EntityState.Modified; await _context.SaveChangesAsync(); } await _context.SaveChangesAsync(); } MailingService.SendEMailReceipt(((Common.Models.AppUser)inviter), flightReservation, vehicle); return(Ok()); }
public async Task <ActionResult <FlightReservation> > PostFlightReservation(TOFlightReservation flightReservation, int points) { TOFlight tempFlight = new TOFlight(); string userId = User.Claims.First(c => c.Type == "UserID").Value; var inviter = await _userManager.FindByIdAsync(userId); VehicleReservation vehicleReservation = null; Vehicle vehicle = null; if (flightReservation.VehicleReservationId != 0) { vehicleReservation = await _context.VehicleReservation.FindAsync(flightReservation.VehicleReservationId); vehicle = await _context.Vehicles.Include(vehicle => vehicle.RentACar).FirstOrDefaultAsync(vehicle => vehicle.VehicleId == vehicleReservation.VehicleId); } FlightReservation tempFlightReservation = new FlightReservation() { ReservationId = 0, TimeOfCreation = DateTime.Now, Creator = inviter.UserName, VehicleReservationId = flightReservation.VehicleReservationId, FinalPrice = flightReservation.FinalPrice }; flightReservation.FlightReservationDetails.ForEach(flightReservation => { inviter.NumberOfPoint += (int)Math.Round(flightReservation.Flight.Distance); }); inviter.NumberOfPoint -= points; await _userManager.UpdateAsync(inviter); _context.FlightReservations.Add(tempFlightReservation); await _context.SaveChangesAsync(); foreach (TOFlightReservationDetail tOFlightReservationDetail in flightReservation.FlightReservationDetails) { tempFlight = tOFlightReservationDetail.Flight; FlightReservationDetail flightReservationDetail = new FlightReservationDetail() { FlightId = tOFlightReservationDetail.Flight.FlightId, FlightReservation = tempFlightReservation, FlightReservationDetailId = 0, AirlineName = tOFlightReservationDetail.Flight.AirlineName }; _context.Entry(flightReservationDetail).State = EntityState.Added; await _context.SaveChangesAsync(); foreach (TOPassengerSeat tOPassengerSeat in tOFlightReservationDetail.PassengerSeats) { PassengerSeat passengerSeat = new PassengerSeat() { SeatId = tOPassengerSeat.Seat.SeatId, Surname = tOPassengerSeat.Surname, PassengerSeatId = 0, Name = tOPassengerSeat.Name, Passport = tOPassengerSeat.Passport, Username = tOPassengerSeat.Username, FlightReservationDetail = flightReservationDetail, AirlineScored = false, FlightScored = false, }; if (passengerSeat.Username == "" || passengerSeat.Username == inviter.UserName) { passengerSeat.Accepted = true; } else { passengerSeat.Accepted = false; } _context.Entry(passengerSeat).State = EntityState.Added; if (passengerSeat.Username != null && passengerSeat.Username != "" && passengerSeat.Username != inviter.UserName) { var user = await _userManager.FindByNameAsync(passengerSeat.Username); flightReservation.FlightReservationDetails.ForEach(flightReservation => { user.NumberOfPoint += (int)Math.Round(flightReservation.Flight.Distance); }); await _userManager.UpdateAsync(user); MailingService.SendEMailInvite(inviter, user, flightReservation, vehicle, tempFlightReservation.ReservationId); } Seat seat = await _context.Seats.FindAsync(passengerSeat.SeatId); seat.Occupied = true; _context.Entry(seat).State = EntityState.Modified; await _context.SaveChangesAsync(); } await _context.SaveChangesAsync(); } MailingService.SendEMailReceipt(inviter, flightReservation, vehicle); return(Ok()); }