private void CreateCatalogEntry(FulfilmentDataResponse listItem, List <Tuple <string, string> > orderPreference, ICatalog031Builder catBuilder, SalesCatalogueDataResponse salesCatalogueDataResponse, SalesCatalogueProductResponse salesCatalogueProductResponse, string exchangeSetRootPath, string batchId, string correlationId) { int length = 2; listItem.Files = listItem.Files.OrderByDescending( item => Enumerable.Reverse(orderPreference).ToList().IndexOf(new Tuple <string, string>(item.MimeType.ToLower(), GetMimeType(item.Filename.ToLower(), item.MimeType.ToLower(), batchId, correlationId)))); foreach (var item in listItem.Files) { string fileLocation = Path.Combine(listItem.ProductName.Substring(0, length), listItem.ProductName, listItem.EditionNumber.ToString(), listItem.UpdateNumber.ToString(), item.Filename); string mimeType = GetMimeType(item.Filename.ToLower(), item.MimeType.ToLower(), batchId, correlationId); string comment = string.Empty; BoundingRectangle boundingRectangle = new BoundingRectangle(); if (mimeType == "BIN") { var salescatalogProduct = salesCatalogueDataResponse.ResponseBody.Where(s => s.ProductName == listItem.ProductName).Select(s => s).FirstOrDefault(); if (salescatalogProduct == null) { logger.LogError(EventIds.SalesCatalogueServiceCatalogueDataNotFoundForProduct.ToEventId(), "Error in sales catalogue service catalogue end point when product details not found for Product:{ProductName} and BatchId:{batchId} and _X-Correlation-ID:{CorrelationId}", listItem.ProductName, batchId, correlationId); throw new FulfilmentException(EventIds.SalesCatalogueServiceCatalogueDataNotFoundForProduct.ToEventId()); } comment = SetCatalogFileComment(listItem, salescatalogProduct, salesCatalogueProductResponse); boundingRectangle.LatitudeNorth = salescatalogProduct.CellLimitNorthernmostLatitude; boundingRectangle.LatitudeSouth = salescatalogProduct.CellLimitSouthernmostLatitude; boundingRectangle.LongitudeEast = salescatalogProduct.CellLimitEasternmostLatitude; boundingRectangle.LongitudeWest = salescatalogProduct.CellLimitWesternmostLatitude; } catBuilder.Add(new CatalogEntry() { FileLocation = fileLocation, FileLongName = "", Implementation = mimeType, Crc = (mimeType == "BIN") ? item.Attributes.Where(a => a.Key == "s57-CRC").Select(a => a.Value).FirstOrDefault() : GetCrcString(Path.Combine(exchangeSetRootPath, fileLocation)), Comment = comment, BoundingRectangle = boundingRectangle }); } }
private string SetCatalogFileComment(FulfilmentDataResponse listItem, SalesCatalogueDataProductResponse salescatalogProduct, SalesCatalogueProductResponse salesCatalogueProductResponse) { string getIssueAndUpdateDate = null; int? cancelledUpdateNumber = null; var salescatalogProductResponse = salesCatalogueProductResponse.Products.Where(s => s.ProductName == listItem.ProductName).Where(s => s.EditionNumber == listItem.EditionNumber).Select(s => s).FirstOrDefault(); if (salescatalogProductResponse.Dates != null) { var dates = salescatalogProductResponse.Dates.Where(s => s.UpdateNumber == listItem.UpdateNumber).Select(s => s).FirstOrDefault(); getIssueAndUpdateDate = GetIssueAndUpdateDate(dates); } if (salescatalogProductResponse.Cancellation != null) { cancelledUpdateNumber = salescatalogProductResponse.Cancellation.UpdateNumber; } //BoundingRectangle and Comment only required for BIN return(salescatalogProduct.BaseCellEditionNumber == 0 && cancelledUpdateNumber == listItem.UpdateNumber ? $"{fileShareServiceConfig.Value.CommentVersion},EDTN={salescatalogProduct.BaseCellEditionNumber},UPDN={listItem.UpdateNumber},{getIssueAndUpdateDate}" : $"{fileShareServiceConfig.Value.CommentVersion},EDTN={listItem.EditionNumber},UPDN={listItem.UpdateNumber},{getIssueAndUpdateDate}"); }