Exemple #1
0
        public async Task <IActionResult> AddBike([FromBody] AddUpdateBikeRequest newBikeDetails)
        {
            if (!ModelState.IsValid)
            {
                return(new ContentResult
                {
                    StatusCode = (int)HttpStatusCode.BadRequest,
                    Content = JsonConvert.SerializeObject(ModelState.Values.SelectMany(v => v.Errors))
                });
            }

            // Ensure ownerUserId for bike is valid
            var checkOwnerResponse = await this._CheckOwnerUserIdIsValidVendor(newBikeDetails.OwnerUserId);

            if (checkOwnerResponse != null)
            {
                return(checkOwnerResponse);
            }

            string addBikeUrl = $"http://{_bikesService}/api/bikes";
            var    response   = await HttpHelper.PostAsync(addBikeUrl, new StringContent(
                                                               JsonConvert.SerializeObject(newBikeDetails), Encoding.UTF8, "application/json"), this.Request);

            if (response.IsSuccessStatusCode)
            {
                var createdBike = JsonConvert.DeserializeObject <Bike>(await response.Content.ReadAsStringAsync());
                return(new JsonResult(createdBike));
            }

            return(await HttpHelper.ReturnResponseResult(response));
        }
Exemple #2
0
        public async Task <IActionResult> UpdateBike(string bikeId, [FromBody] AddUpdateBikeRequest newBikeDetails)
        {
            // Ensure ownerUserId for bike is valid
            var checkOwnerResponse = await this._CheckOwnerUserIdIsValidVendor(newBikeDetails.OwnerUserId);

            if (checkOwnerResponse != null)
            {
                return(checkOwnerResponse);
            }

            string getUpdateBikeUrl = $"http://{_bikesService}/api/bikes/{bikeId}";
            var    getResponse      = await HttpHelper.GetAsync(getUpdateBikeUrl, this.Request);

            if (getResponse.IsSuccessStatusCode)
            {
                var existingBikeDetails = JsonConvert.DeserializeObject <Bike>(await getResponse.Content.ReadAsStringAsync());
                var updatedBikeDetails  = new AddUpdateBikeRequest
                {
                    Manufacturer           = string.IsNullOrEmpty(newBikeDetails.Manufacturer) ? existingBikeDetails.Manufacturer : newBikeDetails.Manufacturer,
                    Model                  = string.IsNullOrEmpty(newBikeDetails.Model) ? existingBikeDetails.Model : newBikeDetails.Model,
                    HourlyCost             = newBikeDetails.HourlyCost ?? existingBikeDetails.HourlyCost,
                    ImageUrl               = newBikeDetails.ImageUrl ?? existingBikeDetails.ImageUrl,
                    Type                   = string.IsNullOrEmpty(newBikeDetails.Type) ? existingBikeDetails.Type : newBikeDetails.Type,
                    SuitableHeightInMeters = newBikeDetails.SuitableHeightInMeters ?? existingBikeDetails.SuitableHeightInMeters,
                    MaximumWeightInKg      = newBikeDetails.MaximumWeightInKg ?? existingBikeDetails.MaximumWeightInKg,
                    OwnerUserId            = existingBikeDetails.OwnerUserId
                };

                var updateResponse = await HttpHelper.PutAsync(getUpdateBikeUrl, new StringContent(
                                                                   JsonConvert.SerializeObject(updatedBikeDetails), Encoding.UTF8, "application/json"), this.Request);

                if (updateResponse.IsSuccessStatusCode)
                {
                    return(await GetBike(bikeId));
                }

                return(await HttpHelper.ReturnResponseResult(updateResponse));
            }

            return(await HttpHelper.ReturnResponseResult(getResponse));
        }