SHARE
TWEET

Untitled

tototototo123 Jul 22nd, 2019 93 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. public PageReference send(){
  2.         system.debug('### START send()');
  3.         String message = '';
  4.         String brand = Constants.ARCBrandName;
  5.         phoneOnlyNumber = phone.replaceALL('[^0-9]*', '');
  6.  
  7.         log.clear();
  8.         try {
  9.             // Fields validation
  10.             detectAttachment = true;
  11.             system.debug('## uploadImageFile1: '+uploadImageFile1);
  12.             system.debug('## uploadImageFile2: '+uploadImageFile2);
  13.             system.debug('## uploadImageFile3: '+uploadImageFile3);
  14.             system.debug('## uploadImageFile4: '+uploadImageFile4);
  15.             system.debug('## uploadImageFile5: '+uploadImageFile5);
  16.             if(uploadImageFile1.VersionData == null && uploadImageFile2.VersionData == null && uploadImageFile3.VersionData == null
  17.                 && uploadImageFile4.VersionData == null && uploadImageFile5.VersionData == null) {
  18.                    detectAttachment = false;
  19.             }
  20.  
  21.             // Captcha management
  22.             if(!checkCaptcha()) {
  23.                 return addErrorPageMessage(Label.ContactFormErrorCaptcha);
  24.             }
  25.  
  26.             // Check fields value
  27.             String fieldsValueErrorMsg = checkFieldsValue();
  28.             if (String.isNotBlank(fieldsValueErrorMsg)) {
  29.                 selectedCountry = country;
  30.                 agreeCondition = false;
  31.                 return addErrorPageMessage(fieldsValueErrorMsg);
  32.             }
  33.            
  34.             // Country setup. If non-logical brand/country combo, default values set.
  35.             //String selectedCountry = (String.isNotBlank(country)) ? Constants.COUNTRY_MAP.get(country) : selectedCountry;
  36.             system.debug('## Country: ' + country);
  37.             system.debug('## Selected Country: ' + selectedCountry);
  38.  
  39.             // Language setup. If non-logical country/language combo, default values set.
  40.             String fullLanguage = Constants.LANGUAGE_MAP.get(language);
  41.             if(language.toLowerCase() == 'zh_cn') {
  42.                 fullLanguage = Constants.LANGUAGE_MAP.get('zh');
  43.             }            
  44.             // Set default Language if empty
  45.             if(String.isBlank(fullLanguage)) {
  46.                 fullLanguage = 'English';
  47.             }
  48.             system.debug('## Language: ' + fullLanguage);
  49.  
  50.             // Insert account + duplicate check (For ARC it's Brand / email)
  51.             Account consumerAccount = null;
  52.             Id accRecordType =  DAL.getRecordTypeId('Account', Constants.ARCAccountRecordType);
  53.             List<Account> existingAccount = [SELECT Id, PersonContactId, PersonHomePhone, Phone, PersonOtherPhone,
  54.                                                 BillingCountry, ShippingCountry, ARCNEWSGLOBAL__c, ARCNEWSOUTDOOR__c, ARCNEWSLEAF__c, ARCNEWSVEILANCE__c, SUULANGUAGECO__c,
  55.                                                 Zipcode__c, DEALERNAME__c, DEALERREFERENCE__c, DEALEREMAILADDRESS__c, SUUCOUNTRY__c
  56.                                                 FROM Account WHERE BRAND__c = :brand and tobedeleted__c = false AND PersonEmail = :email AND RecordTypeId = :accRecordType];
  57.             if(existingAccount.size() == 0){
  58.                 Account newAccount = new Account(FirstName = firstName, LastName = lastName, TYPE__c = 'B2C',
  59.                                                     PersonEmail = email, BRAND__c = brand, PersonHomePhone = phoneOnlyNumber, RecordTypeId = accRecordType,
  60.                                                     SUUCOUNTRY__c = selectedCountry, SUULANGUAGECO__c = fullLanguage, BillingCountry = selectedCountry, ShippingCountry = selectedCountry,
  61.                                                     Zipcode__c = zipCode,
  62.                                                     WARRANTYADDRESSSTREET__c = returnShippingAddress, WARRANTYADDRESSSTREET2__c = returnShippingAddress2  , WARRANTYADDRESSSTATE__c = selectedState,
  63.                                                     WARRANTYADDRESSPOSTALCODE__c = zipCode, WARRANTYADDRESSCITY__c = city, WARRANTYADDRESSCOUNTRY__c = selectedCountry
  64.                                                     );
  65.                 if(isJapan) {
  66.                     newAccount.KANAFIRSTNAME__c = firstName;
  67.                     newAccount.KANALASTNAME__c = lastName;
  68.                 }
  69.                 // Define State
  70.                 if(Constants.COUNTRYSTATE_MAP.get(selectedCountry) != null) {
  71.                     newAccount.WARRANTYADDRESSSTATE__c = selectedState;
  72.                 }
  73.                 // OptIn
  74.                 if(subbrand == Constants.LEAFSUBBrandName) {
  75.                     newAccount.ARCNEWSLEAF__c = optIn;  
  76.                 } else if(subbrand == Constants.URBANSUBBrandName) {
  77.                     newAccount.ARCNEWSVEILANCE__c = optIn;
  78.                 } else {
  79.                     newAccount.ARCNEWSOUTDOOR__c = optIn;
  80.                 }
  81.                 insert newAccount;
  82.                 consumerAccount = [SELECT Id, PersonContactId FROM Account WHERE Id = :newAccount.Id LIMIT 1];
  83.             } else {
  84.                 existingAccount[0].PersonHomePhone = phoneOnlyNumber;
  85.                 existingAccount[0].ShippingCountry = selectedCountry;
  86.                 existingAccount[0].BillingCountry = selectedCountry;
  87.                 existingAccount[0].SUUCOUNTRY__c = selectedCountry;
  88.                 existingAccount[0].ARCNEWSGLOBAL__c = optIn;
  89.                 existingAccount[0].ARCNEWSOUTDOOR__c = optIn;
  90.                 existingAccount[0].Zipcode__c = zipCode;
  91.                 existingAccount[0].WARRANTYADDRESSSTREET__c = returnShippingAddress;
  92.                 existingAccount[0].WARRANTYADDRESSSTREET2__c = returnShippingAddress2;
  93.                 existingAccount[0].WARRANTYADDRESSSTATE__c = selectedState;
  94.                 existingAccount[0].WARRANTYADDRESSCITY__c = city;
  95.                 existingAccount[0].WARRANTYADDRESSCOUNTRY__c = selectedCountry;
  96.                 existingAccount[0].WARRANTYADDRESSPOSTALCODE__c = zipCode;
  97.                 // Define State
  98.                 if(Constants.COUNTRYSTATE_MAP.get(selectedCountry) != null) {
  99.                     existingAccount[0].WARRANTYADDRESSSTATE__c = selectedState;
  100.                 }
  101.                 // OptIn
  102.                 if(subbrand == Constants.LEAFSUBBrandName) {
  103.                     existingAccount[0].ARCNEWSLEAF__c = optIn;  
  104.                 } else if(subbrand == Constants.URBANSUBBrandName) {
  105.                     existingAccount[0].ARCNEWSVEILANCE__c = optIn;
  106.                 } else {
  107.                     existingAccount[0].ARCNEWSOUTDOOR__c = optIn;
  108.                 }
  109.                 update existingAccount[0];
  110.                 consumerAccount = existingAccount[0];
  111.                 language = existingAccount[0].SUULANGUAGECO__c;
  112.             }
  113.             system.debug('## consumerAccount: ' + consumerAccount);
  114.  
  115.             // Insert Case
  116.             Case newCase = new Case(AccountId = consumerAccount.Id,
  117.                                         ContactId = consumerAccount.PersonContactId,
  118.                                         Subject = 'Product Service Request : ' + subbrand,
  119.                                         Description = 'Product Description : ' + productDescription + '\n' + 'Issue Description : ' + productDescriptionIssue,
  120.                                         BRAND__c = brand,
  121.                                         SUBBRAND__c = subbrand,
  122.                                         SUULANGUAGE__c = fullLanguage,
  123.                                         SUUCOUNTRY__c = selectedCountry,
  124.                                         Origin = 'Web Form',
  125.                                         TECHNICALSOURCE__c = 'Web Form',
  126.                                         TOPIC__c = 'After-Sales Service',
  127.                                         TOPICLEVEL2__c = 'Product Service Request',
  128.                                         FormType__c = 'Product Service Request'
  129.                                         //PRODUCT__c = selectedProductModel,
  130.                                     );
  131.             // Define Region Area
  132.             newCase.REGIONAREA__c = DAL.getAreaCode(selectedCountry, Constants.ZONE_COUNTRIES_MAP);
  133.             // Deactivate email for ARC NAM
  134.             if(newCase.REGIONAREA__c == 'NAM') {
  135.                 newCase.BYPASSEMAIL__c = true;
  136.             }
  137.             // Define the record type (Outdoor by default)  
  138.             if(subbrand == Constants.LEAFSUBBrandName) {
  139.                 newCase.RecordTypeId = DAL.getRecordTypeId('Case', Constants.ARCLEAFCaseRecordType);    
  140.             } else if(subbrand == Constants.URBANSUBBrandName) {
  141.                 newCase.RecordTypeId = DAL.getRecordTypeId('Case', Constants.ARCURBANCaseRecordType);    
  142.             } else {
  143.                 newCase.RecordTypeId = DAL.getRecordTypeId('Case', Constants.ARCOutdoorCaseRecordType);
  144.             }
  145.  
  146.             //Fetching the assignment rules on case
  147.             AssignmentRule assignmentR = new AssignmentRule();
  148.             assignmentR = [SELECT id FROM AssignmentRule WHERE SobjectType = 'Case' AND Active = true LIMIT 1];
  149.  
  150.             //Creating the DMLOptions for "Assign using active assignment rules" checkbox
  151.             Database.DMLOptions dmlOpts = new Database.DMLOptions();
  152.             dmlOpts.assignmentRuleHeader.assignmentRuleId = assignmentR.id;
  153.  
  154.             //Setting the DMLOption on Case instance
  155.             newCase.setOptions(dmlOpts);
  156.  
  157.             insert newCase;
  158.             system.debug('## newCase : ' + newCase);
  159.            
  160.             // Insert Files
  161.             if(uploadImageFile1.VersionData != null && uploadImageFile1.Title != null){
  162.                 FormUtils.createFormAttachmentAndLink(uploadImageFile1, newCase.Id);
  163.             }
  164.             if(uploadImageFile2.VersionData != null && uploadImageFile2.Title != null){
  165.                 FormUtils.createFormAttachmentAndLink(uploadImageFile2, newCase.Id);
  166.             }
  167.             if(uploadImageFile3.VersionData != null && uploadImageFile3.Title != null){
  168.                 FormUtils.createFormAttachmentAndLink(uploadImageFile3, newCase.Id);
  169.             }
  170.             if(uploadImageFile4.VersionData != null && uploadImageFile4.Title != null){
  171.                 FormUtils.createFormAttachmentAndLink(uploadImageFile4, newCase.Id);
  172.             }
  173.             if(uploadImageFile5.VersionData != null && uploadImageFile5.Title != null){
  174.                 FormUtils.createFormAttachmentAndLink(uploadImageFile5, newCase.Id);
  175.             }
  176.             clearAllAttachment(false);
  177.  
  178.             // Replace parameter
  179.             newCase = [SELECT Id, CaseNumber FROM Case WHERE Id = :newCase.Id];
  180.             message = Label.ContactFormAfterFill;
  181.             Map<String, String> mapParams = new Map<String, String> {
  182.                 '{!Case.CaseNumber}' => newCase.CaseNumber
  183.             };
  184.             for (String key : mapParams.keySet()) {
  185.                 message = message.replace(key, (mapParams.get(key) == null) ? '' : mapParams.get(key));
  186.             }
  187.             // Display OK message
  188.             isSuccess = true;
  189.             log.addConfirmMessage(message);
  190.             system.debug('### END send()');
  191.             PageReference pageRef = Page.VF_ArcteryxWarrantyForm;
  192.             pageRef.getParameters().put('country', country);
  193.             pageRef.getParameters().put('lang', language);
  194.             pageRef.getParameters().put('marketcode', marketCode);
  195.             pageRef.setRedirect(false);
  196.             return pageRef;
  197.  
  198.         } catch(Exception e){
  199.             system.debug('### ERROR : ' + e.getMessage() + ' ' + e.getTypeName() + ' ' + e.getStackTraceString());  
  200.             return addErrorPageMessage(Label.ErrorUnknownOccured);
  201.         }
  202.     }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top