Ejemplo n.º 1
0
        public async Task <IActionResult> Put(int id, [FromBody] Contract.CreateProduct product)
        {
            var request = new GetProductQuery {
                ProductId = id
            };
            bool doesProductExist = await _queryDispatcher.Execute <GetProductQuery, bool>(request).ConfigureAwait(false);

            if (doesProductExist)
            {
                var updateCmd = _mapper.Map <UpdateProductCommand>(product);
                updateCmd.ProductId = id;

                await _commandDispacher.Execute(updateCmd).ConfigureAwait(false);

                return(Ok());
            }

            var createCmd = _mapper.Map <CreateProductCommand>(product);

            await _commandDispacher.Execute(createCmd).ConfigureAwait(false);

            var query = new GetProductQuery {
                ProductId = createCmd.ProductId
            };
            var response = await _queryDispatcher.Execute <GetProductQuery, ProductDetailsResponse>(query).ConfigureAwait(false);

            return(CreatedAtRoute("Get", new { id = createCmd.ProductId }, response.Product));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Post([FromBody] Contract.CreateProduct product)
        {
            var createCmd = _mapper.Map <CreateProductCommand>(product);

            await _commandDispacher.Execute(createCmd);

            var query = new GetProductQuery {
                ProductId = createCmd.ProductId
            };
            var response = await _queryDispatcher.Execute <GetProductQuery, ProductDetailsResponse>(query).ConfigureAwait(false);

            return(CreatedAtRoute("Get", new { id = createCmd.ProductId }, response.Product));
        }
Ejemplo n.º 3
0
        public async Task <ApiResponse <ViewProduct> > Update(Contract.CreateProduct product, int id)
        {
            HttpClient httpClient = GetHttpClient();

            HttpContent content = new StringContent(JsonConvert.SerializeObject(product));

            content.Headers.ContentType.MediaType = "application/json";

            HttpResponseMessage response = await httpClient.PutAsync($"api/product/{id}", content);

            var apiRresponse = new ApiResponse <ViewProduct>()
            {
                HttpStatusCode = response.StatusCode,
                Response       = await HandleResponse <ViewProduct>(response)
            };

            return(apiRresponse);
        }