UNPKG

cobuild-angular-stack

Version:

Base stack angular sass jade gulp

165 lines (151 loc) 4.64 kB
(function() { 'use strict'; angular.module('uniko.authSatellizer').controller('experienceCtrl', experienceCtrl); experienceCtrl.$inject = ['$scope','$rootScope', 'Onboarding', '$q', 'CoupleAccount', '$state', 'Experiences'] function experienceCtrl($scope,$rootScope, Onboarding, $q, CoupleAccount, $state, Experiences) { var stepCtrl = this; $scope.account = CoupleAccount.getCurrent(); $scope.experiences = {}; $scope.steps = [0]; $scope.selectExperiences = []; $scope.hidden = true; $scope.categorySelected = null; $scope.activeStep = "step-0"; $scope.init = function() { $scope.hidden = false; var regalos = 4; Experiences.find({ filter: { where: { status: true }, order: 'order DESC' }, }).$promise.then(function(experiences) { var experiences_array = []; var steps = 0; var index = 0; if(experiences.length > 1){ regalos = 4; } _.each(experiences, function(experience) { if(experiences_array.length == 0 ) { if(!experiences_array.esteps) { experiences_array[steps] = { id: 'step-'+steps, number: steps, rows: [{ experiences: [experience] }] } } } else if(experiences_array[steps].rows.length < 3) { if(experiences_array[steps].rows[index] && experiences_array[steps].rows[index].experiences.length < regalos ) { experiences_array[steps].rows[index].experiences.push(experience); } else { index ++; experiences_array[steps].rows[index] = { experiences: [experience] } } } else { steps ++; $scope.steps.push(steps); experiences_array[steps] = { id: 'step-'+steps, rows: [{ experiences: [experience] }] } } }) $scope.experiences = experiences_array; }, function(err) { console.log(err); }).catch(function(err) { console.log(err); }); } $scope.add = function(experience) { experience.select = true; var isExist = _.find($scope.selectExperiences, function(experience_in) { return experience_in.id == experience.id }) console.log(isExist); if(!isExist) { $scope.selectExperiences.push(experience); } else { $scope.remove(experience); } } $scope.remove = function(experience) { experience.select = false; var experiences = []; _.each($scope.selectExperiences, function(exp) { if(exp.id != experience.id) experiences.push(exp); }); $scope.selectExperiences = experiences; } $scope.save = function(onboarding, step) { var articles_all = []; var regalos = 5; if($scope.selectExperiences.length == 1){ regalos = 12 } if($scope.selectExperiences.length > 1){ regalos = 6 } if($scope.selectExperiences.length > 2){ regalos = 4 } _.each($scope.selectExperiences, function(experience) { var articles = []; if(experience.productsRegistryList.length < regalos ) { _.each(experience.productsRegistryList, function(article) { var art = _.find(articles_all, function(r) { return r.id == experience.productsRegistryList[myNumeroAleatorio].id; }); if(!art) { articles_all.push(article); } }); } else { var articles_aleatorio = []; while(articles.length < regalos) { var myNumeroAleatorio = Math.floor(Math.random()*experience.productsRegistryList.length); var art = _.find(articles_all, function(r) { return r.id == experience.productsRegistryList[myNumeroAleatorio].id; }); if(!art) { articles.push(experience.productsRegistryList[myNumeroAleatorio]); articles_all.push(experience.productsRegistryList[myNumeroAleatorio]); } } } }); CoupleAccount.prototype$updateAttributes({id: $scope.account.id},{productsRegistryList: articles_all, experience:true}).$promise.then(function(account) { $q(function () { stepCtrl.moveNext(onboarding, step); }); }) } $scope.setUrl = function (url) { $scope.account.currentUrl = url; $scope.account.url = url; }; $scope.$watch('account.url', function () { $scope.urlInvalid = false; }); stepCtrl.moveNext = function (onboarding, step) { var index = onboarding.steps.indexOf(step); if (onboarding.steps.length - 1 === index) { return Onboarding.end(onboarding.id); } onboarding.stepActive++; }; stepCtrl.sendNext = function (onboarding, step) { $scope.save(onboarding, step) } $scope.init(); } })();