angular.module('app.controllers', [])
.run(function($rootScope,ThemeService){
	$rootScope.panier={};
	$rootScope.panier.total=0;
	$rootScope.panier.lignes=[];
    ThemeService.all().then(function(data){
		   $rootScope.themes=data;
    });
})
.controller('HomeCtrl', function($scope,$rootScope,ThemeService) {
	$rootScope.selectedTheme={};
	alert("cette page est statique pour la démo du design mais elle ne contient aucune fonctionnalité demandée! choisir un théme et commencer");
})

.controller('LivreCtrl',function($scope,$rootScope,$stateParams,ServiceLivre,ThemeService){
	var idTheme=$stateParams.id;
	var size=6;
	$scope.page=1;
	var typePage='theme';
	$rootScope.selectedTheme={};
    $scope.selectedCategory={};
    $scope.selectedSubCategory={};
    
    $scope.addPanier=function(livre){
    	var ligne={'id':livre.id,'livre':livre,'nb':1,'total':livre.prix};
    	$rootScope.panier.lignes.push(ligne);
    	$rootScope.panier.total+=ligne.total;
    }
    
    function updateLivres(){
    	switch(typePage){
    	case 'theme':ServiceLivre.getByTheme(idTheme,($scope.page-1),size).then(function(data){
			$scope.livres=data;
			$scope.pages=[];
			for(i=1;i<=data.totalPages;i++)
				$scope.pages.push(i);
		});break;
    	case 'category':ServiceLivre.getByCategory(category.id,($scope.page-1),size).then(function(data){
    		$scope.livres=data;
    		$scope.pages=[];
    		for(i=1;i<=data.totalPages;i++)
    			$scope.pages.push(i);
    	});break;
    	case 'subCategory':ServiceLivre.getBySubCategory(subCategory.id,($scope.page-1).page,size).then(function(data){
    		$scope.livres=data;
    		$scope.pages=[];
    		for(i=1;i<=data.totalPages;i++)
    			$scope.pages.push(i);
    	});break;
    	}
    }
    
    $scope.change=function(page){
    	$scope.page=page;
    	updateLivres();
    }
    $scope.previous=function(){
    	if($scope.page>1)
    		$scope.page-=1;
    	else
    		$scope.page=1;
    	updateLivres();
    }
    $scope.next=function(){
    	if($scope.pages.length>$scope.page)
    		$scope.page+=1;
    	else
    		$scope.page=$scope.pages.length;
    	updateLivres();
    	
    }
	ThemeService.get(idTheme).then(function(data){
		$rootScope.selectedTheme = data;
    });
	ServiceLivre.getByTheme(idTheme,($scope.page-1),size).then(function(data){
		$scope.livres=data;
		$scope.pages=[];
		for(i=1;i<=data.totalPages;i++)
			$scope.pages.push(i);
	});
	$scope.all=function(){
		$scope.page=1;
		typePage='theme';
		$scope.selectedCategory={};
	    $scope.selectedSubCategory={};
		ServiceLivre.getByTheme(idTheme,($scope.page-1),size).then(function(data){
			$scope.livres=data;
			$scope.pages=[];
			for(i=1;i<=data.totalPages;i++)
				$scope.pages.push(i);
		});
	}
	
    $scope.selectCategory=function(category){
    	$scope.page=1;
    	typePage='category';
        $scope.selectedCategory=category;
        $scope.selectedSubCategory={};
        ServiceLivre.getByCategory(category.id,($scope.page-1),size).then(function(data){
    		$scope.livres=data;
    		$scope.pages=[];
    		for(i=1;i<=data.totalPages;i++)
    			$scope.pages.push(i);
    	});
    }
    
    $scope.selectSubCategory=function(category,subCategory){
    	$scope.page=1;
    	typePage='subCategory';
        $scope.selectedCategory=category;
        $scope.selectedSubCategory=subCategory;
        ServiceLivre.getBySubCategory(subCategory.id,($scope.page-1),size).then(function(data){
    		$scope.livres=data;
    		$scope.pages=[];
    		for(i=1;i<=data.totalPages;i++)
    			$scope.pages.push(i);
    	});
    }
	
})
.controller('ClientCtrl',function($scope,$state,ServiceClient,$rootScope){
    $rootScope.client={};
    $scope.newClient = {};
    $scope.connect=function(mail,password){
        ServiceClient.authenticate(mail,password).then(function(data){
            if(data.hasOwnProperty('id')){
                $rootScope.client=data;
                $state.go('home');
            }else{
                console.log(data);  
            }
        });   
    }
    
    $scope.inscrire = function(newClient) {
        ServiceClient.inscrire(newClient).then(function(data) {
             if(data.hasOwnProperty('id')){
                $state.go('home');
            }else{
                console.log(data);  
            }
        });
    }
    
})
.controller('PanierCtrl',function($scope,$rootScope){
    
	function updateTotal(){
		$rootScope.panier.total=0;
		$rootScope.panier.lignes.forEach(function(ligne){
			$rootScope.panier.total+=ligne.total;
		})
	}
	
	$scope.change=function(ligne){
    	ligne.total=ligne.livre.prix*ligne.nb;
    	updateTotal();
    }
    $scope.remove=function(ligne){
        for (var index = 0; index < $rootScope.panier.lignes.length; index++) {
            if ($rootScope.panier.lignes[index].id === ligne.id) {
            	$rootScope.panier.lignes.splice(index, 1);
            }
        }
    }
    $scope.inc=function(ligne){
    	ligne.nb+=1;
    	ligne.total=ligne.livre.prix*ligne.nb;
    	updateTotal();
    }
    $scope.dec=function(ligne){
    	if(ligne.nb>1){
    		ligne.nb-=1;
    		ligne.total=ligne.livre.prix*ligne.nb;
    		updateTotal();
    	}
    }
    $scope.update=function(){
    	updateTotal();
    }
    $scope.clean=function(){
    	$rootScope.panier={};
    	$rootScope.panier.total=0;
    }
})
.controller('SearchCtrl',function($scope,$stateParams,ServiceLivre){
	$scope.mc=$stateParams.mc;
	var size=6;
	$scope.page=1;
	updateLivres();
	
	function updateLivres(){
		ServiceLivre.getByMC($scope.mc,($scope.page-1),size).then(function(data){
			$scope.livres=data;
			$scope.pages=[];
			for(i=1;i<=data.totalPages;i++)
				$scope.pages.push(i);
			console.log(data);
		});
	}
	
	  $scope.change=function(page){
	    	$scope.page=page;
	    	updateLivres();
	    }
	    $scope.previous=function(){
	    	if($scope.page>1)
	    		$scope.page-=1;
	    	else
	    		$scope.page=1;
	    	updateLivres();
	    }
	    $scope.next=function(){
	    	if($scope.pages.length>$scope.page)
	    		$scope.page+=1;
	    	else
	    		$scope.page=$scope.pages.length;
	    	updateLivres();
	    }
});