private async void FetchPlaceTypes()
        {
            this.types = new List <Types>();
            UserDialogs.Instance.Loading(title: "Processing Get Information...").Show();
            var client = new HttpClient()
            {
                Timeout = TimeSpan.FromSeconds(20)
            };

            var     auth           = "H6V$36A*!?L^G2NXX7U%=GY@";
            JObject jsonDataObject = new JObject {
                { "auth", auth }
            };

            JObject jsonData = new JObject {
                { "params", jsonDataObject }
            };

            var data    = jsonData.ToString();
            var content = new StringContent(data, Encoding.UTF8, "application/json");

            try
            {
                HttpResponseMessage response = await client.PostAsync(ApiURI.URL_MAIN + ApiURI.FETCH_PLACE_TYPES, content);

                string responseContent = await response.Content.ReadAsStringAsync();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    UserDialogs.Instance.Loading().Hide();

                    ListPlaceTypesResponse listPlaceTypesResponse = JsonConvert.DeserializeObject <ListPlaceTypesResponse>(responseContent);
                    ListPlaceTypesResult   listPlaceTypesResult   = listPlaceTypesResponse.Result;
                    this.types.AddRange(listPlaceTypesResult.Types.ToList());
                    this.lstViewTypes.ItemsSource = this.types;
                }
            }
            catch (TaskCanceledException ex)
            {
                UserDialogs.Instance.Loading().Hide();
                UserDialogs.Instance.Toast(new ToastConfig("Bad Connection Error. Try Again"));
            }
            catch (Exception exx)
            {
                UserDialogs.Instance.Loading().Hide();
                //Notifications.Internal.ServerError();
            }
        }
        private async Task FetchPlaceTypes()
        {
            UserDialogs.Instance.Loading(title: "Processing Get Information...").Show();

            var client = new HttpClient()
            {
                Timeout = TimeSpan.FromSeconds(20)
            };

            var     auth           = "H6V$36A*!?L^G2NXX7U%=GY@";
            JObject jsonDataObject = new JObject {
                { "auth", auth }
            };

            JObject jsonData = new JObject {
                { "params", jsonDataObject }
            };

            var data    = jsonData.ToString();
            var content = new StringContent(data, Encoding.UTF8, "application/json");

            Debug.WriteLine("REQUEST-FetchPlaces: " + data);

            try
            {
                HttpResponseMessage response = await client.PostAsync(ApiUri.BASE_URL + ApiUri.FETCH_PLACE_TYPES, content);

                string responseContent = await response.Content.ReadAsStringAsync();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    UserDialogs.Instance.Loading().Hide();
                    Debug.WriteLine("RESPONSE-FetchPlaces: " + responseContent);

                    ListPlaceTypesResponse listPlaceTypesResponse = JsonConvert.DeserializeObject <ListPlaceTypesResponse>(responseContent);
                    ListPlaceTypesResult   listPlaceTypesResult   = listPlaceTypesResponse.Result;

                    listTypes = listPlaceTypesResult.Types.ToList();

                    if (listPlaceTypesResult.Success)
                    {
                        foreach (var place in listPlaces)
                        {
                            foreach (var type in listTypes)
                            {
                                if (!string.IsNullOrWhiteSpace(place.place_id[0]) && !"false".Equals(place.place_id[0]))
                                {
                                    if (Convert.ToInt32(place.place_id[0]) == type.id)
                                    {
                                        place.image = type.image;
                                    }
                                }
                            }
                        }

                        foreach (var place in listPlaces)
                        {
                            ImageSource image = !(place.image is string base64) ? null : ImageSource.FromStream(()
                                                                                                                => new MemoryStream(Convert.FromBase64String(base64)));
                            LayoutOptions Center = default;
                            //var img = Convert.FromBase64String(place.image);
                            //var icons = Android.Graphics.BitmapFactory.DecodeByteArray(img, 0, img.Length);
                            //var bitmap = Android.Graphics.Bitmap.CreateBitmap(icons);
                            //var contents = new StreamContent(new MemoryStream(img));
                            //var abc = Base64.EncodeToString(img, Base64Flags.Default);
                            maps.Pins.Add(new Pin()
                            {
                                Label = place.name,
                                //Address = host.province,
                                Icon = BitmapDescriptorFactory.FromView(
                                    new ContentView
                                {
                                    HeightRequest = 40,
                                    WidthRequest  = 25,
                                    Content       = new Image
                                    {
                                        Source            = image,
                                        Aspect            = Aspect.AspectFit,
                                        HeightRequest     = 40,
                                        WidthRequest      = 25,
                                        VerticalOptions   = Center,
                                        HorizontalOptions = Center
                                    }
                                }),
                                Position       = new Xamarin.Forms.GoogleMaps.Position(place.latitude, place.longitude),
                                Type           = PinType.Place,
                                BindingContext = place,
                                ZIndex         = place.id,
                                IsDraggable    = false
                            });
                        }
                    }
                }
            }
            catch (TaskCanceledException ex)
            {
                UserDialogs.Instance.Loading().Hide();
                UserDialogs.Instance.Toast(new ToastConfig("Bad Connection Error. Try Again"));
                Debug.WriteLine(ex.Message);
            }
            catch (Exception exx)
            {
                Debug.WriteLine(exx.Message);
                UserDialogs.Instance.Loading().Hide();
                Notifications.Internal.ServerError();
            }
        }
        private async Task FetchPlaceTypes()
        {
            UserDialogs.Instance.Loading(title: "Processing Get Information...").Show();

            var client = new HttpClient()
            {
                Timeout = TimeSpan.FromSeconds(20)
            };

            JObject jsonDataObject = new JObject
            {
                { "auth", "H6V$36A*!?L^G2NXX7U%=GY@" }
            };

            JObject jsonData = new JObject
            {
                { "params", jsonDataObject }
            };

            var data    = jsonData.ToString();
            var content = new StringContent(data, Encoding.UTF8, "application/json");

            Debug.WriteLine("REQUEST-FetchPlaces: " + data);

            try
            {
                HttpResponseMessage response = await client.PostAsync(ApiUri.BASE_URL + ApiUri.FETCH_PLACE_TYPES, content);

                string responseContent = await response.Content.ReadAsStringAsync();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    UserDialogs.Instance.Loading().Hide();
                    Debug.WriteLine("RESPONSE-FetchPlaces: " + responseContent);

                    ListPlaceTypesResponse listPlaceTypesResponse = JsonConvert.DeserializeObject <ListPlaceTypesResponse>(responseContent);
                    ListPlaceTypesResult   listPlaceTypesResult   = listPlaceTypesResponse.Result;

                    listTypes = listPlaceTypesResult.Types.ToList();

                    if (listPlaceTypesResult.Success)
                    {
                        foreach (var place in listPlaces)
                        {
                            foreach (var type in listTypes)
                            {
                                if (!string.IsNullOrWhiteSpace(place.place_id[0]) && !"false".Equals(place.place_id[0]))
                                {
                                    if (Convert.ToInt32(place.place_id[0]) == type.id)
                                    {
                                        place.image = type.image;
                                    }
                                }
                            }
                        }

                        pinMapsPlaces();
                    }
                }
            }
            catch (TaskCanceledException ex)
            {
                UserDialogs.Instance.Loading().Hide();
                UserDialogs.Instance.Toast(new ToastConfig("Bad Connection Error. Try Again"));
                Debug.WriteLine(ex.Message);
            }
            catch (Exception exx)
            {
                Debug.WriteLine(exx.Message);
                UserDialogs.Instance.Loading().Hide();
                Notifications.Internal.ServerError();
            }
        }