the-blender
Version:
An automatic and connected cocktail dispenser
289 lines (259 loc) • 8.96 kB
JavaScript
/**
* Each services for the Blender application
*/
angular.module('blenderService', [])
.factory('NavService', ['$rootScope', '$timeout', function($rootScope, $timeout){
$rootScope.nav = {
home: false,
create: false,
setting: false
};
$rootScope.displayGlobalSuccessMessage = false;
$rootScope.displayGlobalErrorMessage = false;
return{
active: function(page){
for(var i in $rootScope.nav){
if(i === page){
$rootScope.nav[i] = true;
}else{
$rootScope.nav[i] = false;
}
};
$rootScope.pageTitle = page;
},
hide: function(){
$rootScope.showNav = false;
},
show: function(){
$rootScope.showNav = true;
},
setSuccessMessage: function(msg) {
$rootScope.displayGlobalSuccessMessage = true;
$rootScope.displayGlobalErrorMessage = false;
$rootScope.globalSuccessMessage = msg;
$timeout(function () {
$rootScope.displayGlobalSuccessMessage = false;
$rootScope.globalSuccessMessage = '';
}, 5000);
},
setErrorMessage: function(msg) {
$rootScope.displayGlobalErrorMessage = true;
$rootScope.displayGlobalSuccessMessage = false;
$rootScope.globalErrorMessage = msg;
$timeout(function () {
$rootScope.displayGlobalErrorMessage = false;
$rootScope.globalErrorMessage = '';
}, 5000);
},
setPageTitle: function(title){
$rootScope.pageTitle = title;
$rootScope.displayGlobalSuccessMessage = false;
$rootScope.displayGlobalErrorMessage = false;
},
setNavCommunityItemTo : function(value, inverse){
$rootScope.server = value;
$rootScope.serverInverse = inverse
}
}
}])
/**
* Service for Session Html5 storage
*/
.factory('SessionService', ['UserModel', 'NavService', function(UserModel, NavService){
return {
/**
* User Session
*/
Users : {
/*
* Set User to session storage
* -> strigify objet and save it with key 'user'
* @param {user} user
*/
set: function(user){
sessionStorage.setItem('user', JSON.stringify(user));
},
/*
* get User to session storage
* -> get key 'user' and JsonParse the string
* -> create a new user
* @return {user} user
*/
get: function(){
var SessionUser = JSON.parse(sessionStorage.getItem('user'));
if(SessionUser == undefined){
return false;
}
user = UserModel.build();
// Voir avec l'ami romain pour fair un truc plus propre :)
if(SessionUser.uuid){
user.setUuid(SessionUser.uuid);
}
if(SessionUser.userName){
user.setUserName(SessionUser.userName);
}
if(SessionUser.email){
user.setEmail(SessionUser.email);
}
if(SessionUser.community){
user.setCommunitys(SessionUser.community);
}
return user;
},
},
Server : {
setCurrent: function(server){
sessionStorage.setItem('server/current', server);
},
getCurrent: function(){
server = sessionStorage.getItem('server/current');
if( server == 'community' ){
NavService.setNavCommunityItemTo('master', 'community');
}else{
NavService.setNavCommunityItemTo('community', 'master');
}
return server;
}
}
}
}])
/**
* Service for Resourse to call api
*/
.factory('ApiService', [
'$resource',
'$http',
'$q',
function($resource, $http, $q){
return {
recipes: function(server){
return $resource(
server.uri + '/recipes',
{uuid:'@id'},
{
query: {
isArray: false,
method: 'GET'
},
save: {
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
method: 'POST'
},
update: {
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
method: 'PUT'
}
});
},
removeRecipe: function(masterUri, recipe) {
var defered = $q.defer();
$http.delete(
masterUri + '/recipes/' + recipe.uuid,
{
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}
)
.success(function(response){
defered.resolve(response);
})
.error(function(response){
defered.fail(response);
});
return defered.promise;
},
blendIt: function(masterUri, recipe){
var defered = $q.defer();
$http.post(
masterUri + '/execute',
'recipe=' + JSON.stringify(recipe),
{
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}
)
.success(function(response){
defered.resolve(response);
})
.error(function(response){
defered.fail(response);
});
return defered.promise;
},
ingredients: function(){
return $resource(
'/api/blender/ingredients/:uuid',
{uuid:'@id'}
);
},
modules: function(){
return $resource(
'/api/blender/modules'
);
},
addModule: function(module){
var defered = $q.defer();
$http.post(
'/api/blender/modules',
'module=' + JSON.stringify(module),
{
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}
)
.success(function(response){
defered.resolve(response);
})
.error(function(response){
defered.fail(response);
});
return defered.promise;
},
editModule: function(module){
var defered = $q.defer();
$http.put(
'/api/blender/modules',
'module=' + JSON.stringify(module),
{
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}
)
.success(function(response){
defered.resolve(response);
})
.error(function(response){
defered.fail(response);
});
return defered.promise;
},
deleteModule: function(module){
var defered = $q.defer();
$http.delete(
'/api/blender/modules/' + module.order,
{
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}
)
.success(function(response){
defered.resolve(response);
})
.error(function(response){
defered.fail(response);
});
return defered.promise;
}
}
}
])
/**
* Service for user
*/
.factory('UserService', ['$http', function($http){
return{
api : {
getAll: function(communityUri, token) {
return $http.get(communityUri + '/users');
},
get: function(communityUri, token, uuid) {
return $http.get(communityUri + '/users/' + uuid);
}
}
}
}])