Index: grails-app/services/com/lemans/ds/qualitycontrol/ProductReviewService.groovy =================================================================== diff -u -rc1bbe11b35c5af6d17d4b61b0de73f588cab57d8 -r5c7ed34994ee21a1053cc48d78a7d504fbf9dca3 --- grails-app/services/com/lemans/ds/qualitycontrol/ProductReviewService.groovy (.../ProductReviewService.groovy) (revision c1bbe11b35c5af6d17d4b61b0de73f588cab57d8) +++ grails-app/services/com/lemans/ds/qualitycontrol/ProductReviewService.groovy (.../ProductReviewService.groovy) (revision 5c7ed34994ee21a1053cc48d78a7d504fbf9dca3) @@ -778,9 +778,7 @@ } Map productDetails = sql().firstRow([productId: productId], PRODUCT_DETAILS) - Map rejectionMessage = sql().firstRow([productId: productId, qcChangeGroupName: "Details"], PRODUCT_REJECTION_MESSAGE) Map globalRejectionMessage = sql().firstRow([productId: productId], PRODUCT_GLOBAL_REJECTION_QUERY) - Map qcProductDetailsByField = morphedProductDetails(qcProductDetails?.groupBy { it.entityField }, productDetails) List mergedData = productDetails.collect { k, v -> new QCDetailsEntity([key: k, value: v] + (qcProductDetailsByField[k]?.first() ?: [:])) } @@ -800,7 +798,15 @@ it.isCreated = true } } - new QCDetailsResponse(mergedData, transformClobToText(rejectionMessage), transformClobToText(globalRejectionMessage) ) + QCDetailsResponse response = new QCDetailsResponse(mergedData, null, transformClobToText(globalRejectionMessage) ) + + if("R" == response?.statusCode) { + Map rejectionMessage = transformClobToText(sql().firstRow([productId: productId, qcChangeGroupName: "Details"], PRODUCT_REJECTION_MESSAGE)) + if(rejectionMessage?.rejectionMessage) { + response.rejectionMessage = rejectionMessage?.rejectionMessage + } + } + response } private Map morphedProductDetails(Map qcLogsByField, Map productDetails) { @@ -835,16 +841,22 @@ QCResponse productParts(Integer productId) { List productParts = sql().rows([productId: productId], PRODUCT_PARTS) List qcProductPartDetails = sql().rows([productId: productId], PRODUCT_PARTS_QC) - Map rejectionMessage = sql().firstRow([productId: productId, qcChangeGroupName: "ProductParts"], PRODUCT_REJECTION_MESSAGE) Map qcProductPartsByProductId = qcProductPartDetails.groupBy({ it.partNumber }) List mergedParts = productParts.collect { new QCProductPart(it + (qcProductPartsByProductId?.getAt(it.partNumber)?.first() ?: [:])) } + qcProductPartDetails.findAll { it.entityField == 'dateDeleted' }.collect { new QCProductPart(it) } - new QCResponse(mergedParts.unique { it.partNumber }, transformClobToText(rejectionMessage)) + QCResponse response = new QCResponse(mergedParts.unique { it.partNumber }, null) + if("R" == response?.statusCode) { + Map rejectionMessage = transformClobToText(sql().firstRow([productId: productId, qcChangeGroupName: "ProductParts"], PRODUCT_REJECTION_MESSAGE)) + if(rejectionMessage?.rejectionMessage) { + response.rejectionMessage = rejectionMessage?.rejectionMessage + } + } + response } List productPartsToQC(Integer productId) { @@ -855,7 +867,6 @@ List productMedia = sql().rows([productId: productId], PRODUCT_MEDIA) Integer productPrimaryMediaId = sql().firstRow([productId: productId], PRODUCT_DETAILS_FOR_MEDIA)?.primaryMediaId List qcProductDetails = sql().rows([productId: productId], PRODUCT_MEDIA_QC) - Map rejectionMessage = sql().firstRow([productId: productId, qcChangeGroupName: "Media"], PRODUCT_REJECTION_MESSAGE) Map qcProductDetailsByMediaEntityId = qcProductDetails.groupBy { it.mediaEntityId } @@ -874,8 +885,15 @@ new QCMediaEntity(it + [entities: [it, (wasPrimary ? productPrimaryMediaIdQC : [:])].findAll(), wasPrimary: wasPrimary]) } - new QCHolderResponse(mergedProducts, transformClobToText(rejectionMessage)) + QCHolderResponse response = new QCHolderResponse(mergedProducts, null) + if("R" == response?.statusCode) { + Map rejectionMessage = transformClobToText(sql().firstRow([productId: productId, qcChangeGroupName: "ProductParts"], PRODUCT_REJECTION_MESSAGE)) + if(rejectionMessage?.rejectionMessage) { + response.rejectionMessage = rejectionMessage?.rejectionMessage + } + } + response } QCHolderResponse productFeatures(Integer productId) { @@ -894,51 +912,80 @@ new QCProductFeature(it + ([entities: qcProductPartsByProductId.getAt(it.productFeatureId)?.getAt(it.featureTypeId)])) } + qcProductFeaturesQc.findAll { it.entityField == 'dateDeleted' }.collect { new QCProductFeature(it + ([entities: [it]])) } - new QCHolderResponse(mergedProducts.sort { it.sequence }, transformClobToText(rejectionMessage) ) + QCHolderResponse response = new QCHolderResponse(mergedProducts.sort { it.sequence }, null ) + + if("R" == response?.statusCode) { + Map rejectionMessage = transformClobToText(sql().firstRow([productId: productId, qcChangeGroupName: "Product Features"], PRODUCT_REJECTION_MESSAGE)) + if(rejectionMessage?.rejectionMessage) { + response.rejectionMessage = rejectionMessage?.rejectionMessage + } + } + response } QCProductAttributeResponse productMerchandising(Integer productId) { List productCategoryAttributes = sql().rows([productId: productId], PRODUCT_CATEGORY_ATTRIBUTES) List categoryAttributeNames = sql().rows([productId: productId], CATEGORY_ATTRIBUTE_NAMES) List productCategoryAttributesQC = sql().rows([productId: productId], PRODUCT_CATEGORY_ATTRIBUTE_NAMES_QC) - Map rejectionMessage = sql().firstRow([productId: productId, qcChangeGroupName: "Merchandising"], PRODUCT_REJECTION_MESSAGE) Map productCategoryAttributesByCategoryAttributeId = productCategoryAttributesQC.groupBy({ it.categoryAttributeId }) List mergedProductCategoryAttributes = productCategoryAttributes.collect { new QCProductAttribute(([entities: productCategoryAttributesByCategoryAttributeId?.getAt(it.categoryAttributeId)]) + it) } - new QCProductAttributeResponse(categoryAttributeNames, mergedProductCategoryAttributes, transformClobToText(rejectionMessage)) + QCProductAttributeResponse response =new QCProductAttributeResponse(categoryAttributeNames, mergedProductCategoryAttributes, null) + + if("R" == response?.statusCode) { + Map rejectionMessage = transformClobToText(sql().firstRow([productId: productId, qcChangeGroupName: "Merchandising"], PRODUCT_REJECTION_MESSAGE)) + if(rejectionMessage?.rejectionMessage) { + response.rejectionMessage = rejectionMessage?.rejectionMessage + } + } + response } QCRelatedResponse relatedProducts(Integer productId) { List relatedProducts = sql().rows([productId: productId], RELATED_PRODUCTS) List productAssociationTypes = sql().rows(PRODUCT_ASSOCIATION_TYPES) List qcProductDetails = sql().rows([productId: productId], RELATED_PRODUCTS_QC) - Map rejectionMessage = sql().firstRow([productId: productId, qcChangeGroupName: "Related Products"], PRODUCT_REJECTION_MESSAGE) Map qcProductDetailsByRelatedProductId = qcProductDetails.groupBy({ it.relatedProductId }, { it.associationTypeId }) List mergedProducts = relatedProducts.collect { new QCProductAssociation(it + (qcProductDetailsByRelatedProductId.getAt(it.relatedProductId)?.getAt(it.associationTypeId)?.first() ?: [:])) } + qcProductDetails.findAll { it.entityField == 'dateDeleted' }.collect { new QCProductAssociation(it) } - new QCRelatedResponse(mergedProducts, productAssociationTypes, transformClobToText(rejectionMessage)) + QCRelatedResponse response = new QCRelatedResponse(mergedProducts, productAssociationTypes, null) + + if("R" == response?.statusCode) { + Map rejectionMessage = transformClobToText(sql().firstRow([productId: productId, qcChangeGroupName: "Related Products"], PRODUCT_REJECTION_MESSAGE)) + if(rejectionMessage?.rejectionMessage) { + response.rejectionMessage = rejectionMessage?.rejectionMessage + } + } + response } QCResponse productPublicationCategories(Integer productId) { List productPublicationCategories = sql().rows([productId: productId], PRODUCT_PUBLICATION_CATEGORIES) List qcProductPublicationCategoriesQC = sql().rows([productId: productId], PRODUCT_PUBLICATION_CATEGORIES_QC) - Map rejectionMessage = sql().firstRow([productId: productId, qcChangeGroupName: "Publication Categories"], PRODUCT_REJECTION_MESSAGE) Map qcProductPublicationsByCategoryId = qcProductPublicationCategoriesQC.groupBy({ it.categoryId }) List mergedProducts = productPublicationCategories.collect { new QCPublicationCategories(it + (qcProductPublicationsByCategoryId.getAt(it.categoryId)?.first() ?: [:])) } + qcProductPublicationCategoriesQC.findAll { it.entityField == 'dateDeleted' }.collect { new QCPublicationCategories(it) } - new QCResponse(mergedProducts, transformClobToText(rejectionMessage)) + QCResponse response = new QCResponse(mergedProducts, null) + + if("R" == response?.statusCode) { + Map rejectionMessage = transformClobToText(sql().firstRow([productId: productId, qcChangeGroupName: "Publication Categories"], PRODUCT_REJECTION_MESSAGE)) + if(rejectionMessage?.rejectionMessage) { + response.rejectionMessage = rejectionMessage?.rejectionMessage + } + } + response } Map productSplits(Integer productId) { @@ -948,23 +995,37 @@ QCResponse productKeywords(Integer productId) { List productKeywords = sql().rows([productId: productId], PRODUCT_KEYWORDS) List qcProductKeywords = sql().rows([productId: productId], QC_PRODUCT_KEYWORDS) - Map rejectionMessage = sql().firstRow([productId: productId, qcChangeGroupName: "Keywords"], PRODUCT_REJECTION_MESSAGE) Map groupedProducts = qcProductKeywords.groupBy { it.keywordId } List mergedProductKeywords = productKeywords.collect { new QCProductKeyword(it + (groupedProducts[it?.keywordId]?.first() ?: [:])) } + qcProductKeywords.findAll { it.entityField == 'dateDeleted' }.collect { new QCProductKeyword(it) } - new QCResponse(mergedProductKeywords, transformClobToText(rejectionMessage)) + QCResponse response = new QCResponse(mergedProductKeywords, null) + + if("R" == response?.statusCode) { + Map rejectionMessage = transformClobToText(sql().firstRow([productId: productId, qcChangeGroupName: "Keywords"], PRODUCT_REJECTION_MESSAGE)) + if(rejectionMessage?.rejectionMessage) { + response.rejectionMessage = rejectionMessage?.rejectionMessage + } + } + response } QCResponse productSizeCharts(Integer productId) { List productSizeCharts = sql().rows([productId: productId], PRODUCT_SIZE_CHARTS) List qcProductSizeCharts = sql().rows([productId: productId], QC_PRODUCT_SIZE_CHARTS) - Map rejectionMessage = sql().firstRow([productId: productId, qcChangeGroupName: "Size Chart"], PRODUCT_REJECTION_MESSAGE) Map groupedProducts = qcProductSizeCharts.groupBy { it.sizeChartId } List mergedProductSizeCharts = productSizeCharts.collect { new QCProductSizeChart(it + (groupedProducts[it?.sizeChartId]?.first() ?: [:])) } + qcProductSizeCharts.findAll { it.entityField == 'dateDeleted' }.collect { new QCProductSizeChart(it) } - new QCResponse(mergedProductSizeCharts, transformClobToText(rejectionMessage)) + QCResponse response = new QCResponse(mergedProductSizeCharts,null) + + if("R" == response?.statusCode) { + Map rejectionMessage = transformClobToText(sql().firstRow([productId: productId, qcChangeGroupName: "Size Chart"], PRODUCT_REJECTION_MESSAGE)) + if(rejectionMessage?.rejectionMessage) { + response.rejectionMessage = rejectionMessage?.rejectionMessage + } + } + response } private Map transformClobToText(Map data) {