/// <summary>
        /// Get warehouses list by needed parameters. Represents 'getWarehouses' method of 'Address' model.
        /// Documentation: https://devcenter.novaposhta.ua/docs/services/556d7ccaa0fe4f08e8f7ce43/operations/556d8211a0fe4f08e8f7ce45/console
        /// </summary>
        /// <param name="cityName">Name of the city where warehouse located</param>
        /// <param name="cityRef">Warehouse city reference</param>
        /// <param name="settlementRef">Warehouse settlement reference</param>
        /// <param name="warehouseType">Warehouse type reference</param>
        /// <param name="bicycleParking">Has warehouse bicycle parking. 'True' - has parking, 'False' - no parking.</param>
        /// <param name="postFinance">Warehouse post finance cashbox. 'True' - has post finance. 'False' - no post finance.</param>
        /// <param name="posTerminal">Warehouse has POS terminal. 'True' - has termina. 'False' - no terminal.</param>
        /// <param name="page">Response page number. One page contains 500 warehouses.</param>
        /// <returns>List of 'Nova Poshta' service warehouses</returns>
        public virtual IResponseEnvelope <WarehousesGetResponse.Warehouse> GetWarehouses(string cityName     = "", Guid?cityRef        = null, Guid?settlementRef = null, Guid?warehouseType = null,
                                                                                         bool bicycleParking = false, bool postFinance = false, bool posTerminal  = false, int page          = 1)
        {
            var request = new WarehousesGetRequest()
            {
                CityName           = cityName,
                BicycleParking     = bicycleParking ? 1 : 0,
                CityRef            = cityRef,
                PostFinance        = postFinance ? 1 : 0,
                SettlementRef      = settlementRef,
                TypeOfWarehouseRef = warehouseType,
                Page = page
            };

            return(GetWarehouses(request));
        }
        public async Task <IEnumerable <IWarehouseState> > GetAsync(ICriterion filter, IList <string> orders = null, int firstResult = 0, int maxResults = int.MaxValue, IList <string> fields = null)
        {
            IEnumerable <IWarehouseState> states = null;
            var q = new WarehousesGetQuery();

            q.FirstResult = firstResult;
            q.MaxResults  = maxResults;
            q.Sort        = WarehouseProxyUtils.GetOrdersQueryValueString(orders);
            q.Fields      = WarehouseProxyUtils.GetReturnedFieldsQueryValueString(fields, QueryFieldValueSeparator);
            q.Filter      = WarehouseProxyUtils.GetFilterQueryValueString(filter);
            var req = new WarehousesGetRequest();

            req.Query = q;
            var resp = await _ramlClient.Warehouses.Get(req);

            WarehouseProxyUtils.ThrowOnHttpResponseError(resp);
            states = (resp.Content == null) ? null : resp.Content.Select(e => e.ToWarehouseState());
            return(states);
        }
        /// <summary>
        /// Get warehouses list by request parameters.Represents 'getWarehouses' method of 'Address' model.
        /// Documentation: https://devcenter.novaposhta.ua/docs/services/556d7ccaa0fe4f08e8f7ce43/operations/556d8211a0fe4f08e8f7ce45/console
        /// </summary>
        /// <param name="request">Warehouses get request instance</param>
        /// <returns>List of 'Nova Poshta' service warehouses</returns>
        public virtual IResponseEnvelope <WarehousesGetResponse.Warehouse> GetWarehouses(WarehousesGetRequest request)
        {
            var fullRequest = new RequestEnvelope <WarehousesGetRequest>(request)
            {
                ApiKey       = _novaPoshtaGateway.ApiKey,
                CalledMethod = "getWarehouses",
                ModelName    = MODEL
            };

            var response = _novaPoshtaGateway.CreateRequest <WarehousesGetRequest, WarehousesGetResponse>(fullRequest);

            return(response);
        }