Ejemplo n.º 1
0
        public ActionResult InsertBasic(string Stops, string TripTypeName, string PassengerName, string PassengerLastName, string PassengerEmail)
        {
            _airlinesRepository         = new AirlinesRepository();
            _airportsRepository         = new AirportsRepository();
            _tagsRepository             = new TagsRepository();
            _passengerRepository        = new PassengerRepository();
            _itineraryPingersRepository = new ItineraryPingersRepository();
            new UserTagsRepository();
            _usersRepository            = new UsersRepository();
            _monitoredFlightsRepository = new MonitoredFlightsRepository();
            _itinerarysRepository       = new ItinerarysRepository();
            _flightsRepository          = new FlightsRepository();
            new GatewayAirlineRepository();

            #region Create Itinerary

            var model = new BasicItineraryModel
            {
                //ConnxysTagId = ConnxysTagId,
                DepartureTime      = _listF.First().DepartureDateTime,
                ArrivalTime        = _listF.Last().ArrivalDateTime,
                DepartureName      = _airportsRepository.Get(_listF.First().DepartureLocation).AirportDesignationLetters,
                ArrivalName        = _airportsRepository.Get(_listF.Last().ArrivalLocation).AirportDesignationLetters,
                Stops              = Convert.ToInt32(Stops),
                TripTypeName       = TripTypeName,
                DepartDateTimeUTC  = _listIti.First().DepartDateTimeUTC,
                ArrivalDateTimeUTC = _listIti.Last().ArrivalDateTimeUTC
            };

            object jsonData;
            //Get Passenger Information
            var passenger = _passengerRepository.Get(PassengerEmail);
            passenger.PassengerName     = PassengerName;
            passenger.PassengerLastName = PassengerLastName;
            _passengerRepository.Update(passenger);

            var itinerary = new Itinerary
            {
                //UserID = userInfo.userID,
                UserID               = 0,
                Stops                = model.Stops,
                DepartDateTime       = model.DepartureTime,
                ArrivalDateTime      = model.ArrivalTime,
                AirlineReservationID = model.AirlineReservationId,
                RetStops             = model.RetStops,
                TripType             = (short?)int.Parse(model.TripTypeName),
                From               = model.DepartureName,
                To                 = model.ArrivalName,
                CreationDate       = DateTime.UtcNow,
                Type               = "Real Flight",
                PassengerID        = passenger != null ? passenger.PassengerID : 0,
                DepartDateTimeUTC  = model.DepartDateTimeUTC,
                ArrivalDateTimeUTC = model.ArrivalDateTimeUTC
            };

            try
            {
                //insert the new itinerary
                _itinerarysRepository.Add(itinerary);
                var itineraryId = itinerary.ItineraryID;

                if (itineraryId > 0)
                {
                    var connxysWcfRestService = new ConnxysWCFRestService();
                    var flightsList           = new StringBuilder();
                    var currentFlight         = 0L;
                    var flightInd             = 0;

                    //insert all the flights
                    foreach (var flightItem in _listF)
                    {
                        flightItem.ItineraryID = itineraryId;
                        _flightsRepository.Add(flightItem);

                        if (flightInd == (_listF.Count - 1))
                        {
                            flightsList.Append(flightItem.FlightID);
                        }
                        else
                        {
                            flightsList.Append(flightItem.FlightID).Append("-");
                        }

                        if (flightInd == 0)
                        {
                            currentFlight = flightItem.FlightID;
                        }


                        var monitoredFlights = new MonitoredFlights();
                        {
                            monitoredFlights.FlightId          = flightItem.FlightID;
                            monitoredFlights.FlightNumber      = flightItem.FlightNumber;
                            monitoredFlights.StartDate         = Convert.ToDateTime(flightItem.DepartureDateTime);
                            monitoredFlights.EndDate           = Convert.ToDateTime(flightItem.ArrivalDateTime);
                            monitoredFlights.DepartureLocation = flightItem.DepartureLocation;
                            monitoredFlights.ArrivalLocation   = flightItem.ArrivalLocation;
                            monitoredFlights.Status            = 0;

                            var airline = _airlinesRepository.Get(flightItem.AirlineID);
                            monitoredFlights.AirlineDesignator = airline.AirlineDesignator;
                            monitoredFlights.AirlineName       = airline.AirlineName;
                        }

                        //Insert monitoredflight in the database
                        _monitoredFlightsRepository.Add(monitoredFlights);

                        // Increase Flight index
                        flightInd++;
                    }

                    //insert all the bags
                    foreach (var bagItem in _listB)
                    {
                        var baggageInfo = new BaggageInfo {
                            BagIATANumber     = bagItem.BagIATANumber,
                            ItineraryId       = itineraryId,
                            PingerId          = bagItem.ConnxysTagID,
                            PassengerEmail    = passenger.PassengerEmail,
                            PassengerLastName = passenger.PassengerLastName,
                            PassengerName     = passenger.PassengerName
                        };

                        connxysWcfRestService.UpdateBaggageInfo(baggageInfo);

                        var itineraryPinger = new ItineraryPingers {
                            ItineraryID  = itinerary.ItineraryID,
                            ConnxysTagID = bagItem.ConnxysTagID
                        };

                        _itineraryPingersRepository.Add(itineraryPinger);
                    }
                    _listB = new List <BagTagDesignation>();

                    var creationDate = DateTime.Now.ToUniversalTime();
                    _storeProcedureRepository = new StoreProcedureRepository();
                    _storeProcedureRepository.CreateOutgoingMessage(itinerary.ItineraryID, null, null, null, null, Convert.ToInt64(model.TagId), "Manually", creationDate, false);

                    //Create notification message to sent a message to the passenger abput the itinerary creation
                    var notification = new NotificationMessage
                    {
                        Title   = "Itinerary Information",
                        Message = string.Format
                                      ("Hello {0}!  We’re excited to have you fly with us on flight #: {1} to {2}.  We’ll notify you when your bag is checked in, when it’s been loaded aboard your flight, and where you can reclaim it in {3}.  Enjoy your flight with us!", passenger.PassengerName, _listF[0].FlightNumber.ToString(), model.ArrivalName, model.ArrivalName),
                        TokenId = passenger.TokenId
                    };

                    foreach (var fl in _listF)
                    {
                        var airlineDesignator = _airlinesRepository.Get(fl.AirlineID);

                        var callUpdateFlight = new ConnxysWCFRestService();
                        if (fl.DepartureDateTime == null)
                        {
                            continue;
                        }
                        if (fl.ArrivalDateTime != null)
                        {
                            callUpdateFlight.UpdateSimpleFlight(
                                fl.FlightID.ToString(CultureInfo.InvariantCulture),
                                airlineDesignator.AirlineDesignator,
                                fl.FlightNumber.ToString(CultureInfo.InvariantCulture),
                                fl.DepartureDateTime.Value.ToString(CultureInfo.InvariantCulture),
                                fl.ArrivalDateTime.Value.ToString(CultureInfo.InvariantCulture));
                        }
                    }

                    _listF = new List <Flights>();

                    jsonData = new {
                        status      = "Ok",
                        itineraryId = itinerary.ItineraryID
                    };

                    //Send push notification about itinerary creation to the passenger
                    connxysWcfRestService.SendPushNotification(notification);
                }
                else
                {
                    //throw error the itinerary can not be created
                    _listF = new List <Flights>();
                    PopulateList();
                    jsonData = new
                    {
                        status  = "Failed",
                        message = "Error: The itinerary was not added."
                    };
                    return(Json(jsonData, JsonRequestBehavior.AllowGet));
                }

                return(Json(jsonData, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                //throw error the itinerary can not be created
                _listF   = new List <Flights>();
                jsonData = new
                {
                    status  = "Failed",
                    message = "Error: The itinerary was not added."
                };
                return(Json(jsonData, JsonRequestBehavior.AllowGet));
            }

            #endregion
        }
Ejemplo n.º 2
0
        public ActionResult FlightValidation(string AirlineName, string FlightNumber, string DepartureName, string ArrivalName, string DepartureTime, string ArrivalTime, string Stops, string TripTypeName, string PassengerName, string PassengerLastName, string PassengerEmail)
        {
            var            flightService = new ConnxysWCFRestService();
            var            fsm           = new FlightStatusMessages();
            string         jsonData;
            GoogleTimeZone timezone = new GoogleTimeZone();

            fsm.isValid  = false;
            fsm.messages = new Message();

            _airlinesRepository = new AirlinesRepository();
            _tagsRepository     = new TagsRepository();
            _airportsRepository = new AirportsRepository();

            if (!AirlineName.Equals("") && !FlightNumber.Equals("") && !DepartureName.Equals("") && !ArrivalName.Equals("") &&
                !DepartureTime.Equals("") && !ArrivalTime.Equals("") && !Stops.Equals("") && !TripTypeName.Equals(""))
            {
                #region Complete Info
                var model = new BasicItineraryModel
                {
                    AirlineName       = AirlineName,
                    FlightNumber      = Convert.ToInt32(FlightNumber),
                    DepartureName     = DepartureName,
                    ArrivalName       = ArrivalName,
                    DepartureTime     = Convert.ToDateTime(DepartureTime),
                    ArrivalTime       = Convert.ToDateTime(ArrivalTime),
                    Stops             = Convert.ToInt32(Stops),
                    TripTypeName      = TripTypeName,
                    PassengerName     = PassengerName,
                    PassengerLastName = PassengerLastName,
                    PassengerEmail    = PassengerEmail
                };


                //Get Airport Information: Departure and Arrival airports
                Airports DepartureAirport = new Airports();
                DepartureAirport = _airportsRepository.GetAirportbyName(DepartureName);
                Airports ArrivalAirport = new Airports();
                ArrivalAirport = _airportsRepository.GetAirportbyName(ArrivalName);

                //Get UTC of Departure Airport
                Double UTCDepartureAir = timezone.GetLocalDateTime(DepartureAirport.Latitude, DepartureAirport.Longitude, DateTime.UtcNow);

                //Get UTC of Arrival Airport
                Double UTCArrivalAir = timezone.GetLocalDateTime(ArrivalAirport.Latitude, ArrivalAirport.Longitude, DateTime.UtcNow);

                //Get the difference between UTC and local time to Departure and Arrival airport
                model.DepartDateTimeUTC  = model.DepartureTime.Value.AddHours(UTCDepartureAir);
                model.ArrivalDateTimeUTC = model.ArrivalTime.Value.AddHours(UTCArrivalAir);

                var tempAirline       = _airlinesRepository.GetAirlinebyName(model.AirlineName);
                var result            = flightService.GetInfoFlightStatus(model.FlightNumber, tempAirline.AirlineDesignator, Convert.ToDateTime(model.DepartDateTimeUTC));
                var listResult        = result.flightStatuses.ToList();
                var totalFlightStatus = listResult.Count;


                //Time validation validate the hour and minutes selected by the user
                if (model.DepartureTime.Value >= model.ArrivalTime.Value)
                {
                    fsm.messages.mainMessage = "Arrival Time must be greater than Departure Time";
                    jsonData = new JavaScriptSerializer().Serialize(fsm);
                    return(Json(jsonData, JsonRequestBehavior.AllowGet));
                }

                var utcNow = DateTime.UtcNow;
                if (model.DepartureTime.Value < utcNow || model.ArrivalTime.Value < utcNow)
                {
                    fsm.messages.mainMessage = "Departure Time and Arrival Time must be greater or equal than Current UTC time";
                    jsonData = new JavaScriptSerializer().Serialize(fsm);
                    return(Json(jsonData, JsonRequestBehavior.AllowGet));
                }

                if (totalFlightStatus > 0)
                {
                    /* If is a real flight */
                    foreach (var item in listResult)
                    {
                        fsm.messages = new Message();
                        var matchesElements = true;
                        var flightStatus    = item;

                        var serviceDepartureDate = flightStatus.departureDate.dateUtc.ToUniversalTime(); //DateTimeOffset.Parse(flightStatus.departureDate.dateUtc).UtcDateTime;
                        var serviceArrivalDate   = flightStatus.arrivalDate.dateUtc.ToUniversalTime();   //DateTimeOffset.Parse().UtcDateTime;

                        #region Departure and Arrival Airports match with real flight
                        if (model.DepartureName == flightStatus.departureAirportFsCode && model.ArrivalName == flightStatus.arrivalAirportFsCode)
                        {
                            if (serviceDepartureDate.CompareTo(model.DepartDateTimeUTC) != 0)
                            {
                                fsm.messages.depDateMessage = "The Departure Date doesn't match with real flight.";
                                matchesElements             = false;
                            }
                            if (serviceArrivalDate.CompareTo(model.ArrivalDateTimeUTC) != 0)
                            {
                                fsm.messages.arrDateMessage = "The Arrival Date doesn't match with real flight.";
                                matchesElements             = false;
                            }
                            if (matchesElements)
                            {
                                fsm.isValid = true;
                            }

                            break;
                        }
                        #endregion

                        #region Departure Airport match with real flight
                        if (model.DepartureName == flightStatus.departureAirportFsCode)
                        {
                            if (model.ArrivalName != flightStatus.arrivalAirportFsCode)
                            {
                                fsm.messages.arrivalMessage = "The Arrival doesn't match with real flight.";
                            }
                            if (serviceDepartureDate.CompareTo(model.DepartDateTimeUTC) != 0)
                            {
                                fsm.messages.departureMessage = "The Departure Date doesn't match with real flight.";
                            }
                            if (serviceArrivalDate.CompareTo(model.ArrivalDateTimeUTC) != 0)
                            {
                                fsm.messages.arrDateMessage = "The Arrival Date doesn't match with real flight.";
                            }
                            break;
                        }
                        #endregion

                        #region Arrival Airport match with real flight
                        if (model.ArrivalName == flightStatus.arrivalAirportFsCode)
                        {
                            if (model.DepartureName != flightStatus.departureAirportFsCode)
                            {
                                fsm.messages.departureMessage = "The Departure doesn't match with real flight.";
                            }
                            if (serviceDepartureDate.CompareTo(model.DepartDateTimeUTC) != 0)
                            {
                                fsm.messages.depDateMessage = "The Departure Date doesn't match with real flight.";
                            }
                            if (serviceArrivalDate.CompareTo(model.ArrivalDateTimeUTC) != 0)
                            {
                                fsm.messages.arrDateMessage = "The Arrival Date doesn't match with real flight.";
                            }
                            break;
                        }
                        #endregion

                        #region Departure and Arrival Airports don't match with real flight

                        if (model.DepartureName == flightStatus.departureAirportFsCode || model.ArrivalName == flightStatus.arrivalAirportFsCode)
                        {
                            continue;
                        }

                        fsm.messages.departureMessage = "The Departure doesn't match with real flight.";
                        fsm.messages.arrivalMessage   = "The Arrival doesn't match with real flight.";

                        if (serviceDepartureDate.CompareTo(model.DepartDateTimeUTC) != 0)
                        {
                            fsm.messages.depDateMessage = "The Departure Date doesn't match with real flight.";
                        }
                        if (serviceArrivalDate.CompareTo(model.ArrivalDateTimeUTC) != 0)
                        {
                            fsm.messages.arrDateMessage = "The Arrival Date doesn't match with real flight.";
                        }

                        #endregion
                    }
                }
                else
                {
                    /* If is not a real flight */
                    fsm.isValid = true;
                }

                if (fsm.isValid)
                {
                    // Insert the flight into flight's list
                    InsertFlightIntoList(model);
                }
                else
                {
                    fsm.messages.mainMessage = "Error: Flight number " + model.FlightNumber + " doesn't match the Flight Stats information. Please edit the information below.";
                }

                #endregion
            }
            else
            {
                fsm.messages.mainMessage = "Information required: Please complete all the flight information fields.";
            }

            jsonData = new JavaScriptSerializer().Serialize(fsm);
            return(Json(jsonData, JsonRequestBehavior.AllowGet));
        }