Beispiel #1
0
        //Call E-Checkin Function After User Confirmation
        public async Task ECheckinAfterConfirm(IDialogContext context, IAwaitable <bool> result)
        {
            var res = await result;

            if (res)
            {
                var message     = context.MakeMessage();
                var attachments = new List <Attachment>();
                try
                {
                    IEnumerable <FlightOptions> flightOptionsdata = null;
                    FlightOptions flightOptions = null;
                    using (var httpClient = new HttpClient())
                    {
                        var response = await httpClient.GetAsync(ConfigurationManager.AppSettings[Constants.KeyApi] + "/echeckin/" + this.PNRCode);

                        object DeserializeResult = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
                        flightOptionsdata = JsonConvert.DeserializeObject <IEnumerable <FlightOptions> >(DeserializeResult.ToString());
                    }
                    foreach (FlightOptions flightobj in flightOptionsdata)
                    {
                        flightOptions = flightobj;
                    }

                    if (flightOptions != null)
                    {
                        if (flightOptions.Flag)
                        {
                            await context.PostAsync(Locale.NewECheckin + " " + Locale.ShowBoarding);
                        }
                        else
                        {
                            await context.PostAsync(Locale.OldECheckin + " " + Locale.ShowBoarding);
                        }

                        var image64    = Convert.ToBase64String(flightOptions.BoardingPass, Base64FormattingOptions.InsertLineBreaks);
                        var attachment = new Attachment();
                        attachment = new Attachment()
                        {
                            ContentType = Constants.PNGType,
                            ContentUrl  = $"data:image/png;base64,{image64}",
                            Name        = "BoardingPass.png"
                        };
                        attachments.Add(attachment);

                        message.Attachments = attachments;
                        await context.PostAsync(message);
                    }
                    else
                    {
                        await context.PostAsync(Locale.ECheckinErrorMsg);
                    }
                }
                catch (Exception ex)
                {
                    await context.PostAsync($"Failed with message: {ex.Message}");
                }
            }
            context.Wait(OnComplete);
        }
Beispiel #2
0
        private static string FlightTemplate(FlightOptions flightOptions)
        {
            var sb = new StringBuilder();

            sb.AppendLine(Constants.EmptyLine);
            sb.AppendLine(string.Format(Locale.Options_Option_Bold, flightOptions.Id));
            sb.AppendLine(Constants.EmptyLine);

            sb.AppendLine(Locale.Options_Departure);
            sb.AppendLine(flightOptions.Departure);
            sb.AppendLine(Constants.EmptyLine);

            sb.AppendLine(Locale.Options_Arrival);
            sb.AppendLine(flightOptions.Arrival);
            sb.AppendLine(Constants.EmptyLine);

            var stops = Locale.Options_Nonstop;

            if (flightOptions.Stops > 0)
            {
                stops = $"{flightOptions.Stops} {Locale.Stop}";
            }

            if (flightOptions.Stops > 1)
            {
                stops = $"{stops}s";
            }

            sb.AppendLine(stops);

            return(sb.ToString());
        }
Beispiel #3
0
        //Function to Display Map
        public async Task ShowMapOption(IDialogContext context, IAwaitable <IMessageActivity> result)
        {
            var res     = await result;
            var PNRCode = res.Text;
            var message = context.MakeMessage();

            if (res.Text != "")
            {
                var attachments = new List <Attachment>();
                try
                {
                    IEnumerable <FlightOptions> flightOptionsdata = null;
                    FlightOptions flightOptions = null;
                    using (var httpClient = new HttpClient())
                    {
                        var response = await httpClient.GetAsync(ConfigurationManager.AppSettings[Constants.KeyApi] + "/terminalmap/" + PNRCode);

                        object DeserializeResult = JsonConvert.DeserializeObject(await response.Content.ReadAsStringAsync());
                        flightOptionsdata = JsonConvert.DeserializeObject <IEnumerable <FlightOptions> >(DeserializeResult.ToString());
                    }

                    foreach (FlightOptions flightobj in flightOptionsdata)
                    {
                        flightOptions = flightobj;
                    }
                    if (flightOptions != null)
                    {
                        await context.PostAsync(Locale.ByeImage);

                        var image64    = Convert.ToBase64String(flightOptions.Map, Base64FormattingOptions.InsertLineBreaks);
                        var attachment = new Attachment();
                        attachment = new Attachment()
                        {
                            ContentType = Constants.PNGType,
                            ContentUrl  = $"data:image/png;base64,{image64}",
                            Name        = "TerminalMap.png"
                        };
                        attachments.Add(attachment);
                        message.Attachments = attachments;
                        await context.PostAsync(message);
                    }
                    else
                    {
                        await context.PostAsync(Locale.NoTerminalMapFound);
                    }
                }
                catch (Exception ex)
                {
                    await context.PostAsync($"Failed with message: {ex.Message}");
                }
            }
            else
            {
                await context.PostAsync(Locale.ByeNoImage);
            }

            context.Wait(OnComplete);
        }
Beispiel #4
0
        //Function call After user click on any of Alternative Flight
        private async Task OnCompleteOptionsForm(IDialogContext context, IAwaitable <FlightOptionForm> result)
        {
            var messagedata = await result;

            this.flightOptions     = new FlightOptions();
            this.flightOptions.Map = messagedata.Map;
            this.flightOptions.Id  = messagedata.FlightID;

            // Confirm if needs a map
            PromptDialog.Confirm(context, ShowMapIfNeeded, Locale.ConfirmMap);
        }
Beispiel #5
0
        private static string ConfirmTemplate(FlightOptions flightOptions)
        {
            var sb = new StringBuilder();

            sb.AppendLine(Locale.BookingFrom);

            sb.AppendLine(FlightTemplate(flightOptions));

            sb.AppendLine(Constants.EmptyLine);

            return(sb.ToString());
        }
Beispiel #6
0
        private static int GetFlight(FlightOptions opts)
        {
            if (!AMSTools.FileOK(opts.FileName))
            {
                return(-1);
            }

            var t = GetFromToTime(opts.Today, opts.Yesterday, opts.Tomorrow, opts.From, opts.To);

            if (t == null)
            {
                return(-1);
            }


            double fromOffset = (t.Item1 - DateTime.Now).TotalDays;
            double toOffset   = (t.Item2 - DateTime.Now).TotalDays;

            int start = Convert.ToInt32(Math.Floor(fromOffset));
            int stop  = Convert.ToInt32(Math.Ceiling(toOffset));


            string result = @"<Flights xmlns=""http://www.sita.aero/ams6-xml-api-datatypes>"">";

            for (int off = start; off <= stop; off++)
            {
                bool     found = false;
                DateTime date  = DateTime.Now.AddDays(off);

                using (AMSIntegrationServiceClient client = new AMSIntegrationServiceClient(AMSTools.GetWSBinding(), AMSTools.GetWSEndPoint())) {
                    FlightId arr = AMSTools.GetFlightID(true, opts.Airline, opts.FlightNum, off);

                    try {
                        XmlElement res = client.GetFlight(Parameters.TOKEN, arr);

                        if (!res.OuterXml.Contains("FLIGHT_NOT_FOUND"))
                        {
                            found   = true;
                            result += res.OuterXml;
                            Console.WriteLine($"Arrival Flight {opts.Airline}{opts.FlightNum} found for {date}");
                        }
                    } catch (Exception e) {
                        Console.WriteLine(e.Message);
                    }


                    FlightId dep = AMSTools.GetFlightID(false, opts.Airline, opts.FlightNum, off);

                    try {
                        XmlElement res = client.GetFlight(Parameters.TOKEN, dep);
                        if (!res.OuterXml.Contains("FLIGHT_NOT_FOUND"))
                        {
                            found   = true;
                            result += res.OuterXml;
                            Console.WriteLine($"Departure Flight {opts.Airline}{opts.FlightNum} found for {date}");
                        }
                    } catch (Exception e) {
                        Console.WriteLine(e.Message);
                    }
                }

                if (!found)
                {
                    Console.WriteLine($"Flight {opts.Airline}{opts.FlightNum} not found for {date}");
                }
            }

            result += "</Flights>";

            if (opts.CSV)
            {
                //Output in CSV format
                AMSTools.Out(GetCSV(result, "Flight", BaseType.Flight, ".//ams:FlightState", opts.FlightNum, opts.Linked), opts.FileName);
            }
            else
            {
                //Output in XML format
                AMSTools.Out(AMSTools.PrintXML(result), opts.FileName);
            }

            return(1);
        }