public getFilterValuesResponse getFilterValues(getFilterValuesRequest1 request) { string errorMessage = string.Empty; var response = new getFilterValuesResponse(); if (Valid(request, ref errorMessage)) { if (Authenticated(request, ref errorMessage)) { List <string> sizes = new List <string>(); List <string> colors = new List <string>(); List <string> selections = new List <string>(); using (var context = new LAN_AX2012_PRODEntities()) { var products = context.LAN_VW_GETAVAILABLETOSHIP .Where(x => x.ITEMID == request.GetFilterValuesRequest.productID); if (products.Count() == 0) { errorMessage += "200: ProductID not found"; response = new getFilterValuesResponse(); response.GetFilterValuesReply = new GetFilterValuesReply(); response.GetFilterValuesReply.errorMessage = errorMessage; return(response); } colors = products.GroupBy(x => x.INVENTCOLORID).Select(y => y.Key).ToList(); sizes = products.GroupBy(x => x.INVENTSIZEID).Select(y => y.Key).ToList(); } response.GetFilterValuesReply = new GetFilterValuesReply(); response.GetFilterValuesReply.productID = request.GetFilterValuesRequest.productID; response.GetFilterValuesReply.FilterSizeArray = sizes.ToArray(); response.GetFilterValuesReply.FilterColorArray = colors.ToArray(); response.GetFilterValuesReply.FilterSelectionArray = selections.ToArray(); } else { response = new getFilterValuesResponse(); response.GetFilterValuesReply = new GetFilterValuesReply(); response.GetFilterValuesReply.errorMessage = errorMessage; } } else { response = new getFilterValuesResponse(); response.GetFilterValuesReply = new GetFilterValuesReply(); response.GetFilterValuesReply.errorMessage = errorMessage; } return(response); }
public getInventoryLevelsResponse getInventoryLevels(getInventoryLevelsRequest request) { getInventoryLevelsResponse response = new getInventoryLevelsResponse(); string errorMessage = string.Empty; if (Valid(request, ref errorMessage)) { if (Authenticated(request, ref errorMessage)) { string productid = request.Request.productID; string[] filterColors = request.Request.FilterColorArray; string[] filterSize = request.Request.FilterSizeArray; List <ReplyProductVariationInventory> productVariations = new List <ReplyProductVariationInventory>(); List <ReplyProductCompanionInventory> productAlternatives = new List <ReplyProductCompanionInventory>(); //get available to ship //filter based on filter values using (var context = new LAN_AX2012_PRODEntities()) { //get color codes var colorQuery = context.LAN_VW_COLORDATA .Where(x => x.ITEMID == productid && filterColors.Contains(x.NAME)) .GroupBy(y => y.InventColorId) .ToList(); List <string> colorCodes = colorQuery.Select(x => x.Key).ToList(); var availableQuery = context.LAN_VW_GETAVAILABLETOSHIP .Where(x => x.ITEMID == productid); if (availableQuery.Count() == 0) { errorMessage += "200: ProductID not found"; response.Reply = new Reply { errorMessage = errorMessage }; return(response); } if (filterColors.Length > 0) { //check colors availableQuery = availableQuery.Where(x => filterColors.Contains(x.INVENTCOLORID)); if (availableQuery.Count() == 0) { errorMessage += "205: ProductColor not found"; response.Reply = new Reply { errorMessage = errorMessage }; return(response); } } if (filterSize.Length > 0) { //check sizes availableQuery = availableQuery.Where(x => filterSize.Contains(x.INVENTSIZEID)); if (availableQuery.Count() == 0) { errorMessage += "210: ProductSize not found"; response.Reply = new Reply { errorMessage = errorMessage }; return(response); } } var sizeLength = filterSize.Length; var colorLength = filterColors.Length; var skuQuery = context.LAN_VW_SKUMASTERDATA .Where(x => x.ITEMID == productid && (sizeLength == 0 || filterSize.Contains(x.INVENTSIZEID)) && (colorLength == 0 || filterColors.Contains(x.INVENTCOLORID))) .ToList(); foreach (var prod in availableQuery) { var sku = skuQuery.Where(x => x.ITEMID == prod.ITEMID && x.INVENTSIZEID == prod.INVENTSIZEID && x.INVENTCOLORID == prod.INVENTCOLORID) .First(); productVariations.Add(new ReplyProductVariationInventory { partID = productid, partDescription = sku.ItemName, partBrand = sku.DATAAREAID, priceVariance = string.Empty, quantityAvailable = prod.GetAvailToShipQty.ToString(), attributeColor = prod.INVENTCOLORID, attributeSize = prod.INVENTSIZEID, attributeSelection = string.Empty, validTimestamp = DateTime.Now, entryType = "exact" }); switch (sku.SUNTAFITEMSTATUS) { case "DIS": productVariations.Last().customProductMessage = "Discontinued: Supply limited"; break; case "HIS": productVariations.Last().customProductMessage = "No longer available"; break; case "ACT": productVariations.Last().customProductMessage = "Active"; break; case "WSL": productVariations.Last().customProductMessage = "While Supply Lasts"; break; default: productVariations.Last().customProductMessage = string.Empty; break; } } } response.Reply = new Reply { productID = productid, ProductVariationInventoryArray = productVariations.ToArray() }; } else { response.Reply = new Reply { errorMessage = errorMessage }; } } else { response.Reply = new Reply { errorMessage = errorMessage }; } return(response); }