'use strict';

/**
* @ngdoc function
* @name administracionApp.controller:NuevoCtrl
* @description
* # NuevoCtrl
* Controller of the administracionApp
*/
angular.module('administracionApp')
.controller('NuevoCtrl',  ['$scope','dataFactory', '$mdDialog', function ($scope, dataFactory, $mdDialog, $timeout, $q ) {


  /** RESOLUCION **/
  var dialogLinkController = function($scope, $mdDialog){
    var cargado = false;

    dataFactory.getCarpetas(
      function(carpetas){
        $scope.directorio = carpetas;
      }
    );

    $scope.seleccionar = function(cosita){
      $scope.archivo = cosita;
    }

    $scope.answer = function(answer) {
      if(answer){
        $mdDialog.hide(answer);
      } else {
        $mdDialog.cancel();
      }
    }

    $scope.files=[
      "Carpetas",
      "Documentos",
      "Hojas de cálculo",
      "PDF",
      "Imágenes",
      "Videos"
    ];

    var algo = function(){
      return $("input[type=file]").on('change',function(){
        $scope.nombreArchivo = this.files[0].name;
        $scope.$apply();
      });
    }

    $scope.$watch('selectedIndex', function(current, old){
      if(current==2 && !cargado){
        algo();
        cargado=true;
      }
    });
  } //fin dialogLinkController


  var dialogRepositorioController = function($scope, $mdDialog){

    $scope.answer = function(answer) {
      if(answer){
        $mdDialog.hide(answer);
      } else {
        $mdDialog.cancel();
      }
    }
  } //fin dialogRepositorioController


  $scope.showLink = function(ev) {
    $mdDialog.show({
      controller: dialogLinkController,
      templateUrl: '/views/link.html',
      parent: angular.element(document.body),
      targetEvent: ev,
      clickOutsideToClose:true
    })
    .then(function(answer) {

    }, function() {
      $scope.status = 'You cancelled the dialog.';
    });
  };

  $scope.showMara = function(ev) {
          $mdDialog.show({
            controller: dialogLinkController,
            templateUrl: '/views/mara.html',
            parent: angular.element(document.body),
            targetEvent: ev,
            clickOutsideToClose:true
          })
          .then(function(answer) {

          }, function() {

            $scope.status = 'You cancelled the dialog.';
          });
        };

  $scope.showRepositorio = function(ev) {
          $mdDialog.show({
            controller: dialogRepositorioController,
            templateUrl: '/views/repositorio.html',
            parent: angular.element(document.body),
            targetEvent: ev,
            clickOutsideToClose:true
          })
          .then(function(answer) {

          }, function() {

            $scope.status = 'You cancelled the dialog.';
          });
        };

  /** CONTACTOS DE COMISION EVALUADORA TITULARES **/
  $scope.querySearch = querySearch;
  $scope.allContacts = loadContacts();

  $scope.contacts = [] //[$scope.allContacts[0]];
  $scope.filterSelected = true;

  /**
  * Search for contacts.
  */
  function querySearch (query) {
    var results = query ?
    $scope.allContacts.filter(createFilterFor(query)) : [];
    return results;
  }

  /**
  * Create filter function for a query string
  */
  function createFilterFor(query) {
    var lowercaseQuery = angular.lowercase(query);
    return function filterFn(contact) {
      return (contact._lowername.indexOf(lowercaseQuery) != -1);;
    };
  }

  function loadContacts() {
    var contacts = [
      'Marina Augustine',
      'Oddr Sarno',
      'Nick Giannopoulos',
      'Narayana Garner',
      'Anita Gros',
      'Megan Smith',
      'Tsvetko Metzger',
      'Hector Simek',
      'Some-guy withalongalastaname'
    ];
    return contacts.map(function (c, index) {
      var cParts = c.split(' ');
      var contact = {
        name: c,
        email: cParts[0][0].toLowerCase() + '.' + cParts[1].toLowerCase() + '@unc.edu.ar',
        image: 'http://lorempixel.com/50/50/people?' + index,
        informante: false
      };
      contact._lowername = contact.name.toLowerCase();
      return contact;
    });
  }



  /** CONTACTOS DE COMISION EVALUADORA TITULARES **/

  $scope.allContacts_suplente = loadContactsSuplente();
  $scope.contacts_suplente = [] //[$scope.allContacts[0]];

  /**
  * Search for contacts.
  */
  function querySearch (query) {
    var results = query ?
    $scope.allContacts_suplente.filter(createFilterFor(query)) : [];
    return results;
  }

  /**
  * Create filter function for a query string
  */
  function createFilterFor(query) {
    var lowercaseQuery = angular.lowercase(query);
    return function filterFn(contact_suplente) {
      return (contact_suplente._lowername.indexOf(lowercaseQuery) != -1);;
    };
  }

  function loadContactsSuplente() {
    var contacts_suplente = [
      'Marina Augustine',
      'Oddr Sarno',
      'Nick Giannopoulos',
      'Narayana Garner',
      'Anita Gros',
      'Megan Smith',
      'Tsvetko Metzger',
      'Hector Simek',
      'Some-guy withalongalastaname'
    ];
    return contacts_suplente.map(function (c, index) {
      var cParts = c.split(' ');
      var contact_suplente = {
        name: c,
        email: cParts[0][0].toLowerCase() + '.' + cParts[1].toLowerCase() + '@unc.edu.ar',
        image: 'http://lorempixel.com/50/50/people?' + index,
        informante: false
      };
      contact_suplente._lowername = contact_suplente.name.toLowerCase();
      return contact_suplente;
    });
  }


  /** REQUERIMIENTOS **/
  $scope.requisitos = [{}];
  $scope.addRequerimiento = function() {
    $scope.requisitos.push({
      name:'',
      file:''
    });
  };


  $scope.removeRequerimiento = function(index) {
    $scope.requisitos.splice(index,1);
  };


  /** ANTECEDENTES **/
  $scope.antecedentes = [{}];
  $scope.addAntecedente = function() {
    $scope.antecedentes.push({
      name:'',
      file:''
    });
  };

  $scope.removeAntecedente = function(index) {
    $scope.antecedentes.splice(index,1);
  };


  /** ANTECEDENTES EXTRA**/
  $scope.antecedentes_extra = [{}];
  $scope.addAntecedenteExtra = function() {
    $scope.antecedentes_extra.push({
      name:'',
      file:''
    });
  };

  $scope.removeAntecedenteExtra = function(index) {
    $scope.antecedentes_extra.splice(index,1);
  };


  /** GUARDAR COMO BORRADOR **/
  $scope.borrador = function(){
    var id = Math.random();
    for (var i = 0; i < $scope.contacts.length; i++) {
      if($scope.contacts[i].name == $scope.seleccionado){
        $scope.contacts[i].informante = true;
      }
    }

    var convocatoria = {
      id: id,
      estado: 'borrador',
      catedra: $scope.catedra,
      cargo: $scope.cargo,
      dedicacion: $scope.dedicacion,
      tipo: $scope.tipo,
      codigo: $scope.codigo,
      fechainicio: $scope.fechainicio,
      fechacierre: $scope.fechacierre,
      resolucion: $scope.resolucion,
      tabs: [{
        nombre: '',
        expediente: '',
        comisionevaluadoratitular: $scope.contacts,
        comisionevaluadorasuplente: $scope.contacts_suplente,
        requisitos: $scope.requisitos
      }, //tab cero
      {
        nombre: '',
        antecedentes_curriculares: $scope.antecedentes,
        antecedentes_extracurriculares: $scope.antecedentes_extra
      } //tab uno
    ] //fin de tabs
  };
  //console.log(convocatoria);
  dataFactory.createConvocatoria(convocatoria);
};


/** GUARDAR Y PUBLICAR **/
$scope.publicar = function(){
  var id = Math.random();
  for (var i = 0; i < $scope.contacts.length; i++) {
    if($scope.contacts[i].name == $scope.seleccionado){
      $scope.contacts[i].informante = true;
    }
  }

  var convocatoria = {
    id: id,
    estado: 'abierta',
    catedra: $scope.catedra,
    cargo: $scope.cargo,
    dedicacion: $scope.dedicacion,
    tipo: $scope.tipo,
    codigo: $scope.codigo,
    fechainicio: $scope.fechainicio,
    fechacierre: $scope.fechacierre,
    resolucion: $scope.resolucion,
    tabs: [{
      nombre: '',
      expediente: '',
      comisionevaluadoratitular: $scope.contacts,
      comisionevaluadorasuplente: $scope.contacts_suplente,
      requisitos: $scope.requisitos
    }, //tab cero
    {
      nombre: '',
      antecedentes_curriculares: $scope.antecedentes,
      antecedentes_extracurriculares: $scope.antecedentes_extra
    } //tab uno
  ] //fin de tabs
};
dataFactory.createConvocatoria(convocatoria);
};


}]);
