app.controller('ricercaFilialiCtrl', 
function ($scope,$mdDialog,Banche, utilsSvc, locals) {
	
	$scope.searchText = locals.istituto;
	
	$scope.istituto = locals.istituto;
	$scope.permettiCreazione = false;
	$scope.filiali=[];
	if (typeof locals.permettiCreazione!="undefined")
		$scope.permettiCreazione = locals.permettiCreazione;
	
	$scope.filter = {
			abi:locals.abi,
			cab: locals.cab,
			bic:'',
			agenzia:'',
			indirizzo:'',
			localita:'',
			comune:'',
			tipoRicerca:0,
			provincia:'',
			cap:''				
	}	
	
	$scope.getGridItemHeight = function() {
		return utilsSvc.getGridWithButtonHeight();
	}
	
	$scope.selectFiliale = function(filiale) {
		if (!$scope.permettiCreazione)
			$mdDialog.hide($scope.filiali[filiale]);
	}
	
	$scope.cancelDialog = function() {
    	$mdDialog.cancel();
    }
    
	
	$scope.cercaIstituto = function() {
		return $scope.ricercaIstitutoChange();
	}

	
	$scope.ricercaIstitutoChange = function() {
		return Banche.AutocompleteIstituti({filter:$scope.searchText}).$promise;
	}
	
	$scope.trovaBancaDaAbi = function() {
		if ($scope.filter.abi && $scope.filter.abi!='')
			Banche.GetByAbi({abi: $scope.filter.abi}).$promise.then(
				function(data) {
					$scope.istituto = data;
					$scope.istitutoSelezionato = data;
					$scope.searchText = data.descri;
					$scope.cercaIstituto();
				},
				function(err){
					utilsSvc.handleHttpError(err);
				}
			)
	}
	
	
	$scope.selectIstituto = function() {
		if ($scope.istitutoSelezionato!=null) {
			$scope.filter.abi = $scope.istitutoSelezionato.abi;
			$scope.filter.cab = '';
			$scope.filter.bic = $scope.istitutoSelezionato.bic;
			$scope.istituto = $scope.istitutoSelezionato.descri;
			
			$scope.eseguiRicerca();
		}
	}
	
	$scope.nuovaBanca = function() {
		Banche.NuovaBanca().$promise.then(
			function(data) {
				data.descri='';
				$scope.editBanca(data);
			});
	}
	
	$scope.eseguiRicerca = function() {
		Banche.FilterFiliali({},$scope.filter).$promise.then(function(data) {
			$scope.filiali = data;
		},
		function(error) {
			utilsSvc.handleHttpError(error);
		});
	}

	$scope.eseguiRicerca();	
	
	
	$scope.editBanca = function(banca) {
		
		$mdDialog.show({
	        templateUrl: 'templates/banca.html',
	        controller: 'bancaCtrl',
	        locals: banca,
	        multiple: true
	    }).then(function(istituto){
	    	Banche.SaveBanca({},istituto)
	    		.$promise.then(function(res){
	    			$scope.istitutoSelezionato = banca;
	    			if (res.value=="")
	    				utilsSvc.showMessage('Operazione completata');
	    			else
	    				utilsSvc.showMessage(res.value);
	    		});
	    }, function(){
	    	
	    });
		
	}
	
	$scope.nuovoSportello=function(event){
		Banche.NuovoSportello().$promise.then(function(data){
			data.abi = $scope.istitutoSelezionato.abi;
			$scope.filiali.push(data);
			$scope.editSportello($scope.filiali.length-1, event);
		})
	}
	
	$scope.editSportello=function(ndx, event){
		$mdDialog.show({
	        templateUrl: 'templates/filiale.html',
	        controller: 'filialeCtrl',
	        locals: $scope.filiali[ndx],
	        multiple: true
	    }).then(function(filiale){
	    	Banche.SaveFiliale({},filiale)
	    		.$promise.then(function(res){
	    			$scope.eseguiRicerca();	
	    			if (res.value=="")
	    				utilsSvc.showMessage('Operazione completata');
	    			else
	    				utilsSvc.showMessage(res.value);
	    		});
	    }, function(){
	    	
	    });
	}
	
	$scope.deleteFiliale=function(ndx, event){
		utilsSvc.showConfirm('Conferma','Confermi la cancellazione dello sportello?')
			.then(function(){
				Banche.EliminaFiliale({id: $scope.filiali[ndx].id})
				.$promise.then(function(res){
					if (res.value=='')
						$scope.eseguiRicerca();
					else
						utilsSvc.showMessage(res.value);
				})
			})
	}
	
//	if ($scope.searchText!='')
//		$scope.cercaIstituto();	
//	
	
	if (locals.abi && locals.abi!='')
		$scope.trovaBancaDaAbi();
	
})
.controller('bancaCtrl', function($scope,$mdDialog, utilsSvc, locals){
	$scope.banca = locals;

	$scope.confirmDialog=function(){
		
		if (($scope.tipo!=1 && $scope.abiNew=="") ||($scope.tipo==1 && $scope.abiNew!="")) {
			utilsSvc.showMessage('Attenzione, i dati della banca assorbita non sono congruenti');
			return;
		}
		if (($scope.descri=="")) {
			utilsSvc.showMessage('Attenzione, inserire la denominazione della banca');
			return;
		}
		
		$mdDialog.hide($scope.banca);
	}

	
	$scope.cancelDialog=function(){
		$mdDialog.cancel();
	}
	

})
.controller('filialeCtrl', function($scope,$mdDialog, utilsSvc, locals){
	$scope.filiale = locals;

	$scope.confirmDialog=function(){
		
		
		if (($scope.descri=="")) {
			utilsSvc.showMessage('Attenzione, inserire la denominazione della banca');
			return;
		}
		
		$mdDialog.hide($scope.filiale);
	}

	
	$scope.cancelDialog=function(){
		$mdDialog.cancel();
	}
})

;