/*
* @Author: Ali
* @Date: 2017-02-23 22:56:03
* @Last Modified by: Ali
* @Last Modified time: 2017-02-28 09:39:39
*/
(function(){
/**
* secretSantaCtrl Controller that get info from santa factory.
*
* @function secretSantaCtrl
* @param {Object} $scope provided by AngularJs
* @param {Object} santa injected factory written by me.
*/
'use strict';
angular.module('secretSantaApp').controller('secretSantaCtrl', ['$scope', 'santa', function($scope, santa){
/**
* It used for initialization of app at the begining and after each change.
*
* @function init
*/
function init(){
$scope.santas = 0;
$scope.lastSanta = "N/A";
$scope.match = "N/A";
$scope.passAlert = false;
$scope.admin = {};
$scope.santa = {};
$scope.getter = {};
$scope.terminate = false;
santa.lastSanta().then(function(response){
var lastSanta = "N/A";
if (response.data.length !== 0 ) {
var last = response.data[0].name;
lastSanta = last.charAt(0).toUpperCase() + last.substr(1).toLowerCase();
}
$scope.lastSanta = "" || lastSanta;
});
santa.count().then(function(response){
$scope.santas = response.data;
});
}
init();
/**
* Adds new Santa, and send it server and mongoDB. It is connected to the SIGNUP BUTTOM
*
* @function addSanta
*/
$scope.addSanta = function(){
/** Name for Santa which is assumed to be unique
* @default ""
* @type {string}
*/
$scope.santa.name = $scope.santa.name || '';
/** @default "" */
$scope.santa.spouse = $scope.santa.spouse || '';
if ($scope.santa.name.length !==0){
// console.log("addSanta: Good to talk to server");
santa.post($scope.santa).then(function(response){
// console.log('New Santa is added');
});
}
init();
};
/**
* If admin enter right email/password the he/she can terminate this round of giftitng. It is connected to the TERMINATE &MAKE MATCHES
* email is admin@smith.com
* password is 123
* @function makeMatch
*/
$scope.makeMatch = function(){
/** @default "" */
$scope.admin.email = $scope.admin.email || '';
/** @default "" */
$scope.admin.pass = $scope.admin.pass || '';
santa.matchMaker($scope.admin).then(function(response){
$scope.passAlert = false;
$scope.terminate = true;
},function(error){
console.log('Error from server: %s', error.data);
$scope.passAlert = true;
});
};
/**
* If admin enter right email/password the he/she can DELETE this round of giftitng. It is connected to the DELETE & RENEW button
* email is admin@smith.com
* password is 123
*
* @function deleteRenew
*/
$scope.deleteRenew = function(){
/** @default "" */
$scope.admin.email = $scope.admin.email || '';
/** @default "" */
$scope.admin.pass = $scope.admin.pass || '';
santa.removeFamily($scope.admin).then(function(response){
$scope.terminate = false;
$scope.passAlert = false;
init();
}, function(error){
console.log('Error from server: %s', error.data);
$scope.passAlert = true;
});
};
/**
* Shows the Santa his/her match to buy gift
*
* @function getMatch
*/
$scope.getMatch = function(){
/** @default "" */
$scope.gifter.name = $scope.gifter.name || '';
if ($scope.gifter.name.length !==0){
santa.getMatch($scope.gifter).then(function(response){
if (response.data) {
if (response.data.match.length !==0){
$scope.match = response.data.match;
$scope.matchalert = false;
}else{
$scope.match = "N/A";
$scope.matchalert = false;
}
}else{
$scope.matchalert = true;
}
});
}
};
}]);
}());