public List <PerformaItemDetails> performaItemInformation()
        {
            var output = JObject.Parse(result);

            if (Enumerable.Count(output["d"]["results"][0]["profomaLinesSet"]["results"]) > 0)
            {
                int performaItemsHeight = 0;
                int initialItem         = 1;
                for (int i = 0; i < Enumerable.Count(output["d"]["results"][0]["profomaLinesSet"]["results"]); i++)
                {
                    if (initialItem == 1)
                    {
                        performaItemsHeight = 60;
                    }
                    else
                    {
                        performaItemsHeight = performaItemsHeight + 30;
                    }

                    performaItemDetails.Add(new PerformaItemDetails(
                                                FormatChanges.changedateformat(Convert.ToString(output["d"]["results"][0]["profomaLinesSet"]["results"][i]["StartDate"])),
                                                FormatChanges.changedateformat(Convert.ToString(output["d"]["results"][0]["profomaLinesSet"]["results"][i]["EndDate"])),
                                                Convert.ToString(output["d"]["results"][0]["profomaLinesSet"]["results"][i]["Description"]),
                                                Convert.ToString(output["d"]["results"][0]["profomaLinesSet"]["results"][i]["RoomType"]),
                                                Convert.ToString(output["d"]["results"][0]["profomaLinesSet"]["results"][i]["MealPlan"]),
                                                Convert.ToString(output["d"]["results"][0]["profomaLinesSet"]["results"][i]["Occu"]),
                                                Convert.ToString(output["d"]["results"][0]["profomaLinesSet"]["results"][i]["Nos"]),
                                                Convert.ToString(output["d"]["results"][0]["profomaLinesSet"]["results"][i]["RoomNights"]),
                                                serviceDataValidation.decimalTruncating(Convert.ToString(output["d"]["results"][0]["profomaLinesSet"]["results"][i]["Rate"])),
                                                Convert.ToString(output["d"]["results"][0]["profomaLinesSet"]["results"][i]["RateCur"]),
                                                serviceDataValidation.decimalTruncating(Convert.ToString(output["d"]["results"][0]["profomaLinesSet"]["results"][i]["Amount"]))));
                    initialItem = 0;
                }
                MessagingCenter.Send <PerformaInformation, int>(this, Constants._performaListHeight, performaItemsHeight);
            }
            return(performaItemDetails);
        }
        public GuestEdit(List <guestDetails> guestDetailsList, guestDetails Object)
        {
            //Passing values value on page load to fields and pickers
            InitializeComponent();

            //Setting limits for datetime.
            DateTime date = new DateTime(1900, 1, 1);

            DateOfBirth.MaximumDate = DateTime.Today;
            DateOfBirth.MinimumDate = date;

            //setting guest details retrieved from guestifo page
            guestdetails        = guestDetailsList;
            guestCodeFromSearch = Object.guestCode;
            Visitperhotel       = Object.noOfVisitsHotel;
            Totalvisit          = Object.noOfVisits;
            RevenueTotal        = Object.revenueTotal;
            RevenueRoom         = Object.revenueRoom;
            RevenueFnb          = Object.reveneuFB;
            RevenueOther        = Object.revenueOther;

            //countryFromSearch = Object.country;
            if (Object.passportIdNumber == "")
            {
                hideUntilSearched.IsVisible = false;
                viewUntilSearched.IsVisible = true;
            }
            else
            {
                hideUntilSearched.IsVisible = true;
                viewUntilSearched.IsVisible = false;
            }

            pageLoading();

            guestDetailsAvailableOnLoad((Object.guestNumber).ToString(), Object.identificationMethod, Object.passportIdNumber, Object.salutation, Object.guestFirstName, Object.guestLastName, Object.gender, Object.email, Object.contactNumber, Object.houseNumber, Object.street, Object.city, Object.country, Object.nationality, Object.language, Object.guestCode, Object.dateOfBirth, Object.dateOfExpiry);

            //Getting results after passport successfully scanned
            MessagingCenter.Subscribe <Messages.BlinkIDResults>(this, Messages.BlinkIDResultsMessage, async(sender) =>
            {
                pageLoading();
                try
                {
                    //Values from passport
                    foreach (var result in sender.Results)
                    {
                        //Seperating values from array
                        result.TryGetValue("SecondaryId", out fname);
                        result.TryGetValue("PrimaryId", out lname);
                        result.TryGetValue("Nationality", out nationality);
                        result.TryGetValue("Sex", out gender);
                        result.TryGetValue("DocumentNumber", out PassportNumber);
                        result.TryGetValue("DateOfExpiry", out dateOfExpiry);
                        result.TryGetValue("DateOfBirth", out dateOfBirthPass);

                        PassportNumber = Regex.Replace(PassportNumber, "[^A-Za-z0-9 _]", "");
                        //List of identification methods from dictionary
                        var nameToAlpha2FromAlpha3 = CountryDictionary.listAlpha3To();
                        //Getting Key Value from Dictoinary by passing the THREE Letter code
                        nationality = nameToAlpha2FromAlpha3.FirstOrDefault(x => x.Key == nationality).Value;
                        //string guestNumberPassport = guestNumber.Text;
                    }

                    new APILogger().Logger($"PP Scan Result : FName {fname},LName {lname},Nationality {nationality},Sex {gender},DocumentNumber {PassportNumber},DateOfExpiry {dateOfExpiry},DateOfBirth {dateOfBirthPass}");

                    await existingGuestDetailsFromDatabses(2, PassportNumber);
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        GuestFisrtName.Text = fname;
                        GuestLastName.Text  = lname;
                        guestIdentificationDetailsPicker("2");
                        guestNationalityDetailsPicker(nationality);
                        guestContryDetailsPicker(nationality);
                        guestLanguageDetailsPicker("E");
                        PassportExpiry.Date = FormatChanges.PassScanDateFormat(dateOfExpiry);
                        guestGenderDetailsPicker(serviceDataValidation.guestEditGenderValidation(gender));
                        DateOfBirth.Date = FormatChanges.PassScanDateFormat(dateOfBirthPass);
                        stopPageLoading();
                    });
                }
                catch (Exception)
                {
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        stopPageLoading();
                        guestEntryDetails(guestNumber.Text, PassportNumber, fname, lname, "", "", "", "", "");
                        guestIdentificationDetailsPicker("2");
                        guestNationalityDetailsPicker(nationality);
                        guestContryDetailsPicker(nationality);
                        guestLanguageDetailsPicker("E");
                        guestSalutationPicker("");
                        guestGenderDetailsPicker(serviceDataValidation.guestEditGenderValidation(gender));
                        PassportExpiry.Date = FormatChanges.PassScanDateFormat(dateOfExpiry);
                        DateOfBirth.Date    = FormatChanges.PassScanDateFormat(dateOfBirthPass);
                        Visitperhotel       = "00";
                        Totalvisit          = "00";
                        RevenueTotal        = "0.00";
                        RevenueRoom         = "0.00";
                        RevenueFnb          = "0.00";
                        RevenueOther        = "0.00";
                        stopPageLoading();
                        DisplayAlert(Constants._headerMessage, Constants._noDetails, Constants._buttonOkay);
                    });
                }
                //MessagingCenter.Unsubscribe<Messages.BlinkIDResults>(this, Messages.BlinkIDResultsMessage);
            });
        }
        public async Task <PerformaDetails> performaInfo(string reservationID)
        {
            try
            {
                result = await checkinManger.GetPerformaDetails(reservationID);

                if (result == null || result == "Error")
                {
                    MessagingCenter.Send <PerformaInformation, string>(this, Constants._proformaGeneratError, "");
                }
                else
                {
                    var output = JObject.Parse(result);
                    if (Enumerable.Count(output["d"]["results"]) > 0)
                    {
                        string advanceTextPositive = string.Empty, advanceTextNegative = string.Empty, advanceTextPositiveValue = string.Empty, advanceTextNegativeValue = string.Empty;
                        try
                        {
                            if (Enumerable.Count(output["d"]["results"][0]["advanceLinesSet"]["results"]) > 0)
                            {
                                advanceTextPositive      = Convert.ToString(output["d"]["results"][0]["advanceLinesSet"]["results"][0]["AdvText"]) + " :";
                                advanceTextPositiveValue = Convert.ToString(output["d"]["results"][0]["advanceLinesSet"]["results"][0]["AdvValue"]);
                                advanceTextNegative      = Convert.ToString(output["d"]["results"][0]["advanceLinesSet"]["results"][1]["AdvText"]) + " :";
                                advanceTextNegativeValue = Convert.ToString(output["d"]["results"][0]["advanceLinesSet"]["results"][1]["AdvValue"]);
                            }
                        }
                        catch (Exception)
                        {
                        }
                        string          value           = string.Format("{0:F2}", Convert.ToString(output["d"]["results"][0]["BdGrandTotal"]));
                        int             count           = Enumerable.Count(output["d"]["results"][0]["profomaLinesSet"]["results"]);
                        PerformaDetails PerformaDetails = new PerformaDetails(Convert.ToString(output["d"]["results"][0]["HdKunnr"]),
                                                                              Convert.ToString(output["d"]["results"][0]["HdCusName"]) + "\n" +
                                                                              Convert.ToString(output["d"]["results"][0]["HdCusStreet"]) + "\n" +
                                                                              Convert.ToString(output["d"]["results"][0]["HdCusCity"]) + " \n" +
                                                                              Convert.ToString(output["d"]["results"][0]["HdCusCountry"]),
                                                                              Convert.ToString(output["d"]["results"][0]["HdCusVatno"]),
                                                                              Convert.ToString(output["d"]["results"][0]["HdCusGuest"]),
                                                                              Convert.ToString(output["d"]["results"][0]["HdCusBookingparty"]),
                                                                              Convert.ToString(output["d"]["results"][0]["HdInvoice"]),
                                                                              FormatChanges.changedateformat(Convert.ToString(output["d"]["results"][0]["HdInvoiceDate"])),
                                                                              FormatChanges.changedateformat(Convert.ToString(output["d"]["results"][0]["HdArrivalDate"])),
                                                                              FormatChanges.changedateformat(Convert.ToString(output["d"]["results"][0]["HdDepartureDate"])),
                                                                              Convert.ToString(output["d"]["results"][0]["HdReservation"]),
                                                                              Convert.ToString(output["d"]["results"][0]["HdVoucher"]),
                                                                              Convert.ToString(output["d"]["results"][0]["HdResStatus"]),
                                                                              Convert.ToString(output["d"]["results"][0]["HdRooms"]),
                                                                              Convert.ToString(output["d"]["results"][0]["HdAdult"]),
                                                                              Convert.ToString(output["d"]["results"][0]["HdChild"]),
                                                                              Convert.ToString(output["d"]["results"][0]["HdChildf"]),
                                                                              Convert.ToString(output["d"]["results"][0]["HdGuide"]),
                                                                              serviceDataValidation.decimalTruncating(Convert.ToString(output["d"]["results"][0]["BdGrandTotal"])),
                                                                              serviceDataValidation.decimalTruncating(Convert.ToString(output["d"]["results"][0]["BdTotalExVat"])),
                                                                              serviceDataValidation.decimalTruncating(Convert.ToString(output["d"]["results"][0]["BdVat"])),
                                                                              serviceDataValidation.decimalTruncating(Convert.ToString(output["d"]["results"][0]["BdTotalDue"])),
                                                                              serviceDataValidation.decimalTruncating(Convert.ToString(output["d"]["results"][0]["BdBalanceDue"])),
                                                                              Convert.ToString(output["d"]["results"][0]["FtRoomList"]),
                                                                              Convert.ToString(output["d"]["results"][0]["FtGeneratedBy"]),
                                                                              serviceDataValidation.decimalTruncating(Convert.ToString(output["d"]["results"][0]["FtExRate"])),
                                                                              Convert.ToString(output["d"]["results"][0]["FtDescription1"]),
                                                                              Convert.ToString(output["d"]["results"][0]["FtAccHolder"]),
                                                                              Convert.ToString(output["d"]["results"][0]["FtBank"]),
                                                                              Convert.ToString(output["d"]["results"][0]["FtAccNum"]),
                                                                              Convert.ToString(output["d"]["results"][0]["FtSwiftCode"]),
                                                                              Convert.ToString(output["d"]["results"][0]["FtDescription2"]),
                                                                              Convert.ToString(output["d"]["results"][0]["FtDescription3"]),
                                                                              Convert.ToString(output["d"]["results"][0]["FtPrintedBy"]),
                                                                              Convert.ToString(output["d"]["results"][0]["FtExecDate"]),
                                                                              advanceTextPositive,
                                                                              advanceTextPositiveValue,
                                                                              advanceTextNegative,
                                                                              advanceTextNegativeValue
                                                                              );
                        performaDetails = PerformaDetails;
                    }
                }
            }

            catch (Exception e)
            {
                MessagingCenter.Send <PerformaInformation, string>(this, Constants._proformaGeneratError, result);
            }
            return(performaDetails);
        }