cobuild-angular-stack
Version:
Base stack angular sass jade gulp
165 lines (151 loc) • 4.64 kB
JavaScript
(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();
}
})();