private void btnCreate_Click(object sender, EventArgs e)
        {
            string message = IsValid();
            if (string.IsNullOrEmpty(message))
            {
                FailedCount = 0;
                ProcessedCount = 0;
                SuccessCount = 0;

                ReceipentEmail = string.Empty;
                frmEmailPopup popup = new frmEmailPopup();
                popup.ShowDialog();
                ReceipentEmail = popup.ReceipentEmail;
                if (!popup.IsClose)
                {
                    lstPNRsProcessed = new List<PNRsProcessed>();
                    FlightRequest objFlightRequest = new FlightRequest();
                    objFlightRequest.Origin = txtOrigin.Text.Trim();
                    objFlightRequest.Destination = cmbDestination.Text.Trim();
                    objFlightRequest.TotalPNRsRequired = Convert.ToInt16(txtPNRs.Text.Trim());
                    objFlightRequest.AdtCount = Convert.ToInt16(txtAdtCount.Text);
                    objFlightRequest.ChdCount = Convert.ToInt16(txtChildCount.Text);
                    objFlightRequest.InfCount = Convert.ToInt16(txtInfantCount.Text);
                    objFlightRequest.DepartureDate = Convert.ToDateTime(dtDepartureDate.Text);
                    objFlightRequest.ReturnDate = Convert.ToDateTime(dtArrivalDate.Text);
                    objFlightRequest.OutboundFlightNo = Convert.ToString(txtOBFlightNo.Text);
                    objFlightRequest.InboundFlightNo = Convert.ToString(txtIBFlightNo.Text);
                    objFlightRequest.IsRT = chkRT.Checked;
                    objFlightRequest.VoucherNo = (string.IsNullOrEmpty(txtVoucherNo.Text) ? string.Empty : txtVoucherNo.Text.Trim());
                    objFlightRequest.OutboundCabin = (cmbOBCabin.Text != null ? Convert.ToString(cmbOBCabin.Text) : EnumCabin.Economy.ToString());
                    objFlightRequest.InboundCabin = (cmbIBCabin.Text != null ? Convert.ToString(cmbIBCabin.Text) : EnumCabin.Economy.ToString());
                    objFlightRequest.OutboundBaggage = cmbOBBaggage.Text;
                    objFlightRequest.InboundBaggage = cmbIBBaggage.Text;
                    objFlightRequest.OutboundMeal = cmbOBMeal.Text;
                    objFlightRequest.InboundMeal = cmbIBMeal.Text;
                    objFlightRequest.IFE = chkIFE.Checked;
                    objFlightRequest.Seating = chkSeating.Checked;

                    lblInfo.Text = "PROCESS STARTED";
                    lblInfo.ForeColor = Color.Blue;
                    progressBar.Refresh();
                    progressBar.MarqueeAnimationSpeed = 30;
                    progressBar.Visible = true;
                    btnCreate.Enabled = false;
                    Logger.LogToFile("====== Create PNR Started at : " + DateTime.Now.ToString());
                    List<FlightRequest> request = new List<FlightRequest>();
                    request.Add(objFlightRequest);
                    Task.Factory.StartNew(() => CreateBooking(request));
                }
            }
            else
            {
                MessageBox.Show(message);
            }
        }
        /// <summary>
        ///  3. Create summary
        /// </summary>
        /// <param name="objColPaxWiseFareId"></param>
        /// <param name="token"></param>
        /// <param name="adtCount"></param>
        /// <param name="childCount"></param>
        /// <param name="infantCount"></param>
        /// <param name="lastName"></param>
        /// <returns></returns>
        public ViewPNR GenerateSummary(List<PaxWiseFareIdResult> objColPaxWiseFareId, string token, int adtCount,
            int childCount, int infantCount, string lastName, FlightRequest objFlightRequest)
        {
            ViewPNR viewPnr = new ViewPNR();
            try
            {
                var request = new SummaryPNR
                {
                    ActionType = SummaryPNRActionTypes.GetSummary,
                    Address = GetEmptyAddress(),
                    CarrierCodes = GetCarrierCodes(),
                    SecurityGUID = token,
                    ClientIPAddress = string.Empty,
                    SecurityToken = token,
                    ReceiptLanguageID = "1",
                    ReservationInfo = new ReservationInfo
                    {
                        ConfirmationNumber = "NA",
                        SeriesNumber = "299"
                    },
                    User = "******",
                    CarrierCurrency = ReservationService.EnumerationsCurrencyCodeTypes.AED,
                    ContactInfos = GetPassengerContactInfos().ToArray(),
                    DisplayCurrency = ReservationService.EnumerationsCurrencyCodeTypes.AED,
                    Payments = GetEmptyPayments().ToArray(),
                };
                List<Person> lstPersons = GetPersons(adtCount, childCount, infantCount, lastName);
                request.Passengers = lstPersons.ToArray();
                request.Segments = GetSegments(token, lstPersons,
                    objColPaxWiseFareId, objFlightRequest).ToArray();
                using (ReservationService.ConnectPoint_Reservation client = new ReservationService.ConnectPoint_Reservation())
                {
                    viewPnr = client.SummaryPNR(request);

                    if (viewPnr.Exceptions != null)
                    {
                        foreach (var exception in viewPnr.Exceptions)
                        {
                            if (exception.ExceptionCode != 0)
                            {
                                var radixxException = new RadixxException(
                               message: exception.ExceptionDescription,
                               radixxExceptionCode: this.ParseErrorCode(exception.ExceptionDescription) ?? exception.ExceptionCode,
                               radixxExceptionSource: exception.ExceptionSource,
                               type: new StackFrame(1, true).GetType(),
                               flydubaiOperation: new StackFrame(1, true).GetMethod().Name,
                               securityGuid: token,
                               request: "",//DataHelpers.SerializeToString(request),
                               responseMessage: "");//DataHelpers.SerializeToString(response));

                                throw radixxException;
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return viewPnr;
        }
        public List<Segment> GetSegments(string token, List<Person> lstPersons, List<PaxWiseFareIdResult> objPaxWiseFareId, FlightRequest objFlightRequest)
        {
            List<SeatsInfo> objSeatsInfo = new List<SeatsInfo>();
            var segments = new List<Segment>();
            foreach (var item in objPaxWiseFareId)
            {

                List<AlreadyTakenSeat> colAlreadyUsedInThisProcessSpecialService = new List<AlreadyTakenSeat>();
                if (objFlightRequest.Seating)
                {
                    objSeatsInfo = RetrieveSeatsAvailability(token, item.DepartureDate, item.LFID, item.Cabin);
                }
                foreach (var person in lstPersons)
                {

                    List<SpacialServiceAndSeat> colSpecialService = new List<SpacialServiceAndSeat>();
                    SeatCharge seat = new SeatCharge();
                    //Seating
                    //if (!objFlightRequest.Seating)
                    //    return colSpecialService;
                    //else
                    if (objFlightRequest.Seating && person.PTCID != 5)// Not an infant
                    {
                        colSpecialService = GetAvailableSeatForAllLegs(objSeatsInfo, item, person, ref colAlreadyUsedInThisProcessSpecialService);//get seat from all physical flight for the person i.e for OW per person

                    }
                    Segment segment = new Segment();
                    segment.FareInformationID = GetFareId(item, person.PTCID);
                    segment.MarketingCode = "NA";
                    segment.StoreFrontID = "NA";
                    segment.PersonOrgID = person.PersonOrgID;
                    segment.SpecialServices = GetSpecialService(objFlightRequest, item, person).ToArray(); //new List<SpecialService>(), //GetSpecialServices(p, localFlight, currency),

                    List<Seat> seatassigned = new List<Seat>();

                    if (colSpecialService != null && colSpecialService.Count > 0)
                    {
                        seatassigned = new List<Seat>();
                        foreach (var service in colSpecialService)
                        {

                            if (service.Special_Service.CodeType != string.Empty)
                            {
                                var serviceList = segment.SpecialServices == null ? new List<SpecialService>() : segment.SpecialServices.ToList();
                                serviceList.Add(service.Special_Service);
                                segment.SpecialServices = serviceList.ToArray();
                            }

                            seatassigned.Add(new Seat()
                            {
                                DepartureDate = item.DepartureDate.Date,
                                LogicalFlightID = item.LFID,
                                PersonOrgID = person.PersonOrgID,
                                RowNumber = Convert.ToString(service.Seat_Charges.RowNumber),
                                PhysicalFlightID = service.PhysicalFlightID,
                                SeatSelected = service.Seat_Charges.Seat
                            });

                        }

                    }

                    segment.Seats = seatassigned.ToArray();
                    segments.Add(segment);

                }

            }

            return segments;
        }
        private List<SpecialService> GetSpecialService(FlightRequest objFlightRequest, PaxWiseFareIdResult objPaxWiseFareIdResult, Person person)
        {
            List<SpecialService> colSpecialService = new List<SpecialService>();
            if (person.PTCID != 5)
            {
                //Baggage
                var BaggageRequested = objPaxWiseFareIdResult.EnumFlightType == FlightType.Inbound ? objFlightRequest.InboundBaggage : objFlightRequest.OutboundBaggage;

                if (!String.IsNullOrEmpty(BaggageRequested) && objPaxWiseFareIdResult.Cabin == EnumCabin.Economy.ToString())
                {
                    colSpecialService.Add(new SpecialService()
                    {
                        CodeType = BaggageRequested,
                        ServiceID = -2147483648,
                        SSRCategory = 99,
                        LogicalFlightID = objPaxWiseFareIdResult.LFID,
                        DepartureDate = objPaxWiseFareIdResult.DepartureDate.Date,
                        Amount = (BaggageRequested == "BAGB" ? 50 : (BaggageRequested == "BAGL" ? 100 : 200)),
                        OverrideAmount = false,
                        CurrencyCode = ReservationService.EnumerationsCurrencyCodeTypes.AED,
                        PersonOrgID = person.PersonOrgID,
                        ChargeComment = string.Empty

                    });
                }

                //Meal
                var MealRequested = objPaxWiseFareIdResult.EnumFlightType == FlightType.Inbound ? objFlightRequest.InboundMeal : objFlightRequest.OutboundMeal;
                if (!String.IsNullOrEmpty(MealRequested))
                {

                    colSpecialService.Add(new SpecialService()
                    {
                        CodeType = MealRequested,
                        ServiceID = -2147483648,
                        SSRCategory = 162,
                        LogicalFlightID = objPaxWiseFareIdResult.LFID,
                        DepartureDate = objPaxWiseFareIdResult.DepartureDate.Date,
                        Amount = 50,
                        OverrideAmount = false,
                        CurrencyCode = ReservationService.EnumerationsCurrencyCodeTypes.AED,
                        PersonOrgID = person.PersonOrgID,
                        ChargeComment = string.Empty

                    });
                }

                //IFE
                if (objFlightRequest.IFE && objPaxWiseFareIdResult.Cabin == EnumCabin.Economy.ToString())
                {
                    colSpecialService.Add(new SpecialService()
                    {
                        CodeType = "IFPP",
                        ServiceID = -2147483648,
                        SSRCategory = 141,
                        LogicalFlightID = objPaxWiseFareIdResult.LFID,
                        DepartureDate = objPaxWiseFareIdResult.DepartureDate.Date,
                        Amount = 30,
                        OverrideAmount = false,
                        CurrencyCode = ReservationService.EnumerationsCurrencyCodeTypes.AED,
                        PersonOrgID = person.PersonOrgID,
                        ChargeComment = string.Empty

                    });
                }

            }
            return colSpecialService;
        }