Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- global class XC_SpotlightProductsController {
- @RemoteAction
- global static Map<String, Object> getSpotlightProducts(ccrz.cc_RemoteActionContext ctx) {
- ccrz.cc_RemoteActionResult res = ccrz.cc_CallContext.init(ctx);
- String storefront = ctx.storefront;
- Map<String, Object> success = new Map<String, Object>();
- try{
- List<ccrz__E_FeaturedProduct__c> spotlightProducts = [SELECT XC_Template__c,ccrz__Product__c, ccrz__Product__r.XC_Root_Style__c, ccrz__Sequence__c,Id
- FROM ccrz__E_FeaturedProduct__c where ccrz__Type__c = 'Spotlight' and ccrz__Enabled__c= true and ccrz__Storefront__c =:ctx.storefront
- order by ccrz__Sequence__c];
- Set<String> productIds = new Set<String>();
- for(ccrz__E_FeaturedProduct__c spotlight : spotlightProducts){
- productIds.add(spotlight.ccrz__Product__c);
- }
- Map<Id, ccrz__E_Product__c> products = new Map<Id, ccrz__E_Product__c>([SELECT Id, XC_Root_Style__c, XC_ColorSwatchURI__c, XC_Color__c, XC_ColorName__c, XC_ColorFamily__c FROM ccrz__E_Product__c
- where Id in :productIds]);
- Map<String, ProductData> productToProductData = new Map<String, ProductData>();
- List<ccrz__E_ProductMedia__c> productMedias = [select id, ccrz__MediaType__c, ccrz__URI__c, ccrz__Product__c from ccrz__E_ProductMedia__c
- where ccrz__Product__c in:products.keySet() and ccrz__MediaType__c in( 'Product Image', 'Alternate Image')
- order by ccrz__MediaType__c asc];
- for(ccrz__E_FeaturedProduct__c spotlightProduct : spotlightProducts){
- for(ccrz__E_ProductMedia__c media : productMedias) {
- if (spotlightProduct.ccrz__Product__c == media.ccrz__Product__c) {
- ProductData productData = productToProductData.get(spotlightProduct.ccrz__Product__c);
- if (productData == null) {
- productData = new ProductData();
- }
- if (spotlightProduct.XC_Template__c == 'Footwear') {
- if (media.ccrz__MediaType__c == 'Product Image') {
- productData = checkImages(productData, media.ccrz__URI__c, true);
- } else if (media.ccrz__MediaType__c == 'Alternate Image') {
- productData = checkAlternates(productData, media.ccrz__URI__c);
- }
- } else if (spotlightProduct.XC_Template__c == 'Other') {
- if (media.ccrz__MediaType__c == 'Product Image') {
- productData = checkImages(productData, media.ccrz__URI__c, false);
- }
- }
- productToProductData.put(spotlightProduct.ccrz__Product__c, productData);
- }
- }
- }
- success.put('success', true);
- success.put('products', products);
- success.put('productMedias', productMedias);
- success.put('spotlightProducts', spotlightProducts);
- success.put('productToProductData', productToProductData);
- system.debug(JSON.serialize(products));
- }catch(Exception e){
- success.put('success', false);
- success.put('error ', e.getMessage() + ': ' + e.getStackTraceString());
- system.debug(success);
- }
- return success;
- }
- public static ProductData checkImages(ProductData productData, String value, Boolean isFootwear){
- if(String.isNotBlank(productData.productImage)){
- if(isFootwear){
- productData = checkAlternates(productData, value);
- }
- }
- else{
- productData.productImage = value;
- }
- return productData;
- }
- public static ProductData checkAlternates(ProductData productData, String value){
- if(String.isNotBlank(productData.alternateImage1)){
- productData.alternateImage2 = value;
- }
- else{
- productData.alternateImage1 = value;
- }
- return productData;
- }
- public class ProductData{
- public String productImage{get;set;}
- public String alternateImage1{get;set;}
- public String alternateImage2{get;set;}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement