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)); }
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)); }
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); }