示例#1
0
        public override async Task <ActionResult <ListRoomResponse> > HandleAsync([FromQuery] ListRoomRequest request, CancellationToken cancellationToken)
        {
            var response = new ListRoomResponse(request.CorrelationId());

            var roomSpec = new RoomSpecification();
            var rooms    = await _repository.ListAsync(roomSpec);

            if (rooms is null)
            {
                return(NotFound());
            }

            response.Rooms = _mapper.Map <List <RoomDto> >(rooms);
            response.Count = response.Rooms.Count;

            return(Ok(response));
        }
        private async void GetRooms(string startDate = null, string endDate = null)
        {
            UserDialogs.Instance.Loading(title: "Getting Rooms...").Show();
            var client = new HttpClient()
            {
                Timeout = TimeSpan.FromSeconds(20)
            };

            JObject @params = new JObject()
            {
                new JProperty("params", new JObject()
                {
                    new JProperty("auth", new JObject()
                    {
                        new JProperty("token", currentHost.usr_token)
                    }),
                    new JProperty("dates", new JObject()
                    {
                        new JProperty("start_date", !string.IsNullOrWhiteSpace(startDate) ? startDate : DateTime.Today.ToString("yyyy-MM-dd")),
                        new JProperty("end_date", !string.IsNullOrWhiteSpace(endDate) ? endDate : DateTime.Today.AddDays(1).ToString("yyyy-MM-dd"))
                    })
                })
            };

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

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

            try
            {
                HttpResponseMessage response = await client.PostAsync(currentHost.host_url + ApiUri.AVAILABLE_ROOMS, content);

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

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

                    ListRoomResponse listRoomResponse = JsonConvert.DeserializeObject <ListRoomResponse>(responseContent, App.DefaultSerializerSettings);

                    listCamping     = listRoomResponse.result.Where(s => s.camping.Equals(true)).OrderBy(s => s.room_type).ToList();
                    listPrivateRoom = listRoomResponse.result.Where(s => s.Private.Equals(true) && !s.camping.Equals(true)).OrderBy(s => s.room_type).ToList();
                    listSharedRoom  = listRoomResponse.result.Where(s => s.Private.Equals(false) && !s.camping.Equals(true)).OrderBy(s => s.room_type).ToList();

                    if (listCamping.Count != 0 || listPrivateRoom.Count != 0 || listSharedRoom.Count != 0)
                    {
                        //private rooms
                        if (listPrivateRoom.Count != 0)
                        {
                            privateRoomsLayout.IsVisible = true;
                            listPrivateRooms.ItemsSource = listPrivateRoom;
                        }
                        else
                        {
                            privateRoomsLayout.IsVisible = false;
                            listSharedRooms.Padding      = 0;
                        }

                        //shared rooms
                        if (listSharedRoom.Count != 0)
                        {
                            sharedRoomsLayout.IsVisible = true;
                            listSharedRooms.ItemsSource = listSharedRoom;
                        }
                        else
                        {
                            sharedRoomsLayout.IsVisible = false;
                            listCampingRooms.Padding    = 0;
                        }

                        //camping
                        if (listCamping.Count != 0)
                        {
                            campingRoomsLayout.IsVisible = true;
                            listCampingRooms.ItemsSource = listCamping;
                        }
                        else
                        {
                            campingRoomsLayout.IsVisible = false;
                        }

                        notAvailableRoom.IsVisible = false;
                    }
                    else
                    {
                        notAvailableRoom.IsVisible   = true;
                        privateRoomsLayout.IsVisible = false;
                        sharedRoomsLayout.IsVisible  = false;
                        campingRoomsLayout.IsVisible = 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();
            }
        }