public GetTermsandConditionByTypeResponse getTermsAndConditions(GetTermsandConditionByTypeRequest termsandConditionByTypeRequest, string token)
        {
            GetTermsandConditionByTypeResponse result = null;

            try
            {
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(ConstantData.ApiURL.ToString() + "ReservationConfigurationMobile/GetAllTermsAndConditionsByType");
                    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

                    var myContent   = JsonConvert.SerializeObject(termsandConditionByTypeRequest);
                    var buffer      = Encoding.UTF8.GetBytes(myContent);
                    var byteContent = new ByteArrayContent(buffer);
                    byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");



                    var response = client.PostAsync(client.BaseAddress, byteContent).Result;
                    if (response.IsSuccessStatusCode)
                    {
                        var responseStream = response.Content.ReadAsStringAsync().Result;
                        result = JsonConvert.DeserializeObject <GetTermsandConditionByTypeResponse>(responseStream);
                    }
                }
            }

            catch (Exception ex)
            {
                throw ex;
            }
            return(result);
        }
        //public SummaryOfChargesPage()
        //{

        //    //if ((int)App.Current.Properties["CustomerId"] == 0)
        //    //{
        //    //    loginIcon.IconImageSource = ImageSource.FromResource("BespokeMobile.Assets.LogInTool.png", assembly);

        //    //}
        //    //else
        //    //{
        //    //    loginIcon.IconImageSource = ImageSource.FromResource("BespokeMobile.Assets.logOutTool.png", assembly);
        //    //}
        //}

        public SummaryOfChargesPage(ReservationView reservationView, VehicleViewByTypeForMobile selectedVehicle)
        {
            InitializeComponent();
            var assembly = typeof(SummaryOfChargesPage);

            this.reservationView             = reservationView;
            summaryMobileRequest             = new GetCalculateSummaryMobileRequest();
            summaryMobileResponsecs          = null;
            ReservationMobileResponse        = null;
            ReservationMobileRequest         = new CreateReservationMobileRequest();
            summaryMobileRequest.reservation = reservationView;
            token = App.Current.Properties["currentToken"].ToString();
            termsandConditionByTypeRequest          = new GetTermsandConditionByTypeRequest();
            termsandConditionByTypeRequest.clientId = Constants.ClientId;
            termsandConditionByTypeRequest.typeId   = 3;
            termsandConditionByTypeResponse         = null;
            this.selectedVehicle = selectedVehicle;
            startDateLabel.Text  = ((DateTime)reservationView.StartDate).ToString("ddd MM/dd/yyyy");
            endDateLabel.Text    = ((DateTime)reservationView.EndDate).ToString("ddd MM/dd/yyyy");
            startTimeLabel.Text  = ((DateTime)reservationView.StartDate).ToString("hh:mm tt");
            endTimeLabel.Text    = ((DateTime)reservationView.EndDate).ToString("hh:mm tt");
            if (selectedVehicle.VehicleTypeImageUrl != null)
            {
                vehilcleTypeImage.Source = ImageSource.FromUri(new Uri(selectedVehicle.VehicleTypeImageUrl));
            }
            vehicleSampleLabel.Text = selectedVehicle.sample;
            vehilcleTypeLabel.Text  = selectedVehicle.VehicleType;
            priceLabel.Text         = "$ " + selectedVehicle.RateDetail.RateTotal.ToString();
            emailInvoiceRequest     = new EmailInvoiceRequest();
            emailResponse           = null;
        }
        public GetTermsandConditionByTypeResponse getTermsAndConditions(GetTermsandConditionByTypeRequest termsandConditionByTypeRequest, string token)
        {
            GetTermsandConditionByTypeResponse Response = null;

            try
            {
                Response = reservationservice.getTermsAndConditions(termsandConditionByTypeRequest, token);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(Response);
        }
        private GetTermsandConditionByTypeResponse getTermsAndConditions(GetTermsandConditionByTypeRequest termsandConditionByTypeRequest, string token)
        {
            GetTermsandConditionByTypeResponse Response = null;
            ReservationController controller            = new ReservationController();

            try
            {
                Response = controller.getTermsAndConditions(termsandConditionByTypeRequest, token);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(Response);
        }
        public EditSummaryOfCharges(ReservationView reservationView, ReservationViewModel reservationData)
        {
            InitializeComponent();
            var assembly = typeof(SummaryOfChargesPage);

            this.reservationView             = reservationView;
            summaryMobileRequest             = new GetCalculateSummaryMobileRequest();
            summaryMobileResponsecs          = null;
            ReservationMobileResponse        = null;
            ReservationMobileRequest         = new UpdateReservationMobileRequest();
            summaryMobileRequest.reservation = reservationView;
            token = App.Current.Properties["currentToken"].ToString();
            termsandConditionByTypeRequest          = new GetTermsandConditionByTypeRequest();
            termsandConditionByTypeRequest.clientId = Constants.ClientId;
            termsandConditionByTypeRequest.typeId   = 3;
            termsandConditionByTypeResponse         = null;
            this.reservationData = reservationData;
        }
        //public SummaryOfChargesPage()
        //{

        //    //if ((int)App.Current.Properties["CustomerId"] == 0)
        //    //{
        //    //    loginIcon.IconImageSource = ImageSource.FromResource("MaxVonGrafKftMobile.Assets.LogInTool.png", assembly);

        //    //}
        //    //else
        //    //{
        //    //    loginIcon.IconImageSource = ImageSource.FromResource("MaxVonGrafKftMobile.Assets.logOutTool.png", assembly);
        //    //}
        //}

        public SummaryOfChargesPage(ReservationView reservationView, VehicleViewByTypeForMobile selectedVehicle)
        {
            InitializeComponent();
            var assembly = typeof(SummaryOfChargesPage);

            this.reservationView             = reservationView;
            summaryMobileRequest             = new GetCalculateSummaryMobileRequest();
            summaryMobileResponsecs          = null;
            ReservationMobileResponse        = null;
            ReservationMobileRequest         = new CreateReservationMobileRequest();
            summaryMobileRequest.reservation = reservationView;
            token = App.Current.Properties["currentToken"].ToString();
            termsandConditionByTypeRequest          = new GetTermsandConditionByTypeRequest();
            termsandConditionByTypeRequest.clientId = Constants.ClientId;
            termsandConditionByTypeRequest.typeId   = 3;
            termsandConditionByTypeResponse         = null;
            this.selectedVehicle = selectedVehicle;
            startDateLabel.Text  = ((DateTime)reservationView.StartDate).ToString("ddd MM/dd/yyyy");
            endDateLabel.Text    = ((DateTime)reservationView.EndDate).ToString("ddd MM/dd/yyyy");
            startTimeLabel.Text  = ((DateTime)reservationView.StartDate).ToString("hh:mm tt");
            endTimeLabel.Text    = ((DateTime)reservationView.EndDate).ToString("hh:mm tt");
            if (selectedVehicle.VehicleImageUrl != null)
            {
                vehilcleTypeImage.Source = ImageSource.FromUri(new Uri(selectedVehicle.VehicleImageUrl));
            }
            vehicleSampleLabel.Text = selectedVehicle.vehicleName;
            vehilcleTypeLabel.Text  = selectedVehicle.VehicleType;
            priceLabel.Text         = "Days: " + selectedVehicle.RateDetail.TotalDays.ToString();
            emailInvoiceRequest     = new EmailInvoiceRequest();
            emailResponse           = null;
            creditCardRequest       = new GetAllCustomerMobileCreditCardRequest();
            creditCards             = null;
            customerId = (int)App.Current.Properties["CustomerId"];

            billingInformation = new BillingInformation();
            submitPaymentandCreateReservationRequest = new SubmitPaymentandCreateReservationRequest();
            PaymentResponse = null;

            //imgSelect.Source = "iconCircleSelected.png";
        }
        //private async void LoginIcon_Clicked(object sender, EventArgs e)
        //{
        //    var assembly = typeof(SummaryOfChargesPage);
        //    if ((int)App.Current.Properties["CustomerId"] == 0)
        //    {

        //        loginIcon.IconImageSource = ImageSource.FromResource("NativeCamperVans.Assets.logOutTool.png", assembly);
        //        await Navigation.PushAsync(new LoginPage());

        //    }
        //    else
        //    {
        //        bool logout = await DisplayAlert("Alert", "Are you sure want to logout", "Yes", "No");
        //        if (logout)
        //        {
        //            App.Current.Properties["CustomerId"] = 0;
        //            loginIcon.IconImageSource = ImageSource.FromResource("NativeCamperVans.Assets.LogInTool.png", assembly);
        //            await Navigation.PushAsync(new BookNow());
        //        }
        //    }
        //}

        protected override async void OnAppearing()
        {
            base.OnAppearing();
            if (PopupNavigation.Instance.PopupStack.Count > 0)
            {
                if (PopupNavigation.Instance.PopupStack[PopupNavigation.Instance.PopupStack.Count - 1].GetType() == typeof(ErrorWithClosePagePopup))
                {
                    await PopupNavigation.Instance.PopAllAsync();
                }
                else if (PopupNavigation.Instance.PopupStack[PopupNavigation.Instance.PopupStack.Count - 1].GetType() == typeof(ReservationSavedPopup))
                {
                    await PopupNavigation.Instance.PopAllAsync();

                    await Navigation.PushAsync(new HomePageDetail());
                }
            }
            if (reservationData.Reservationview.CustomerDriverList != null)
            {
                reservationView.CustomerDriverList = reservationData.Reservationview.CustomerDriverList;
                if (reservationView.CustomerDriverList.Count > 0)
                {
                    List <Driver> listForListVew = new List <Driver>();
                    foreach (Driver d in reservationView.CustomerDriverList)
                    {
                        if (d.IsDelete == false)
                        {
                            listForListVew.Add(d);
                        }
                    }
                    reservationView.CustomerDriverList = reservationView.CustomerDriverList;
                    NoAdditionalDriverLabel.IsVisible  = false;
                    additionalDriverList.IsVisible     = true;
                    additionalDriverList.ItemsSource   = listForListVew;
                    additionalDriverList.HeightRequest = (listForListVew.Count) * 130;
                }
                else
                {
                    NoAdditionalDriverLabel.IsVisible = true;
                    additionalDriverList.IsVisible    = false;
                }
            }
            else
            {
                NoAdditionalDriverLabel.IsVisible = true;
                additionalDriverList.IsVisible    = false;
            }

            bool busy = false;

            if (!busy)
            {
                try
                {
                    busy = true;
                    await PopupNavigation.Instance.PushAsync(new LoadingPopup("Getting summary details..."));

                    await Task.Run(() =>
                    {
                        try
                        {
                            summaryMobileResponsecs         = getSummaryDetails(summaryMobileRequest, token);
                            termsandConditionByTypeResponse = getTermsAndConditions(termsandConditionByTypeRequest, token);
                        }
                        catch (Exception ex)
                        {
                            PopupNavigation.Instance.PushAsync(new ErrorWithClosePagePopup(ex.Message));
                        }
                    });
                }
                finally
                {
                    busy = false;
                    if (PopupNavigation.Instance.PopupStack.Count == 1)
                    {
                        await PopupNavigation.Instance.PopAllAsync();
                    }
                    if (PopupNavigation.Instance.PopupStack.Count > 1)
                    {
                        if (PopupNavigation.Instance.PopupStack[PopupNavigation.Instance.PopupStack.Count - 1].GetType() != typeof(ErrorWithClosePagePopup))
                        {
                            await PopupNavigation.Instance.PopAllAsync();
                        }
                    }

                    if (summaryMobileResponsecs != null)
                    {
                        if (summaryMobileResponsecs.message.ErrorCode == "200")
                        {
                            VehicletypeEntry.Text = reservationView.VehicleType;
                            noOfDaysEntry.Text    = reservationView.TotalDays.ToString();

                            if (summaryMobileResponsecs.rate.ReservationSummary.BaseRate == null)
                            {
                                totalRentalFeeEntry.Text = summaryMobileResponsecs.rate.EstimatedTotal.ToString();
                            }
                            else if (summaryMobileResponsecs.rate.ReservationSummary.BaseRate != null)
                            {
                                totalRentalFeeEntry.Text = summaryMobileResponsecs.rate.ReservationSummary.BaseRate;
                            }

                            totalMisChargeEntry.Text = (Convert.ToDecimal(summaryMobileResponsecs.rate.ReservationSummary.TotacMiscNonTaxable) + Convert.ToDecimal(summaryMobileResponsecs.rate.ReservationSummary.TotacMiscTaxable)).ToString();

                            if (summaryMobileResponsecs.rate.ReservationSummary.TotalTax == null)
                            {
                                totalTaxEntry.Text = "0.00";
                            }
                            else if (summaryMobileResponsecs.rate.ReservationSummary.TotalTax != null)
                            {
                                totalTaxEntry.Text = summaryMobileResponsecs.rate.ReservationSummary.TotalTax;
                            }

                            if (summaryMobileResponsecs.rate.ReservationSummary.EstimatedTotal == null)
                            {
                                totalAmountEntry.Text = summaryMobileResponsecs.rate.EstimatedTotal.ToString();
                            }
                            else if (summaryMobileResponsecs.rate.ReservationSummary.EstimatedTotal != null)
                            {
                                totalAmountEntry.Text = summaryMobileResponsecs.rate.ReservationSummary.EstimatedTotal;
                            }
                        }
                        else
                        {
                            await PopupNavigation.Instance.PushAsync(new ErrorWithClosePagePopup(summaryMobileResponsecs.message.ErrorMessage));
                        }
                    }

                    if (termsandConditionByTypeResponse != null)
                    {
                        if (termsandConditionByTypeResponse.message.ErrorCode == "200")
                        {
                            if (termsandConditionByTypeResponse.termlist != null)
                            {
                                if (termsandConditionByTypeResponse.termlist.Count > 0)
                                {
                                    //terms.Text = termsandConditionByTypeResponse.termlist[0].Term;
                                    //tacDescription.Text = termsandConditionByTypeResponse.termlist[0].Description;

                                    termList.ItemsSource = termsandConditionByTypeResponse.termlist;
                                }
                            }
                        }
                        else
                        {
                            await PopupNavigation.Instance.PushAsync(new ErrorWithClosePagePopup(termsandConditionByTypeResponse.message.ErrorMessage));
                        }
                    }
                }
            }
        }
        //private async void LoginIcon_Clicked(object sender, EventArgs e)
        //{
        //    var assembly = typeof(SummaryOfChargesPage);
        //    if ((int)App.Current.Properties["CustomerId"] == 0)
        //    {

        //        loginIcon.IconImageSource = ImageSource.FromResource("BespokeMobile.Assets.logOutTool.png", assembly);
        //        await Navigation.PushAsync(new LoginPage());

        //    }
        //    else
        //    {
        //        bool logout = await DisplayAlert("Alert", "Are you sure want to logout", "Yes", "No");
        //        if (logout)
        //        {
        //            App.Current.Properties["CustomerId"] = 0;
        //            loginIcon.IconImageSource = ImageSource.FromResource("BespokeMobile.Assets.LogInTool.png", assembly);
        //            await Navigation.PushAsync(new BookNow());
        //        }
        //    }
        //}

        protected override async void OnAppearing()
        {
            base.OnAppearing();
            if (PopupNavigation.Instance.PopupStack.Count > 0)
            {
                if (PopupNavigation.Instance.PopupStack[PopupNavigation.Instance.PopupStack.Count - 1].GetType() == typeof(ErrorWithClosePagePopup))
                {
                    await PopupNavigation.Instance.PopAllAsync();
                }
                else if (PopupNavigation.Instance.PopupStack[PopupNavigation.Instance.PopupStack.Count - 1].GetType() == typeof(ReservationSavedPopup))
                {
                    await PopupNavigation.Instance.PopAllAsync();

                    await Navigation.PushAsync(new HomePageDetail());
                }
            }

            //if (Constants.IsRegisteredandNotLogin)
            //{
            //    await Navigation.PushAsync(new LoginPage());
            //}
            else
            {
                if (reservationView.CustomerDriverList != null)
                {
                    if (reservationView.CustomerDriverList.Count > 0)
                    {
                        List <Driver> listForListVew = new List <Driver>();
                        foreach (Driver d in reservationView.CustomerDriverList)
                        {
                            if (d.IsDelete == false)
                            {
                                listForListVew.Add(d);
                            }
                        }
                        reservationView.CustomerDriverList = listForListVew;
                        // NoAdditionalDriverLabel.IsVisible = false;
                        // additionalDriverList.IsVisible = true;
                        // additionalDriverList.ItemsSource = listForListVew;
                        // additionalDriverList.HeightRequest = (listForListVew.Count) * 130;
                    }
                    else
                    {
                        ///NoAdditionalDriverLabel.IsVisible = true;
                        // additionalDriverList.IsVisible = false;
                    }
                }
                else
                {
                    // NoAdditionalDriverLabel.IsVisible = true;
                    // additionalDriverList.IsVisible = false;
                }



                bool busy = false;
                if (!busy)
                {
                    try
                    {
                        busy = true;
                        await PopupNavigation.Instance.PushAsync(new LoadingPopup("Getting summary details..."));

                        await Task.Run(() =>
                        {
                            try
                            {
                                summaryMobileResponsecs         = getSummaryDetails(summaryMobileRequest, token);
                                termsandConditionByTypeResponse = getTermsAndConditions(termsandConditionByTypeRequest, token);
                            }
                            catch (Exception ex)
                            {
                                PopupNavigation.Instance.PushAsync(new ErrorWithClosePagePopup(ex.Message));
                            }
                        });
                    }
                    finally
                    {
                        busy = false;
                        if (PopupNavigation.Instance.PopupStack.Count == 1)
                        {
                            await PopupNavigation.Instance.PopAllAsync();
                        }
                        if (PopupNavigation.Instance.PopupStack.Count > 1)
                        {
                            if (PopupNavigation.Instance.PopupStack[PopupNavigation.Instance.PopupStack.Count - 1].GetType() != typeof(ErrorWithClosePagePopup))
                            {
                                await PopupNavigation.Instance.PopAllAsync();
                            }
                        }

                        if (summaryMobileResponsecs != null)
                        {
                            if (summaryMobileResponsecs.message.ErrorCode == "200")
                            {
                                noOfDaysEntry.Text = reservationView.TotalDays.ToString();

                                totalRentalFeeEntry.Text = "$" + summaryMobileResponsecs.rate.RateTotal.ToString("0.00");

                                totalMisChargeEntry.Text = "$" + (Convert.ToDecimal(summaryMobileResponsecs.rate.ReservationSummary.TotacMiscNonTaxable) + Convert.ToDecimal(summaryMobileResponsecs.rate.ReservationSummary.TotacMiscTaxable)).ToString();

                                if (summaryMobileResponsecs.rate.ReservationSummary.TotalTax == null)
                                {
                                    totalTaxEntry.Text = "$0.00";
                                }
                                else if (summaryMobileResponsecs.rate.ReservationSummary.TotalTax != null)
                                {
                                    totalTaxEntry.Text = "$" + summaryMobileResponsecs.rate.ReservationSummary.TotalTax;
                                }



                                if (summaryMobileResponsecs.rate.ReservationSummary.EstimatedTotal == null)
                                {
                                    totalAmountEntry.Text = "$" + summaryMobileResponsecs.rate.EstimatedTotal.ToString();
                                }
                                else if (summaryMobileResponsecs.rate.ReservationSummary.EstimatedTotal != null)
                                {
                                    totalAmountEntry.Text = "$" + summaryMobileResponsecs.rate.ReservationSummary.EstimatedTotal;
                                }
                            }
                            else
                            {
                                await PopupNavigation.Instance.PushAsync(new ErrorWithClosePagePopup(summaryMobileResponsecs.message.ErrorMessage));
                            }
                        }

                        if (termsandConditionByTypeResponse != null)
                        {
                            if (termsandConditionByTypeResponse.message.ErrorCode == "200")
                            {
                                if (termsandConditionByTypeResponse.termlist != null)
                                {
                                    if (termsandConditionByTypeResponse.termlist.Count > 0)
                                    {
                                        //terms.Text = termsandConditionByTypeResponse.termlist[0].Term;
                                        //tacDescription.Text = termsandConditionByTypeResponse.termlist[0].Description;

                                        // termList.ItemsSource = termsandConditionByTypeResponse.termlist;

                                        //var myDataTemplate = new DataTemplate(() =>
                                        //{
                                        //    var cell = new ViewCell();
                                        //    var termGrid = new Grid();
                                        //    int r = termsandConditionByTypeResponse.termlist.Count;

                                        //    for (int i = 0; i < r; i++)
                                        //    {
                                        //        termGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });
                                        //    }



                                        //    foreach (Terms terms in termsandConditionByTypeResponse.termlist)
                                        //    {
                                        //        var tCGrid = new Grid() { VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.Fill };

                                        //        tCGrid.Children.Add(new Label()  // adding the item as label
                                        //        {
                                        //            Text = terms.Term,
                                        //            TextColor = Color.Black,
                                        //            HorizontalOptions = LayoutOptions.FillAndExpand,
                                        //            HorizontalTextAlignment = TextAlignment.Center,
                                        //            VerticalTextAlignment = TextAlignment.Center,
                                        //            FontSize = 16
                                        //        }, 0, 0);

                                        //        tCGrid.Children.Add(new Label()  // adding the item as label
                                        //        {
                                        //            Text = terms.Description,
                                        //            TextColor = Color.Gray,
                                        //            HorizontalOptions = LayoutOptions.FillAndExpand,
                                        //            HorizontalTextAlignment = TextAlignment.Center,
                                        //            VerticalTextAlignment = TextAlignment.Center,
                                        //            FontSize = 16
                                        //        }, 0, 1);
                                        //        termGrid.Children.Add(tCGrid);
                                        //    }
                                        //    cell.View = termGrid;
                                        //    return cell;
                                        //});
                                        //data = myDataTemplate;
                                    }
                                }
                            }
                            else
                            {
                                await PopupNavigation.Instance.PushAsync(new ErrorWithClosePagePopup(termsandConditionByTypeResponse.message.ErrorMessage));
                            }
                        }
                    }
                }
            }
        }