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);
            }
        }
Beispiel #2
0
        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);
            }
        }