public ServiceOperationResult <EmptyLeg> Create(Guid aircraftId, byte direction, int departureAirportId, int arrivalAirportId, DateTime departureDate, DateTime?returnDate, decimal exclusiveCost) { using (FlyJetsDbContext dbContext = new FlyJetsDbContext(_config)) { ServiceOperationResult <EmptyLeg> result = new ServiceOperationResult <EmptyLeg>(); result.IsSuccessfull = true; var departure = _locationService.GetLocation(departureAirportId); var arrival = _locationService.GetLocation(arrivalAirportId); var distance = Utilities.GetDistance(departure.Lat.Value, departure.Lng.Value, arrival.Lat.Value, arrival.Lng.Value); var aircraftSpeed = (from aircraft in dbContext.Aircrafts where aircraft.Id == aircraftId select aircraft.Speed) .First(); var duration = FlightService.CalculateFlightDuration(distance, aircraftSpeed); EmptyLeg emptyLeg = new EmptyLeg() { Id = Guid.NewGuid(), AircraftId = aircraftId, Direction = direction, DepartureAirportId = departureAirportId, ArrivalAirportId = arrivalAirportId, DepartureDate = departureDate, ReturnDate = returnDate, ExclusiveCost = exclusiveCost, Distance = distance, Duration = duration, CreatedById = _accountId, CreatedOn = DateTime.UtcNow, Available = true }; dbContext.EmptyLegs.Add(emptyLeg); dbContext.SaveChanges(); result.Item = emptyLeg; return(result); } }
public Flight CreateCharterAircraftFlight(Guid aircraftId, int departureId, DateTime departureDate, TimeSpan?departureTime, int arrivalId, DateTime arrivalDate, TimeSpan?arrivalTime, byte order, short numberOfBookedSeats, byte flightType) { using (FlyJetsDbContext dbContext = new FlyJetsDbContext(_config)) { var aircraft = dbContext.Aircrafts .First(a => a.Id == aircraftId); var departure = _locationService.GetLocation(departureId); var arrival = _locationService.GetLocation(arrivalId); var distance = Utilities.GetDistance(departure.Lat.Value, departure.Lng.Value, arrival.Lat.Value, arrival.Lng.Value); var duration = CalculateFlightDuration(distance, aircraft.Speed); var newFlight = new Flight() { Id = Guid.NewGuid(), Number = aircraft.TailNumber, AircraftId = aircraft.Id, DepartureId = departureId, DepartureDate = departureDate, DepartureTime = departureTime, ArrivalId = arrivalId, ArrivalDate = arrivalDate, ArrivalTime = arrivalTime, Duration = duration, Distance = distance, NumberOfSeats = aircraft.MaxPassengers, NumberOfSeatsAvailable = (short)(aircraft.MaxPassengers - numberOfBookedSeats), Order = order, FlightType = flightType, Status = (byte)BookingFlightStatuses.OnSchedule, CreatedOn = DateTime.UtcNow, CreatedById = _accountId }; dbContext.Flights.Add(newFlight); dbContext.SaveChanges(); return(newFlight); } }