public async Task <ActionResult> GetStoreAsync() { try { await _topicBus.SendAsync(TopicType.Log.ToString(), "Calling Get Store.."); var store = await _storeService.CheckStoreStatus(); if (store != null) { return(Ok(store)); } else { return(NotFound()); } } catch (Exception ex) { await _topicBus.SendAsync(TopicType.Log.ToString(), ex.ToString()); return(BadRequest(ex)); } finally { await _topicBus.SendAsync(TopicType.Log.ToString(), "Returning Get Store.."); } }
public async Task <ActionResult> GetProductAsync([FromQuery] ProductRequest productRequest) { try { await _topicBus.SendAsync(TopicType.Log.ToString(), "Calling Get Products.."); var products = await _productService.GetProductsAsync(productRequest); if (products != null) { return(Ok(_mapper.Map <IEnumerable <ProductResponse> >(products))); } else { return(NotFound()); } } catch (Exception ex) { await _topicBus.SendAsync(TopicType.Log.ToString(), ex.ToString()); return(BadRequest(ex)); } finally { await _topicBus.SendAsync(TopicType.Log.ToString(), "Returning Get Products.."); } }
public async Task <ActionResult> GetAreasAsync() { try { await _topicBus.SendAsync(TopicType.Log.ToString(), "Calling Get Areas.."); var response = await _areaService.GetAreaAsync(); if (response != null) { return(Ok(_mapper.Map <AreasResponse>(response))); } else { return(NotFound()); } } catch (Exception ex) { await _topicBus.SendAsync(TopicType.Log.ToString(), ex.ToString()); return(BadRequest(ex)); } finally { await _topicBus.SendAsync(TopicType.Log.ToString(), "Returning Get Areas.."); } }
private Task HandleProduct(Message message, CancellationToken arg2) { var logs = new List <string> { $"message Label: {message.Label}", $"message CorrelationId: {message.CorrelationId}" }; var json = Encoding.UTF8.GetString(message.Body); var product = JsonConvert.DeserializeObject <ProductToGet>(json); _product.Upsert(product); logs.Add($"Message Received"); _topicBus.SendAsync(_option.ServiceBus.TopicLog, logs); return(Task.CompletedTask); }
public async Task <Ready> CheckStoreStatus() { var products = await _productService.GetProductsAsync(new ProductRequest() { StoreName = "Los Angeles - Pasadena" }); var area = await _areaService.GetAreaAsync(); if ((products != null && products.Count() > 0) && area != null) { var storeId = products.FirstOrDefault().StoreId; await _topicBus.SendAsync(TopicType.StoreCatalogReady.GetDescription(), $"Store: {storeId}. Status: {true}"); return(new Ready() { IsReady = true, StoreId = storeId }); } return(null); }
public async Task <IEnumerable <ProductToGet> > GetProductsAsync(ProductRequest productRequest) { var cacheOptions = new MemoryCacheEntryOptions() { AbsoluteExpiration = DateTime.Now.AddHours(6) }; if (!_memoryCache.TryGetValue(_cacheName, out Dictionary <Guid, ProductToGet> products)) { using (var httpClient = _httpClientFactory.CreateClient("Products")) { var response = await httpClient.GetAsync($"api/products?storeName={productRequest.StoreName}"); if (response.StatusCode == HttpStatusCode.OK) { var productsToGet = await response.Content.ReadAsJsonAsync <IEnumerable <ProductToGet> >(); products = productsToGet.ToDictionary(p => p.ProductId, p => p); } if (null != products && products.Count > 0) { _memoryCache.Set(_cacheName, products, cacheOptions); } } } if (productRequest.Restrictions?.Count > 0) { using (var httpClient = _httpClientFactory.CreateClient("Ingredients")) { var storeId = products.Values.FirstOrDefault().StoreId; var restrictionsParameters = string.Empty; foreach (var restriction in productRequest.Restrictions) { restrictionsParameters += $"&Restrictions={restriction}"; } var response = await httpClient.GetAsync($"api/products/byrestrictions/?StoreId=${storeId}{restrictionsParameters}"); if (response.StatusCode == HttpStatusCode.OK) { var productsRestriction = await response.Content.ReadAsJsonAsync <IEnumerable <ProductRestrictionResponse> >(); foreach (var product in productsRestriction) { var p = products[product.ProductId]; p.Items = product.Ingredients.Select(i => new ItemToGet() { Name = i }).ToList(); products[product.ProductId] = p; } _memoryCache.Set(_cacheName, products, cacheOptions); var productsId = productsRestriction.Select(p => p.ProductId); await _topicBus.SendAsync(TopicType.UserWithLessOffer.GetDescription(), "Products with restriction find!"); return(products.Where(p => productsId.Contains(p.Key)).Select(v => v.Value)); } } } return(products.Values); }