(function () { 'use strict'; //para el cache de vistas var pageLoadTime = new Date(); var app = angular.module('app', [ 'ngSanitize', 'ui.router', 'ui.bootstrap', //'ui.jq', //elkarmedia //'ct.ui.router.extras.sticky', //'ct.ui.router.extras.previous', //"ui.tree", //"ui.select", //"ui.grid", //"ui.grid.autoResize", //"ui.grid.pagination", //"ui.grid.selection", //"daterangepicker", //"angularMoment", //'summernote', //'ncy-angular-breadcrumb', //'ui.calendar', //'moment-picker', //"kendo.directives" ]); //Configuration for Angular UI routing. app.config([ '$stateProvider', '$httpProvider', '$urlRouterProvider', '$locationProvider', '$qProvider', '$uibModalProvider', function ($stateProvider, $httpProvider, $urlRouterProvider, $locationProvider, $qProvider, $uibModalProvider) { //desactivar animación cuando se anbren modales //https://stackoverflow.com/a/39795879 $uibModalProvider.options = { animation: false, backdrop: "static", size: "lg", keyboard: true, }; $locationProvider.hashPrefix(''); $urlRouterProvider.otherwise('/'); $qProvider.errorOnUnhandledRejections(false); $stateProvider.state("inicio", { url: "/", templateUrl: "~/App/Main/inicio/inicioView.cshtml", resolve: { configuracion: function (preinscripcionService) { return preinscripcionService.getConfiguracionPrematricula(); } } }); $stateProvider.state("off", { url: "/", templateUrl: "~/App/Main/off/offView.cshtml" }); $stateProvider.state("tipo", { url: "/tipo", templateUrl: "~/App/Main/tipo/tipoView.cshtml" }); $stateProvider.state("usuario", { url: "/usuario", templateUrl: "~/App/Main/usuario/usuarioView.cshtml" }); $stateProvider.state("alumnos", { url: "/alumno", templateUrl: "~/App/Main/alumnos/alumnosView.cshtml" }); $stateProvider.state("datos-personales", { url: "/datos-personales", templateUrl: "~/App/Main/datosPersonales/datosPersonalesView.cshtml" }); $stateProvider.state("asignaturas", { url: "/asignaturas", templateUrl: "~/App/Main/asignaturas/asignaturasView.cshtml" }); $stateProvider.state("resumen", { url: "/resumen", templateUrl: "~/App/Main/resumen/resumenView.cshtml" }); $stateProvider.state("final", { url: "/final", templateUrl: "~/App/Main/final/finalView.cshtml" }); //States para plazas vacante $stateProvider.state("plazas", { url: "/plazas", templateUrl: "~/App/Main/plazas/plazasView.cshtml" }); $httpProvider.interceptors.push(['$q', '$rootScope', function ($q, $rootScope) { if ($rootScope.activeCalls == undefined) { $rootScope.activeCalls = 0; } return { 'responseError': function (rejection) { $rootScope.activeCalls -= 1; if (rejection.status == -1 && rejection.config.url.indexOf('.cshtml') !== -1) { swal(locale.errorSinConectividad); } return $q.reject(rejection); }, 'requestError': function (rejection) { $rootScope.activeCalls -= 1; return $q.reject(rejection); }, 'request': function (config) { $rootScope.activeCalls += 1; if (config.url.indexOf('.cshtml') !== -1) { config.url = baseUrl + 'Vista?url=' + config.url + '&_t=' + pageLoadTime.getTime(); } return config; }, 'response': function (response) { $rootScope.activeCalls -= 1; var defaultError = { message: 'An error has occurred!', details: 'Error detail not sent by server.' }; if (!response.data || !response.data.__abp) { //Non ABP related return value return response; } var defer = $q.defer(); function handleResponse(response, defer) { var originalData = response.data; if (originalData.success === true) { response.data = originalData.result; defer.resolve(response); if (originalData.targetUrl) { handleTargetUrl(originalData.targetUrl); } } else if (originalData.success === false) { var messagePromise = null; // if (originalData.error) { // if (response.config.abpHandleError !== false) { // messagePromise = abp.ng.http.showError(originalData.error); // } // } else { originalData.error = defaultError; // } // abp.ng.http.logError(originalData.error); response.data = originalData.error; defer.reject(response); if (response.status == 401 && response.config.abpHandleError !== false) { handleUnAuthorizedRequest(messagePromise, originalData.targetUrl); } } else { //not wrapped result defer.resolve(response); } } handleResponse(response, defer); return defer.promise; } //, //'responseError': function (ngError,otro,otr) { // var defer = $q.defer(); // return defer.promise; //} }; }]); } ]); //ejecutar la aplicación angular app.run(["$rootScope", "$state", "preinscripcionService", "$window", function ($rootScope, $state, preinscripcionService, $window) { //por defecto. desde el servicio traeremos los soportados $rootScope.idiomas = ["es", "eu"]; $rootScope.mostrarIdiomas = true; $rootScope.cambiarIdioma = function (url) { if ($state.current.name == "inicio" || $state.current.name == "off") { $window.location.href = url; } else { swal({ title: locale.avisoPreguntaEstasSeguro, text: locale.avisoPerdidaDatosCambiarIdioma, icon: "warning", showCancelButton: true, showConfirmButton: true, confirmButtonText: locale.buttonOkSweetAlert, cancelButtonText: locale.buttonCancelSweetAlert }, function (resultado) { if (resultado) { $window.location.href = url; } }); } }; //para que funcionen los states parent/child http://stackoverflow.com/questions/17001589/directing-the-user-to-a-child-state-when-they-are-transitioning-to-its-parent-st $rootScope.$on('$stateChangeStart', function (evt, to, params) { if (to.name != "inicio" && preinscripcionService.esAsistenteIniciado == false) { evt.preventDefault(); $state.go("inicio"); return; } if (to.redirectTo) { evt.preventDefault(); $state.go(to.redirectTo, params) } }); $rootScope.$on('$viewContentLoaded', function (event) { // console.log("content loaded"); $.AdminBSB.input.activate(); $('html, body').animate({ scrollTop: 0 }, 500); // $.AdminBSB.select.activate(); }); }]); function handleUnAuthorizedRequest(messagePromise, targetUrl) { if (messagePromise) { messagePromise.done(function () { handleTargetUrl(targetUrl || inikaUrl); }); } else { handleTargetUrl(targetUrl || inikaUrl); } } function handleTargetUrl(targetUrl) { if (!targetUrl) { location.href = inikaUrl; } else { location.href = targetUrl; } } })(); angular.module("app").controller('alumnosController', [ '$scope', 'preinscripcionService', '$state', function ($scope, preinscripcionService, $state) { var vm = this; vm.alumno = null; vm.listaAlumnos = preinscripcionService.usuario.hijos; vm.irPaso = irPaso; function irPaso(step) { if (step == 1) { preinscripcionService.datosPersonales.nombre = vm.alumno.nombre; preinscripcionService.datosPersonales.ikasleaKey = vm.alumno.ikasleaKey; preinscripcionService.datosPersonales.apellido1 = vm.alumno.apellido1; preinscripcionService.datosPersonales.apellido2 = vm.alumno.apellido2; preinscripcionService.datosPersonales.barrio = vm.alumno.barrio; preinscripcionService.datosPersonales.codigoPostal = vm.alumno.codigoPostal; preinscripcionService.datosPersonales.direccion = vm.alumno.direccion; preinscripcionService.datosPersonales.email = vm.alumno.email; //Ticket #833485 // preinscripcionService.datosPersonales.fechaNacimiento = vm.alumno.fechaNacimiento; preinscripcionService.datosPersonales.ikastolaKey = vm.alumno.ikastolaKey; preinscripcionService.datosPersonales.localidad = vm.alumno.localidad; preinscripcionService.datosPersonales.movil = vm.alumno.movil; preinscripcionService.datosPersonales.nacionalidad = vm.alumno.nacionalidad; preinscripcionService.datosPersonales.sexo = vm.alumno.sexo; preinscripcionService.datosPersonales.telefono = vm.alumno.telefono; $state.go("datos-personales"); } else { $state.go("usuario"); } } }]); angular.module("app").controller('asignaturasController', [ 'preinscripcionService', '$state', function (preinscripcionService, $state) { var vm = this; vm.registro = preinscripcionService.datosPersonales; vm.esPedirInstrumento = false; vm.edad = preinscripcionService.edad; vm.listaOferta = null; vm.irPaso = irPaso; vm.getOferta = getOferta; vm.esPedirExperienciaEnAsignatura = esPedirExperienciaEnAsignatura; vm.mostrarPruebaNivelEnAsignatura = mostrarPruebaNivelEnAsignatura; vm.getInstrumentos = getInstrumentos; vm.cambiarNumOpcion = cambiarNumOpcion; vm.cambiarNumOpcionNula = cambiarNumOpcionNula; vm.comprobarInstrumento = comprobarInstrumento; vm.comprobarCategoriasConSoloOpcion1=comprobarCategoriasConSoloOpcion1; vm.getInstrumentos(); vm.getOferta(); //funciones function cambiarNumOpcionNula(categoria, asignatura,sede) { sede.numeroOpcion = null; vm.cambiarNumOpcion(categoria, asignatura, sede); } function cambiarNumOpcion(categoria, asignatura, sede) { vm.comprobarInstrumento(); } function comprobarInstrumento() { var esPedirInstrumento = false; for (var i = 0; i < vm.listaOferta.length; i++) { var categoria = vm.listaOferta[i]; if (categoria.esPedirInstrumento==true) { for (var j = 0; j < categoria.asignaturas.length; j++) { for (var k = 0; k < categoria.asignaturas[j].sedes.length; k++) { var sede=categoria.asignaturas[j].sedes[k] if (sede.numeroOpcion!=null) { esPedirInstrumento = true; break; } } if (esPedirInstrumento==true) { break; } } } if (esPedirInstrumento == true) { break; } } vm.esPedirInstrumento = esPedirInstrumento; } function esPedirExperienciaEnAsignatura(asignatura) { if (asignatura.pedirExperiencia == true) { for (var i = 0; i < asignatura.sedes.length; i++) { if (asignatura.sedes[i].numeroOpcion != null) { return true; } } } return false; } function mostrarPruebaNivelEnAsignatura(asignatura) { if (asignatura.mostrarPruebaNivel == true) { for (var i = 0; i < asignatura.sedes.length; i++) { if (asignatura.sedes[i].numeroOpcion != null) { return true; } } } return false; } function getOferta() { preinscripcionService.getOferta().then(function (oferta) { vm.listaOferta = oferta; vm.comprobarInstrumento(); vm.comprobarCategoriasConSoloOpcion1(); }, function (error) { preinscripcionService.showAlerta(locale.errorGetOferta); vm.irPaso(-1); }); } function getInstrumentos() { preinscripcionService.getInstrumentos().then(function (instrumentos) { vm.listaInstrumentos = instrumentos; }, function (error) { // preinscripcionService.showAlerta("error"); }); } function comprobarCategoriasConSoloOpcion1() { if (preinscripcionService.configuracionWeb.categoriasConUnaOpcion != null && preinscripcionService.configuracionWeb.categoriasConUnaOpcion.length) { for (var i = 0; i < vm.listaOferta.length; i++) { var categoria = vm.listaOferta[i]; //si el id de la categoria está en la lista de ids que deben de mostrar sólo 1 opción if (preinscripcionService.configuracionWeb.categoriasConUnaOpcion.indexOf(categoria.idCategoria) >= 0) { for (var j = 0; j < categoria.asignaturas.length; j++) { var asignatura = categoria.asignaturas[j]; for (var k = 0; k < asignatura.sedes.length; k++) { var sede = asignatura.sedes[k]; sede.esOpcionesNumVisible = false; } } } } } } function irPaso(step) { if (step == 1) { //recorremos la lista (categoria/asignatura/sedes) comprobando si hay selección o no. var asignaturasSeleccionadas = []; //por lo menos 1 selección en 1era o 2da opción var tieneSeleccion = false; for (var i = 0; i < vm.listaOferta.length; i++) { var categoria = vm.listaOferta[i]; for (var j = 0; j < categoria.asignaturas.length; j++) { var asignatura = categoria.asignaturas[j]; for (var k = 0; k < asignatura.sedes.length; k++) { var sede = asignatura.sedes[k]; if (sede.numeroOpcion != null) { tieneSeleccion = true; break; } } if (tieneSeleccion == true) break; } if (tieneSeleccion == true) break; } if (vm.esPedirInstrumento == true && (vm.registro.instrumentoEspecialidad == null || vm.registro.instrumentoEspecialidad.length == 0)) { preinscripcionService.showAlerta(locale.intrumentoEspecialidad); return true; } if (vm.esPedirInstrumento == false) { vm.registro.instrumentoEspecialidad = null; } if (tieneSeleccion == true) { preinscripcionService.edad = vm.edad; preinscripcionService.setOfertaSeleccionada(vm.listaOferta).then(function (result) { $state.go("resumen"); }, function err(resultErr) { preinscripcionService.showAlerta(resultErr.data); }); } else { preinscripcionService.showAlerta(locale.errorNoSeleccionado); } } else { $state.go("datos-personales"); } } }]); angular.module("app").controller('datosPersonalesController', [ '$scope', 'preinscripcionService', '$state', '$q', function ($scope, preinscripcionService, $state, $q) { var vm = this; vm.esCheck = true;// para evitar error Expression is not assignable vm.anio = null; vm.mes = null; vm.dia = null; vm.esWebPlazasLibres = preinscripcionService.esWebPlazasLibres; vm.esRequeridoDNI = true; vm.mostrarFechaNoValida = false; vm.meses = []; vm.dias = []; vm.anios = preinscripcionService.getAniosNacimientoPosibles(); for (var i = 1; i <= 31; i++) { vm.dias.push(i); } var nombreMeses = [locale.mes1, locale.mes2, locale.mes3, locale.mes4, locale.mes5, locale.mes6, locale.mes7, locale.mes8, locale.mes9, locale.mes10, locale.mes11, locale.mes12]; for (var i = 0; i < nombreMeses.length; i++) { vm.meses.push( { mes: i + 1, nombreMes: nombreMeses[i] } ); } vm.edad = preinscripcionService.edad; vm.registro = preinscripcionService.datosPersonales; if (vm.registro.email != "") { vm.emailRepeticion = vm.registro.email; } if (preinscripcionService.esWebPlazasLibres == true && vm.registro.fechaNacimiento != null) { vm.anio = moment(vm.registro.fechaNacimiento, "YYYY-MM-DD").year(); } if (preinscripcionService.esWebPlazasLibres == false && vm.registro.fechaNacimiento != null) { var f = moment(vm.registro.fechaNacimiento, "YYYY-MM-DD"); vm.anio = f.year(); vm.mes = f.month() + 1; //month es zero based vm.dia = f.date(); } vm.irPaso = irPaso; vm.cambiarFechaNacimiento = cambiarFechaNacimiento; vm.tipoPreinscripcion = preinscripcionService.tipoPreinscripcion; vm.codUsuarioInika = preinscripcionService.datosPersonales.codigoUsuarioFamiliaInika; vm.getPoblaciones = getPoblaciones; vm.getPaises = getPaises; //funciones vm.cambiarFechaNacimiento(); vm.getPaises(); function cambiarFechaNacimiento() { vm.registro.fechaNacimiento = null; //comprobamos que la fecha esté bien formada if (vm.dia == null || vm.mes == null || vm.anio == null) { vm.mostrarFechaNoValida = false; return; } var fecha = vm.anio + "-" + vm.mes + "-" + vm.dia; var fechaNac = moment(fecha, "YYYY-M-D"); if (fechaNac.isValid()) { var edadAhora = moment().diff(fechaNac, 'years') if (edadAhora < 0 || edadAhora > 100) { vm.mostrarFechaNoValida = true; return; } vm.mostrarFechaNoValida = false; vm.registro.fechaNacimiento = fechaNac.format("YYYY-MM-DD"); preinscripcionService.getEdad(vm.registro.fechaNacimiento) .then(function (result) { vm.edad = result.data; vm.esRequeridoDNI = true; try { if (preinscripcionService.configuracionWeb.esDNIVisible == true && preinscripcionService.configuracionWeb.edadMinimaDNIRequerido && vm.edad < preinscripcionService.configuracionWeb.edadMinimaDNIRequerido) { vm.esRequeridoDNI = false; } } catch (e) { } }); } else { vm.registro.fechaNacimiento = null; if (vm.dia != null && vm.mes != null && vm.anio != null) { vm.mostrarFechaNoValida = true; } else { vm.mostrarFechaNoValida = false; } } } function validarAsync() { if (preinscripcionService.configuracionWeb.esVisibleIdioma == false) { vm.registro.conocimientoEuskera = "-"; } var defer = $q.defer(); var esValido = true; if (vm.registro.email == null || vm.registro.email.length == 0) { preinscripcionService.showAlerta(locale.validacionEmailRequerido); defer.reject(); esValido = false; } if (esValido==true && (vm.registro.email != null && vm.registro.email.length > 0)) { if (vm.registro.email.indexOf("@") < 0) { preinscripcionService.showAlerta(locale.validacionEmailNoValido); defer.reject(); esValido = false; } } if (esValido==true && (vm.registro.email != vm.emailRepeticion)) { preinscripcionService.showAlerta(locale.validacionEmailRepeticion); defer.reject(); esValido = false; } if (esValido == true) { preinscripcionService.validarDatosPersonales().then(function (result) { defer.resolve(); }, function (resultErr) { preinscripcionService.showAlerta(resultErr.data); defer.reject(); }) } return defer.promise; } function getPoblaciones(nombreABuscar) { return preinscripcionService.getPoblaciones(nombreABuscar).then(function (result) { return result.data; }) } function getPaises() { preinscripcionService.getPaises().then(function (result) { vm.listaPaises = result.data; }) } function irPaso(step) { if (step == 1) { validarAsync().then(function (result) { if (preinscripcionService.esWebPlazasLibres == false) { preinscripcionService.edad = vm.edad; preinscripcionService.oferta = null; vm.registro.instrumentoEspecialidad = null; } preinscripcionService.nav.sgte(); }, function (resultErr) { }); } else { swal({ title: locale.avisoPreguntaEstasSeguro, text: locale.avisoPerdidaDatosRetroceso, icon: "warning", showCancelButton: true, showConfirmButton: true, confirmButtonText: locale.buttonOkSweetAlert, cancelButtonText: locale.buttonCancelSweetAlert }, function (resultado) { if (resultado) { switch (preinscripcionService.tipoPreinscripcion) { case "PRIMERA_VEZ": $state.go("tipo"); break; case "FUE_ALUMNO": $state.go("tipo"); break; case "CON_HERMANO": $state.go("usuario"); break; case "DE_TALLER": $state.go("alumnos"); case "MATRICULADO": $state.go("alumnos"); break; } } }); } } }]); angular.module("app").controller('finalController', [ '$scope', 'preinscripcionService', '$state', function ($scope, preinscripcionService, $state) { var vm = this; //para evitar el back button y repost preinscripcionService.esAsistenteIniciado = false; //debemos pasar por Inicio para conservar integridad del asistente vm.idPreinscripcionSolicitud = preinscripcionService.idPreinscripcionSolicitud; }]); angular.module("app").controller('inicioController', [ '$scope', 'preinscripcionService', '$state', function ($scope, preinscripcionService, $state) { var vm = this; vm.registro = preinscripcionService.datosPersonales; vm.irPaso = irPaso; //funciones if (preinscripcionService.configuracionInika.tipoWeb == 0) { preinscripcionService.esAsistenteIniciado = true; $state.go("off"); } function irPaso() { preinscripcionService.esAsistenteIniciado = true; preinscripcionService.nav.sgte(); } }]); angular.module("app").controller('offController', [ '$scope', 'preinscripcionService', '$state', function ($scope, preinscripcionService, $state) { var vm = this; preinscripcionService.esAsistenteIniciado =false; }]); angular.module("app").controller('plazasController', [ '$scope', 'preinscripcionService', '$state', function ($scope, preinscripcionService, $state) { var vm = this; vm.diasSemana = preinscripcionService.diasSemana; vm.anio = null; vm.anios = preinscripcionService.getAniosNacimientoPosibles(); vm.listaOferta = null; vm.cambiarAnioNacimiento = cambiarAnioNacimiento; vm.idPreinscripcionAsignaturaSede = null; vm.irPaso = irPaso; vm.asignaturaSeleccionada = null; vm.sedeSeleccionada = null; //tipo de preinscripcion a realizar vm.tipoPreinscripcion = null; preinscripcionService.setNuevoRegistro(); vm.registro = preinscripcionService.datosPersonales; vm.edad = preinscripcionService.edad; vm.getOfertaPlazasLibres = getOfertaPlazasLibres; vm.cambiarNumOpcion = cambiarNumOpcion; vm.cambiarNumOpcionNula = cambiarNumOpcionNula; //funciones function cambiarAnioNacimiento() { if (vm.anio) { vm.getOfertaPlazasLibres(); } else { vm.listaOferta.length = 0; } } function cambiarNumOpcionNula(categoria, asignatura, sede) { vm.asignaturaSeleccionada = null; vm.sedeSeleccionada = null; sede.numeroOpcion = null; } function cambiarNumOpcion(categoria,asignatura,sede) { vm.asignaturaSeleccionada = asignatura; vm.sedeSeleccionada = sede; for (var i = 0; i < vm.listaOferta.length; i++) { var categoria = vm.listaOferta[i]; for (var j = 0; j < categoria.asignaturas.length; j++) { var asignatura = categoria.asignaturas[j]; for (var k = 0; k < asignatura.sedes.length; k++) { var sedeAsig = asignatura.sedes[k]; if (sedeAsig != sede) { sedeAsig.numeroOpcion = null; } } } } } function getOfertaPlazasLibres() { vm.listaOferta = null; vm.registro.fechaNacimiento= moment(new Date(vm.anio,1,1)).format("YYYY-MM-DD"); preinscripcionService.getOfertaPlazasLibres( vm.registro.fechaNacimiento).then(function (oferta) { vm.listaOferta = oferta; }, function (error) { preinscripcionService.showAlerta(locale.errorGetOferta); vm.irPaso(-1); }); } function irPaso(step) { if (step == 1) { //recorremos la lista (categoria/asignatura/sedes) comprobando si hay selección o no. var asignaturasSeleccionadas = []; //por lo menos 1 selección en 1era o 2da opción var tieneSeleccion = false; for (var i = 0; i < vm.listaOferta.length; i++) { var categoria = vm.listaOferta[i]; for (var j = 0; j < categoria.asignaturas.length; j++) { var asignatura = categoria.asignaturas[j]; for (var k = 0; k < asignatura.sedes.length; k++) { var sede = asignatura.sedes[k]; if (sede.numeroOpcion != null) { tieneSeleccion = true; break; } } if (tieneSeleccion == true) break; } if (tieneSeleccion == true) break; } if (tieneSeleccion == true) { preinscripcionService.edad = vm.edad; preinscripcionService.setOfertaPlazaLibreSeleccionada(vm.listaOferta).then(function (result) { preinscripcionService.nav.sgte(); }, function err(resultErr) { preinscripcionService.showAlerta(resultErr.data); }); } else { preinscripcionService.showAlerta(locale.errorNoSeleccionado); } } else { preinscripcionService.nav.ant(); } } }]); angular.module("app").controller('resumenController', [ 'preinscripcionService', '$state', function (preinscripcionService, $state) { var vm = this; vm.intento = 0; vm.esWebPlazasLibres = preinscripcionService.esWebPlazasLibres; vm.edad = preinscripcionService.edad; vm.aceptaCondiciones = true; //por defecto if (preinscripcionService.configuracionWeb.esAceptaCondicionesVisible == true) { vm.aceptaCondiciones = false; } vm.listaOferta = []; vm.registro = preinscripcionService.datosPersonales; vm.fechaNacimiento= moment(vm.registro.fechaNacimiento, "YYYY-MM-DD").format("DD-MM-YYYY"); vm.tipoPreinscripcion = preinscripcionService.tipoPreinscripcion; vm.codUsuarioInika = preinscripcionService.datosPersonales.codigoUsuarioFamiliaInika; vm.irPaso = irPaso; vm.getOferta = getOferta; vm.esCategoriaVisible = esCategoriaVisible; vm.esAsignaturaVisible = esAsignaturaVisible; vm.getOferta(); //funciones function getOferta() { preinscripcionService.getOferta().then(function (oferta) { vm.listaOferta = oferta; }); } //determina si debemos mostrar la categoría //si tiene asignaturas con sedes seleccionadas function esCategoriaVisible(categoria) { var tieneSeleccion = false; for (var j = 0; j < categoria.asignaturas.length; j++) { var asignatura = categoria.asignaturas[j]; for (var k = 0; k < asignatura.sedes.length; k++) { var sede = asignatura.sedes[k]; if (sede.numeroOpcion != null) { tieneSeleccion = true; break; } } if (tieneSeleccion == true) break; } return tieneSeleccion; } //determina si debemos mostrar la asignatura //si hay una sede seleccionada function esAsignaturaVisible(asignatura) { var tieneSeleccion = false; for (var k = 0; k < asignatura.sedes.length; k++) { var sede = asignatura.sedes[k]; if (sede.numeroOpcion != null) { tieneSeleccion = true; break; } } return tieneSeleccion; } function irPaso(step) { //recorremos la lista comprobando si hay selección o no. if (step == 1) { if (vm.aceptaCondiciones != true) { preinscripcionService.showAlerta(locale.validacionAceptarCondiciones); return; } vm.intento++; //evitar doble post al hacer click rapidamente if (vm.intento == 1) { preinscripcionService.crearPreinscripcion().then(function (result) { $state.go("final"); }, function err(resultErr) { vm.intento = 0; preinscripcionService.showAlerta(resultErr.data); }); } } else { preinscripcionService.nav.ant(); } } }]); angular.module("app").controller('tipoController', [ '$scope', 'preinscripcionService', '$state', function ($scope, preinscripcionService, $state) { var vm = this; vm.irPaso = irPaso; vm.esWebPlazasLibres = preinscripcionService.esWebPlazasLibres; //tipo de preinscripcion a realizar vm.tipoPreinscripcion = null; if (preinscripcionService.esWebPlazasLibres == false) { preinscripcionService.setNuevoRegistro(); } //definidos en Index.cshtml if (_codUsuarioeInika.length > 0 ) {//si eInika nos envía usuario y email, entonces vamos a siguiente paso como matriculado vm.tipoPreinscripcion = 'MATRICULADO'; irPaso(1); } //funciones function irPaso(step) { if (step == 1) { preinscripcionService.tipoPreinscripcion = vm.tipoPreinscripcion; //dependiendo del tipo de preinscripción switch (preinscripcionService.tipoPreinscripcion) { case "PRIMERA_VEZ": $state.go("datos-personales"); break; case "FUE_ALUMNO": preinscripcionService.datosPersonales.fueAlumnoDelCentro = true; $state.go("datos-personales"); break; case "CON_HERMANO": $state.go("usuario"); break; case "DE_TALLER": $state.go("usuario"); case "MATRICULADO": $state.go("usuario"); break; } } else { preinscripcionService.nav.ant(); } } }]); angular.module("app").controller('usuarioController', [ '$scope', 'preinscripcionService', '$state', function ($scope, preinscripcionService, $state) { var vm = this; vm.usuario = { codUsuario: _codUsuarioeInika || '', email: '', codigo: '' }; if (preinscripcionService.configuracionWeb.usaDatosHijos == false) { vm.usuario.email = _emaileInika; } vm.irPaso = irPaso; if (preinscripcionService.configuracionWeb.usaDatosHijos == false && _codUsuarioeInika.length > 0 && _emaileInika.length > 0) {//si eInika nos envía usuario y email, entonces vamos a siguiente paso como matriculado irPaso(1); } function irPaso(step) { if (step == 1) { preinscripcionService.getHijosDeUsuario(vm.usuario.codUsuario, vm.usuario.email, vm.usuario.codigo) .then(function (result) { if (result.data == null) { if (vm.usuario.codigo != null && vm.usuario.codigo.length > 0) { preinscripcionService.showAlerta(locale.avisoUsuarioNoEncontradoPorCodigo); } else { preinscripcionService.showAlerta(locale.avisoUsuarioNoEncontradoPorEmail); } } else if (result.data.hijos.length == 0) { preinscripcionService.showAlerta("El usuario es válido pero no hemos encontrado ningún alumnado activo."); } else { preinscripcionService.setUsuario(result.data.codUsuario, vm.usuario.email); preinscripcionService.setUsuarioHijos(result.data.hijos); preinscripcionService.datosPersonales.gurasoaKey = result.data.id; //si le da atras en los pasos no entre en bucle por la comprobación de arriba _emaileInika.length > 0 _emaileInika = ""; if (preinscripcionService.tipoPreinscripcion == "CON_HERMANO") { $state.go("datos-personales"); } else if (preinscripcionService.tipoPreinscripcion == "DE_TALLER") { $state.go("alumnos"); } else if (preinscripcionService.tipoPreinscripcion == "MATRICULADO") { $state.go("alumnos"); } else { $state.go("inicio"); } } }, function (err) { if (err.data && err.data == "API_RETRIES") { preinscripcionService.showAlerta(locale.errorReintentoUsuario); } else { preinscripcionService.showAlerta(locale.errorGetOferta); } }); } else { if (_codUsuarioeInika != "") { $state.go("inicio"); } else { $state.go("tipo"); } } } }]); angular.module("app").directive('loadingSpinner', [ '$http', function ($http) { return { restrict: 'A', replace: true, template1: '
'+ '
'+ '
'+ '
'+ '
'+ '
'+ '
'+ '
'+ '
' + '
', template3: '

' + locale.esperaPorFavor + '

', template5:' ', link: function (scope, element, attrs) { scope.$watch('activeCalls', function (newVal, oldVal) { if (newVal == 0) { $('.card').unblock(); } else { $(".card").block({ message: '
', // styles for the overlay overlayCSS: { backgroundColor: '#ffffff', opacity: 0.6, cursor: 'wait' }, }); } }); } }; }]); angular.module("app").service('preinscripcionService', [ '$http', '$q', '$state','$rootScope', function ($http, $q, $state, $rootScope) { //en index.cshtml definidos variable culturaActual $http.defaults.headers.common["Abp.Localization.CultureName"] = culturaActual; var self = this; self.esWebPlazasLibres = false; self.configuracionInika = { tipoWeb: 0 }; // rellenado desde inika V3 self.configuracionWeb = _configuracionWeb;//definido en configuracionWeb.js self.idPreinscripcionSolicitud = null; self.edad = 0; self.oferta = null self.instrumentos = null; self.datosPersonales = {}; self.esAsistenteIniciado = false; self.diasSemana = ['', _diaSemana1, _diaSemana2, _diaSemana3, _diaSemana4, _diaSemana5, _diaSemana6, _diaSemana7]; self.esPedirInstrumento = false; self.usuario = { codUsuario: null, email: null, hijos:null }; self.getOferta = getOferta; self.showAlerta = showAlerta; self.setOfertaSeleccionada = setOfertaSeleccionada; self.crearPreinscripcion = crearPreinscripcion; self.getInstrumentos = getInstrumentos; self.getEdad = getEdad; self.getPreinscripcionPayload = getPreinscripcionPayload; self.getHijosDeUsuario = getHijosDeUsuario; self.setUsuario = setUsuario; self.setNuevoRegistro = setNuevoRegistro; self.getAniosNacimientoPosibles = getAniosNacimientoPosibles; self.getOfertaPlazasLibres = getOfertaPlazasLibres; self.getConfiguracionPrematricula = getConfiguracionPrematricula; self.validarDatosPersonales = validarDatosPersonales; self.setOfertaPlazaLibreSeleccionada = setOfertaPlazaLibreSeleccionada; self.setNuevoRegistro(); self.setUsuarioHijos = setUsuarioHijos; //funciones function setNuevoRegistro() { self.esPedirInstrumento = false; self.oferta = null self.instrumentos = null; self.edad = 0; self.datosPersonales = { nombre: '', apellido1: '', apellido2: '', movil: '', telefono: '', codigoPostal: '', localidad: '', direccion: '', email: '', tipoDocumento:1, fechaNacimiento: null, esAlumnoConNecesidadEspecial: false, esComunicacionEnEuskera: false, tieneConocimientoLenguajeMusical: false, conocimientoEuskera: '', sexo: '', fueAlumnoDelCentro: false, barrio: '', nacionalidad: '', tipoWeb:self.configuracionInika.tipoWeb }; self.usuario = { codUsuario: '', email: '', hijos:[] }; } function setUsuario(codUsuario, email) { self.usuario.codUsuario = codUsuario; self.usuario.email = email; self.datosPersonales.codigoUsuarioFamiliaInika = codUsuario; } function setUsuarioHijos(hijos) { self.usuario.hijos = hijos; } //obtiene la edad según la fecha de nacimiento function getEdad(fechaNacimiento) { var config = { params: { fechaNacimiento: fechaNacimiento } } return $http.get(inikaUrl + 'api/preinscripcion/getEdad', config); } //obtiene la lista de hijos de un usuario inika function getHijosDeUsuario(codUsuario, email, codigo) { var config = { url: baseUrl + 'api/Data/Hijos', method: 'POST', data: { codUsuario: codUsuario, codigo: codigo, email:email } }; return $http(config); } function getConfiguracionPrematricula() { var defer = $q.defer(); var config = { url: inikaUrl + 'api/preinscripcion/GetConfiguracionPrematricula' }; $http(config).then(function (result) { numIdioma = result.data.currentNumIdioma; $rootScope.numIdioma = numIdioma; $rootScope.idiomas = result.data.idiomas; //1 web preinscripcion //2 web plaza libre if (result.data.tipoWeb == 2) { self.esWebPlazasLibres = true; } angular.extend(self.configuracionInika, result.data); $rootScope.configuracionInika = self.configuracionInika; $rootScope.configuracionWeb = self.configuracionWeb; $rootScope.configuracionWeb.esVisibleOpcionMatriculado = typeof (self.configuracionWeb.esVisibleOpcionMatriculado) == "undefined" ? true : self.configuracionWeb.esVisibleOpcionMatriculado; $rootScope.configuracionWeb.esVisibleLeyendaIdiomas = typeof (self.configuracionWeb.esVisibleLeyendaIdiomas) == "undefined" ? true : self.configuracionWeb.esVisibleLeyendaIdiomas; $rootScope.configuracionWeb.usaDatosHijos = typeof (self.configuracionWeb.usaDatosHijos) == "undefined" ? false : self.configuracionWeb.usaDatosHijos; $rootScope.configuracionWeb.esSexoOtrosVisible = typeof (self.configuracionWeb.esSexoOtrosVisible) == "undefined" ? false : self.configuracionWeb.esSexoOtrosVisible; $rootScope.configuracionWeb.esVisibleInfoPadron = typeof (self.configuracionWeb.esVisibleInfoPadron) == "undefined" ? true : self.configuracionWeb.esVisibleInfoPadron; $rootScope.configuracionWeb.esSiempreVisibleLM = typeof (self.configuracionWeb.esSiempreVisibleLM) == "undefined" ? false : self.configuracionWeb.esSiempreVisibleLM; $rootScope.culturaActual = culturaActual; $rootScope.numIdioma = numIdioma; $rootScope.tituloWeb = $rootScope.configuracionWeb.titulos["tipo_web_" + $rootScope.configuracionInika.tipoWeb][numIdioma]; defer.resolve(result); }, function (err) { defer.reject(err); }); return defer.promise; } //muestra una alerta function showAlerta(mensaje) { swal(mensaje); } //obtiene la lista de instrumentos, para seleccionar en grupos instrumentales function getInstrumentos() { var defer = $q.defer(); //si ya está la oferta if (self.instrumentos != null) { defer.resolve(self.instrumentos); } else { var config = { url: inikaUrl + 'api/preinscripcion/getInstrumentos', method: 'GET' } $http(config) .then(function (result) { self.instrumentos = result.data.items; defer.resolve(result.data.items); }, function (err) { self.instrumentos = null; defer.reject(err); }); } return defer.promise; } //obtiene la lista de categorias - asignatura - sedes function getOferta() { var defer = $q.defer(); //si ya está la oferta if (self.oferta != null) { defer.resolve(self.oferta); } else { var p = { params: { fechaNacimiento: self.datosPersonales.fechaNacimiento } }; $http.get(inikaUrl + 'api/preinscripcion/getOferta', p) .then(function (result) { self.esPedirInstrumento = result.data.esPedirInstrumento; defer.resolve(result.data.ofertas); }, function (error) { defer.reject(error); }); } return defer.promise; } function setOfertaPlazaLibreSeleccionada(oferta) { self.oferta = oferta; //validaremos en el servicio var defer = $q.defer(); defer.resolve(true); return defer.promise; } //establece la selección de sedes function setOfertaSeleccionada(oferta) { self.oferta = oferta; //validaremos en el servicio var defer = $q.defer(); var payload = self.getPreinscripcionPayload(); var config = { url: inikaUrl + 'api/preinscripcion/ValidarAsignaturasDePreinscripcionDeAlumno', method: 'POST', data: payload } $http(config) .then(function (result) { defer.resolve(true); }, function err(error) { defer.reject(error); }); return defer.promise; } function validarDatosPersonales() { var defer = $q.defer(); //solo nos interesan los datos personales var payload = angular.copy(self.datosPersonales); var config = { url: inikaUrl + 'api/preinscripcion/ValidarDatosPersonalesDePreinscripcionDeAlumno', method: 'POST', data: payload } $http(config) .then(function (result) { defer.resolve(true); }, function err(resultErr) { defer.reject(resultErr); }); return defer.promise; } function getPreinscripcionPayload() { //debemos crear un objecto crearPreinscripcionDeAlumnoInput //datosPersonales tiene propiedades equivalentes. //sólo falta añadirle propieda asignaturas a partir de la oferta seleccionada var payload = angular.copy(self.datosPersonales); payload.asignaturas = []; for (var i = 0; i < self.oferta.length; i++) { var categoria = self.oferta[i]; //recorremos las asignaturas for (var j = 0; j < categoria.asignaturas.length; j++) { var asignatura = categoria.asignaturas[j]; //si tiene experiencia, la añadiremos al payload var payloadAsignatura = { idPreinscripcionAsignatura: asignatura.idPreinscripcionAsignatura, experiencia: asignatura.experiencia, quierePruebaNivel:asignatura.quierePruebaNivel, sedes: [] } //recorremos las sedes for (var k = 0; k < asignatura.sedes.length; k++) { var sede = asignatura.sedes[k]; if (sede.numeroOpcion != null) { payloadAsignatura.sedes.push( { idPreinscripcionAsignatura: asignatura.idPreinscripcionAsignatura, idPreinscripcionAsignaturaSede: sede.idPreinscripcionAsignaturaSede, numeroOpcion: sede.numeroOpcion } ); } } if (payloadAsignatura.sedes.length > 0) { payload.asignaturas.push(payloadAsignatura); } } } return payload; } function crearPreinscripcion() { var defer = $q.defer(); var payload = self.getPreinscripcionPayload(); var config = { url: inikaUrl + 'api/preinscripcion/crearPreinscripcionDeAlumno', method: 'POST', data: payload } $http(config) .then(function (result) { self.idPreinscripcionSolicitud = result.data; defer.resolve(result.data); }, function err(error) { if (error.status == -1) { error.data = locale.errorSinConectividad; } defer.reject(error); }); return defer.promise; } function getAniosNacimientoPosibles() { var anios=[]; for (var i = moment().year() ; i >= 1920; i--) { anios.push(i); } return anios; } //obtiene la lista de categorias - asignatura - sedes function getOfertaPlazasLibres(fechaNacimiento) { var defer = $q.defer(); var p = { params: { fechaNacimiento: fechaNacimiento} }; $http.get(inikaUrl + 'api/preinscripcion/getOfertaPlazasLibres', p) .then(function (result) { self.esPedirInstrumento = result.data.esPedirInstrumento; defer.resolve(result.data.categorias); }, function (error) { defer.reject(error); }); return defer.promise; } self.nav = {}; self.nav.sgte = function () { switch ($state.current.name) { case "inicio": if (self.esWebPlazasLibres === true) { $state.go("plazas"); } else { $state.go("tipo"); } break; case "plazas": $state.go("tipo"); break; case "datos-personales": if (self.esWebPlazasLibres === true) { $state.go("resumen"); } else { $state.go("asignaturas"); } break; } }; self.nav.ant = function () { switch ($state.current.name) { case "inicio": if (self.modoPlazaVacante === true) { $state.go("plazas"); } else { $state.go("tipo"); } break; case "plazas": $state.go("inicio"); break; case "tipo": if (self.esWebPlazasLibres === true) { $state.go("plazas"); } else { $state.go("inicio"); } break; case "resumen": if (self.esWebPlazasLibres === true) { $state.go("datos-personales"); } else { $state.go("asignaturas"); } break; } } self.getPoblaciones = function (nombreABuscar) { var defer = $q.defer(); var payload = { url: self.configuracionInika.hubUrl+"/galactus/geo/poblaciones", method: "GET", params: { nombre: nombreABuscar, incluirAquitania:true } }; $http(payload) .then(function (response) { defer.resolve(response); }, function (response) { defer.reject(); }); return defer.promise; } self.getPaises = function () { var defer = $q.defer(); var payload = { url: self.configuracionInika.hubUrl +"/galactus/geo/paises", method: "GET" }; $http(payload) .then(function (response) { defer.resolve(response); }, function (response) { defer.reject(); }); return defer.promise; } return self; }]);