1"use strict"; 2angular 3 .module("sfmStore") 4 .controller("softwareController", function( 5 $stateParams, 6 $products, 7 $order, 8 $state, 9 $analytics, 10 $sfmRerouteFM, 11 prepProduct, 12 prepPackageProducts 13 ) { 14 var vm = this; 15 vm.order = $order; 16 vm.analytics = $analytics; 17 vm.profile = $order.getProfile(); 18 vm.product = prepProduct.data.data; 19 vm.packageProducts = prepPackageProducts.data.data; 20 // vm.message = false; 21 // send a view_item event whenever this controller is invoked 22 dataLayer.push({ ecommerce: null }); 23 dataLayer.push({ 24 'event': 'view_item', 25 'ecommerce': { 26 'items': [{ 27 'item_name': vm.product.title, 28 'item_id': String(vm.product.id), 29 'item_category': String(vm.product.category_id), 30 'currency': "USD", 31 'price': Number(vm.product.cost) 32 }] 33 } 34 }); 35 36 $products 37 .checkSubscriptionStatus($order.getSchool().id, vm.product.id) 38 .then(function(res) { 39 var data = res.data.data || {}; 40 if (data.reroute) { 41 $stateParams.isSoftReroute = data.reroute.soft; 42 $stateParams.rerouteMessage = data.reroute.message; 43 $sfmRerouteFM.showRerouteModal(); 44 } 45 }); 46 47 vm.addToCart = function() { 48 var item = vm.product; 49 if (vm.packageProducts.length) { item.subItems = vm.packageProducts; } 50 $products 51 .checkSubscriptionStatus($order.getSchool().id, item.id) 52 .then(function(res) { 53 var data = res.data.data || {}; 54 var stateParams = {}; 55 if (!angular.isUndefined(data.message) && data.message !== null) { 56 stateParams.warnings = data; 57 } 58 if ( 59 !angular.isUndefined(data.allow_purchase) && 60 data.allow_purchase 61 ) { 62 item.qty = 1; 63 stateParams.previousPage = vm.product.category_id; 64 stateParams.itemAdded = item; 65 item.renewal = data.renewal 66 item.trial = data.trial || "0" 67 var response = $order.addOrderItem(item); 68 if (response.success) { 69 dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. 70 dataLayer.push({ 71 'event': 'add_to_cart', 72 'ecommerce': { 73 'items': [{ 74 'item_name': item.title, 75 'item_id': String(item.id), 76 'item_category': String(item.category_id), 77 'quantity': item.qty 78 }] 79 } 80 }); 81 } else { 82 stateParams.itemAdded = ""; 83 stateParams.cartValid = false; 84 stateParams.warnings = [ 85 { 86 message: response.error 87 } 88 ]; 89 } 90 91 $state.go("cart", stateParams); 92 } else { 93 stateParams.previousPage = vm.product.category_id; 94 stateParams.itemAdded = null; 95 $state.go("cart", stateParams); 96 } 97 }); 98 }; 99 100 $analytics.pushVirtualPageview(window.location.href); 101 });
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.