(function(){
'use strict';
  
angular
  .module('izApp')
  .controller('VeranstaltungenController', VeranstaltungenController);

VeranstaltungenController.$inject = ['$scope', '$rootScope', '$location', '$state', '$timeout', 'Logger', 'archiv', 'VeranstaltungenService', 'RegionService', 'TopicService','$window'];

function VeranstaltungenController($scope, $rootScope, $location, $state, $timeout, Logger, archiv, VeranstaltungenService, RegionService, TopicService,$window) {
  // Local Vars
  var vm = this;

  // View Model Vars
  vm.emptyRowset;
  vm.veranstaltungen;
  vm.thema = null;
  vm.region = null;
  vm.themen;
  vm.regionen;
  vm.searchString;
  vm.index;
  vm.count;
  vm.filterFields = [];
  vm.archiv;
  
  vm.testDate = new Date('2016-02-15T00:00:00+01:00');

  // View Model Methods
  vm.init = init;
  vm.search = search;
  vm.trackBookingBtn=trackBookingBtn;

  vm.init();

  function init() {

	// Suchparameter aus URI auslesen oder defaults setzen
	vm.index = $location.search().index || 0;
	vm.count = $location.search().count || 500;
	vm.searchString = $location.search().search || ''; // Volltextsuche verwenden wir noch nicht

	if($location.search()['filter-themen']) {
	  vm.thema = {};
	  vm.thema.title = $location.search()['filter-themen'];
	}
	if($location.search()['filter-regionen']) {
	  vm.region = {};
	  vm.region.title = $location.search()['filter-regionen'];
	}

	// Die Liste füllen
	if( archiv == null || archiv == false) {
	  vm.search();
	} else {
	  vm.archiv = archiv;
	  vm.search(true);
	}

	// Daten für Dropdowns der Themen und Regionen füllen
	RegionService.usedRegions().then(function(data) { vm.regionen = data; });
	TopicService.usedTopics().then(function(data) { vm.themen = data; });

  }
  
  function trackBookingBtn(code){
	if ($window.ga){
	  console.log('Register GA Click-Event Buchen-'+code);
	  $window.ga('send','event','Buchen','Buchen-'+code);
	}
  }
  
  function filterBy(field, filter) {
	vm.filterFields[field] = filter;
	$location.search('filter-' + field, vm.filterFields[field]);
  }

  function search(archiv) {

	if(archiv == null) {
	  archiv = false;
	}

	if(angular.isObject(vm.thema) && vm.thema.title != '') {
	  filterBy("themen", vm.thema.title);
	} else {
	  filterBy("themen", null);
	}
	if(angular.isObject(vm.region) && vm.region.title != '') {
	  filterBy("regionen", vm.region.title);
	} else {
	  filterBy("regionen", null);
	}
	var direction = $location.url().indexOf('archiv') !== -1 ? '-startDate' : 'startDate';
	VeranstaltungenService.search(vm.index, vm.count, null, vm.filterFields, direction , archiv).then( function(data) {
	  if(data) {
		console.log(data);
		//Ob eine veranstaltung buchbar ist oder nicht ??
		
		data.forEach(function(e){
		  e.modules.forEach(function(m){
			if(m.title=='Teilnehmen' || m.title=='teilnehmen'){
				e.booking=true;	
			}
		  });
		});
		
		//console.log(data);
		vm.veranstaltungen = data;
	  } else {
		vm.emptyRowset = true;
	  }
	});
	return;
  }

}
 
}());