var userService = angular.module('userService',[]);

userService.factory('userService',
     function($cookies,$rootScope,$http,$location,$q, UserManager) {

        var _currentUser=null;
        var _currentFilter=null;
       
        var _currentSDDFilter = null;
        var userService = {};

        userService.lok = -1;
        userService.lmsg = "";

        
        
        userService.clearFiltroIncassiSDD = function() {
        	_currentFilter=null;
        	$cookies.remove('currentFilter');
        	return userService.getFiltroIncassiSDD();
        }
        
        userService.newFilter = function() {
        	return  {
    			destinatario: '',
    			importo: '',
    			idFunzioneOrdinante:'',
    			statoDisposizioni:'',
    			statoConvalida: '',
    			orderField:'iddisposizione',
    			tipoChiamata: '',
    			idDistintaBanca: 0,
    			idDistintaFlusso: 0,
    			importoDistinta: 0,
    			inErrore: false,
    			codiceClienteDebitore:''
    		};
        }
        
        userService.getFiltroIncassiSDD = function () {
        		
        	if (_currentSDDFilter == null)
        		_currentSDDFilter = userService.newFilter();
        	if (typeof $cookies.get('currentFilter')!="undefined")
        		_currentSDDFilter = JSON.parse($cookies.get('currentFilter'));
        	
        	return _currentSDDFilter;
        }

        userService.setFiltroIncassiSDD = function(filtro) {
        	_currentSDDFilter = filtro;
        	$cookies.put('currentFilter', JSON.stringify(_currentSDDFilter));
        }

        
        userService.hideMenu=function(){
        	document.getElementById('sidenav').style['display'] = 'none';
        	document.getElementById('menu').style['display'] = 'none';
        }
        
        
        userService.validSession = function() {
        	var um = new UserManager();
        	var deferred = $q.defer();

            vm.ValidSession({},  function(response) {
              deferred.resolve(response);
            }, function(e) {
              deferred.reject(e);
            });

            return deferred.promise;

        }
     
        
        userService.getGroupsExt = function(user) {
        	var um = new UserManager();
        	var deferred = $q.defer();

            vm.$AutenticationGroups({ user: user},  function(response) {
              deferred.resolve(response);
            }, function(e) {
              deferred.reject(e);
            });

            return deferred.promise;
        }
        
        userService.setFilter = function(filter) {
        	_currentFilter = filter;        	
        }
        
        userService.getFilter = function() {
        	if (_currentFilter==null)
        		userService.clearFilter();
        	return _currentFilter;        	
        }

        userService.clearFilter = function() {
        	_currentFilter = {
        			funzioneOrdinante: '',
        			tipoDisposizione:'',
        			statoConvalida:'',
        			provenienza:'',
        			statoDisposizione:'',
        			daDistinta:'',
        			aDistinta:'',
        			flagDaDataInserimento: false,
        			daDataInserimento:new Date(),
        			flagADataInserimento: false,
        			aDataInserimento:new Date(),
        			destinatario:'',
        			codiceFiscale:'',
        			codiceDestinatario:'',
        			causaleMovimento:'',
        			idFunzione:'',
        			idUnivoco:'',
        			flagDaValutaBeneficiario: false,
        			daValutaBeneficiario:new Date(),
        			flagAValutaBeneficiario: false,
        			aValutaBeneficiario:new Date(),
        			daImporto:'',
        			aImporto:'',
        			idEndToEnd:'',
        			numeroPolizza:'',
        			abiOrdinante:'',
        			cabOrdinante:'',
        			contoOrdinante:'',
        			abiDestinatario:'',
        			cabDestinatario:'',
        			contoDestinatario:'',
        			flagDaDataRicezioneEsito: false,
        			daDataRicezioneEsito: new Date(),
        			flagADataRicezioneEsito: false,
        			aDataRicezioneEsito: new Date(),
        			flagDaDataEsecuzioneBanca: false,
        			daDataEsecuzioneBanca: new Date(),
        			flagADataEsecuzioneBanca: false,
        			aDataEsecuzioneBanca: new Date(),
        			esitoDisposizione:'',
        			idSDD:'',
        			causaleStorno:'',
        			trnBonificoSCT:'',
        			numeroAssegno:''
        	};
        	return _currentFilter;
        }

        
        userService.getCurrentUser = function (){
            if ((typeof _currentUser=="undefined")||(_currentUser == null))
            	try {
                	_currentUser = $rootScope.$eval($cookies.get("user"));
                 	if  (typeof _currentUser=="undefined")
                    	_currentUser = null;
            	} catch (ex) {
            		_currentUser = null;
            	}
            return _currentUser;
        }
        
        userService.logout = function() {
        	_currentUser = null;
        	$cookies.remove("user");
        	UserManager.Logout();
    		$location.path("/login");
        }

        
        return userService;
	}
);
