{"version":3,"sources":["app/app.module.js","app/services/user/user.service.js","app/services/profiles/profile.service.js","app/services/profiles/page-ribbon.directive.js","app/services/cliente/cliente.service.js","app/services/auth/register.service.js","app/services/auth/principal.service.js","app/services/auth/password-reset-init.service.js","app/services/auth/password-reset-finish.service.js","app/services/auth/password.service.js","app/services/auth/has-authority.directive.js","app/services/auth/has-any-authority.directive.js","app/services/auth/auth.service.js","app/services/auth/auth.jwt.service.js","app/services/auth/activate.service.js","app/services/auth/account.service.js","app/layouts/whatsappLink/whatsappLink.controller.js","app/layouts/navbar/navbar.controller.js","app/layouts/error/error.state.js","app/layouts/cotizadorFlotante/cotizadorFlotante.controller.js","app/home/home.state.js","app/home/home.service.js","app/home/home.controller.js","app/entities/entity.state.js","app/components/util/truncate-words.filter.js","app/components/util/truncate-characters.filter.js","app/components/util/sort-by.directive.js","app/components/util/sort.directive.js","app/components/util/parse-links.service.js","app/components/util/pagination-util.service.js","app/components/util/jhi-item-count.directive.js","app/components/util/error.constants.js","app/components/util/date-util.service.js","app/components/util/data-util.service.js","app/components/util/classie.js","app/components/util/capitalize.filter.js","app/components/util/base64.service.js","app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente-save-locations-dialog.controller.js","app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente-locations.service.js","app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente-locations.controller.js","app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente.service.js","app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente.directive.js","app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente.controller.js","app/components/sQLExportData/sQLExportData.state.js","app/components/sQLExportData/sQLExportData.service.js","app/components/sQLExportData/sQLExportData.controller.js","app/components/resultEncuestaCliente/resultEncuestaCliente.state.js","app/components/resultEncuestaCliente/resultEncuestaCliente.controller.js","app/components/productos/productos.state.js","app/components/productos/productos.controller.js","app/components/preguntaEncuestaCliente/preguntaEncuestaCliente.service.js","app/components/preguntaEncuestaCliente/preguntaEncuestaCliente.directive.js","app/components/preguntaEncuestaCliente/preguntaEncuestaCliente.controller.js","app/components/nuevaEncuestaCliente/nuevaEncuestaCliente.state.js","app/components/nuevaEncuestaCliente/nuevaEncuestaCliente.controller.js","app/components/modalEncuesta/modalEncuesta.state.js","app/components/modalEncuesta/modalEncuesta.controller.js","app/components/membresiaSaldo/membresiaSaldo.component.js","app/components/membresia/membresiaContratar-dialog.controller.js","app/components/membresia/membresia.state.js","app/components/membresia/membresia.service.js","app/components/membresia/membresia.controller.js","app/components/membresia/confirmacionMembresia-dialog.controler.js","app/components/login/login.service.js","app/components/login/login.controller.js","app/components/investigacion/investigacion.state.js","app/components/investigacion/investigacion.controller.js","app/components/industrias/industrias.state.js","app/components/industrias/industrias.controller.js","app/components/historialCompras/historialCompras-detail.controller.js","app/components/historialCompras/historialCompras.state.js","app/components/historialCompras/historialCompras.service.js","app/components/historialCompras/historialCompras.controller.js","app/components/form/show-validation.directive.js","app/components/form/pagination.constants.js","app/components/form/minbytes.directive.js","app/components/form/maxbytes.directive.js","app/components/encuestasCliente/encuestasCliente-detail.controller.js","app/components/encuestasCliente/encuestasCliente-delete.controller.js","app/components/encuestasCliente/encuestasCliente.state.js","app/components/encuestasCliente/encuestasCliente.service.js","app/components/encuestasCliente/encuestasCliente.controller.js","app/components/datosEncuestaCliente/datosEncuestaCliente.directive.js","app/components/datosEncuestaCliente/datosEncuestaCliente.controller.js","app/components/dashboard/dashboard.state.js","app/components/dashboard/dashboard.controller.js","app/components/cotizador/cotizador.service.js","app/components/cotizador/cotizador.directive.js","app/components/cotizador/cotizador.controller.js","app/components/carritoEncuestaCliente/carritoEncuestaCliente.directive.js","app/components/carritoEncuestaCliente/carritoEncuestaCliente.controller.js","app/components/carrito/carritoRemoveEncuesta-dialog.controler.js","app/components/carrito/carritoCompra-dialog.controller.js","app/components/carrito/carrito.state.js","app/components/carrito/carrito.service.js","app/components/carrito/carrito.provider.js","app/components/carrito/carrito.controller.js","app/components/cardForm/cardForm.controller.js","app/components/cardForm/cardForm.component.js","app/components/alert/alert-error.directive.js","app/components/alert/alert.service.js","app/components/alert/alert.directive.js","app/blocks/interceptor/notification.interceptor.js","app/blocks/interceptor/errorhandler.interceptor.js","app/blocks/interceptor/auth-expired.interceptor.js","app/blocks/interceptor/auth.interceptor.js","app/blocks/interceptor/api.interceptor.js","app/blocks/handlers/state.handler.js","app/blocks/config/uib-pagination.config.js","app/blocks/config/uib-pager.config.js","app/blocks/config/localstorage.config.js","app/blocks/config/http.config.js","app/blocks/config/compile.config.js","app/blocks/config/alert.config.js","app/app.state.js","app/app.constants.js","app/admin/user-management/user-management-dialog.controller.js","app/admin/user-management/user-management-detail.controller.js","app/admin/user-management/user-management-delete-dialog.controller.js","app/admin/user-management/user-management-assign-cliente-dialog.controller.js","app/admin/user-management/user-management.state.js","app/admin/user-management/user-management.controller.js","app/admin/respuestas/respuestas-edit-dialog.controller.js","app/admin/respuestas/respuestas-delete-dialog.controller.js","app/admin/respuestas/respuestas.state.js","app/admin/respuestas/respuestas.service.js","app/admin/respuestas/respuestas.controller.js","app/admin/metrics/metrics.state.js","app/admin/metrics/metrics.service.js","app/admin/metrics/metrics.modal.controller.js","app/admin/metrics/metrics.controller.js","app/admin/membresia/adminMembresiaEditMembership-dialog.controler.js","app/admin/membresia/adminMembresiaEditItem-dialog.controler.js","app/admin/membresia/adminMembresia.state.js","app/admin/membresia/adminMembresia.controller.js","app/admin/logs/logs.state.js","app/admin/logs/logs.service.js","app/admin/logs/logs.controller.js","app/admin/health/health.state.js","app/admin/health/health.service.js","app/admin/health/health.modal.controller.js","app/admin/health/health.controller.js","app/admin/encuestasCliente/aprobarEncuestaCliente-dialog.controller.js","app/admin/encuestasCliente/adminEncuestasCliente.state.js","app/admin/encuestasCliente/adminEncuestasCliente.controller.js","app/admin/docs/docs.state.js","app/admin/controlInputs/valoresSKU/valoresSKU.state.js","app/admin/controlInputs/valoresSKU/valoresSKU.controller.js","app/admin/controlInputs/tiempoEjecucionUsuario/tiempoEjecucionUsuario.state.js","app/admin/controlInputs/tiempoEjecucionUsuario/tiempoEjecucionUsuario.controller.js","app/admin/controlInputs/controlInputs.service.js","app/admin/controlInputs/cantidadRespuestas/cantidadRespuestas.state.js","app/admin/controlInputs/cantidadRespuestas/cantidadRespuestas.controller.js","app/admin/configuration/configuration.state.js","app/admin/configuration/configuration.service.js","app/admin/configuration/configuration.controller.js","app/admin/cliente-management/cliente-management-dialog.controller.js","app/admin/cliente-management/cliente-management-delete-dialog.controller.js","app/admin/cliente-management/cliente-management.state.js","app/admin/cliente-management/cliente-management.controller.js","app/admin/audits/audits.state.js","app/admin/audits/audits.service.js","app/admin/audits/audits.controller.js","app/admin/admin.state.js","app/account/settings/settingsAddCard-dialog.controller.js","app/account/settings/settings.state.js","app/account/settings/settings.controller.js","app/account/reset/request/reset.request.state.js","app/account/reset/request/reset.request.controller.js","app/account/reset/finish/reset.finish.state.js","app/account/reset/finish/reset.finish.controller.js","app/account/register/register.state.js","app/account/register/register.controller.js","app/account/password/password-strength-bar.directive.js","app/account/password/password.state.js","app/account/password/password.controller.js","app/account/activate/activate.state.js","app/account/activate/activate.controller.js","app/account/account.state.js","app/app.js"],"names":["run","stateHandler","initialize","angular","module","$inject","User","$resource","query","method","get","transformResponse","data","fromJson","save","update","delete","UserByFacebook","factory","ProfileService","$http","dataPromise","getProfileInfo","isUndefined","then","result","activeProfiles","response","ribbonEnv","inProduction","indexOf","swaggerEnabled","pageRibbon","$rootScope","replace","restrict","template","link","scope","element","attrs","addClass","removeClass","directive","Cliente","Register","Principal","$q","Account","_identitySubject","Rx","BehaviorSubject","undefined","_authenticated","authenticate","identity","onNext","value","getIdentitySubject","hasAnyAuthority","authorities","Authorities","i","length","hasAuthority","authority","when","this","_id","force","deferred","defer","isDefined","resolve","$promise","account","catch","promise","isAuthenticated","isIdentityResolved","PasswordResetInit","getResetToken","user","post","PasswordResetFinish","resetPassword","Password","setVisible","defineVisibility","reset","$watch","split","Auth","$state","$sessionStorage","AuthServerProvider","LoginService","Activate","activateAccount","key","callback","cb","noop","err","bind","authorize","toState","parent","name","go","fromState","getPreviousState","previousState","resetPreviousState","params","storePreviousState","toStateParams","open","changePassword","newPassword","createAccount","logout","login","credentials","reject","loginWithToken","jwt","rememberMe","resetPasswordFinish","keyAndPassword","resetPasswordInit","mail","updateAccount","previousStateName","previousStateParams","$localStorage","service","getToken","authenticationToken","username","password","grant_type","obj","push","encodeURIComponent","join","toParams","success","access_token","token_type","storeAuthenticationToken","isArray","interceptor","component","templateUrl","controllerAs","bindings","number","NavbarController","$window","CarritoProvider","$timeout","SQLExportDataService","vm","collapseNavbar","reload","toggleNavbar","isNavbarCollapsed","document","getElementById","style","marginBottom","isAdmin","pending","hasQueries","forEach","auth","getHasAnyQuery","principalMenuLi","$","principalMenu","pageYOffset","subscribe","getCarritoSubject","controller","stateConfig","$stateProvider","state","url","pageTitle","views","content@","config","CotizadorFlotanteController","floatCotizador","openCotizadorFlotante","showCotizador","openLogin","auditoresActivos","HomeService","queryAuditores","clientes","queryClientes","encuestaContactos","queryEncuestaContactos","chartVariables","queryDashboardVariables","BACKOFFICE_API_URL","error","count","HomeController","$scope","$mdDialog","$interval","getAccount","resenas","fechas","contactos","contacto","formatDate","moment","Fecha","format","Cantidad","register","changeVideo","src","modal","$on","ready","on","attr","init","fadeOut","fadeIn","showVideo","ev","show","closeModal","hide","body","targetEvent","clickOutsideToClose","abstract","filter","input","words","isNaN","inputWords","slice","chars","breakOnWord","substring","charAt","substr","lastspace","lastIndexOf","require","parentCtrl","sort","jhSortBy","SortController","$element","applyClass","thisIcon","find","sortAsc","sortDesc","remove","sortIcon","add","ascending","resetClasses","allThIcons","field","predicate","$apply","triggerApply","values","$watchGroup","bindToController","parse","header","Error","parts","links","p","section","trim","queryString","RegExp","$0","$1","$2","$3","page","isString","parseInt","parseAscending","parsePage","parsePredicate","sortArray","pop","queryCount","itemsPerPage","problemBaseUrl","constant","EMAIL_ALREADY_USED_TYPE","LOGIN_ALREADY_USED_TYPE","EMAIL_NOT_FOUND_TYPE","DateUtils","$filter","convertDateTimeFromServer","date","Date","convertLocalDateFromServer","dateString","convertLocalDateToServer","dateformat","DataUtils","abbreviate","text","byteSize","base64String","endsWith","suffix","str","size","toString","formatAsBytes","paddingSize","openFile","type","fileURL","write","toBase64","file","fileReader","FileReader","readAsDataURL","onload","e","base64Data","target","window","classReg","className","hasClass","toggleClass","elem","c","documentElement","classList","contains","test","classie","has","toggle","define","amd","toLowerCase","toUpperCase","keyStr","decode","chr1","chr2","chr3","enc1","enc2","enc3","enc4","output","String","fromCharCode","encode","charCodeAt","UbicacionEncuestaClienteSaveLocationsDialogController","$uibModalInstance","ubicacions","ubicacionLista","Ubicacions","clear","dismiss","ubicacion","Latitud","Pos","Longitud","close","console","log","UbicacionEncuestaClienteLocationsService","queryCadenasLists","queryTiendasLists","queryEstadosLists","queryMunicipiosLists","queryListsByFilter","filtros","Cadena","Tienda","Estado","Municipio","UbicacionEncuestaClienteLocationsController","defaultList","CadenasList","TiendasList","EstadosList","MunicipiosList","isDefault","select","selectedCadena","selectedTiendas","selectedEstados","selectedMunicipios","listasUbi","listaSelect","selectUbicaciones","ubicacionesSelect","list","Nombre","Descripcion","Id","$$hashKey","selectList","listVisible","isPlaceholder","selected","listaDefault","Cadenas","Tiendas","Estados","Municipios","UbicacionEncuestaService","queryDefaultLists","queryUserLists","encuesta","changeTab","UbicacionEncuestaClienteController","NgMap","$uibModal","validateForm","confirmEncuesta","animate","scrollTop","changeToFinal","exportTableToExcel","cargarTabla","descargarTabla","downloadLink","tableHTML","outerHTML","filename","createElement","appendChild","navigator","msSaveOrOpenBlob","blob","Blob","href","download","click","descargarTemplete","datatype","topPage","isLoading","Ubicaciones","CantidadContactos","mostrarTabla","center","arregloExcel","Canal","Formato","CodigoTienda","Calle","DescTRM","templete","getMap","map","zoomOut","matchMedia","matches","setZoom","setCenter","google","maps","LatLng","getpos","event","lat","latLng","lng","latlng","addMarker","ll","getReverseGeocodingData","placeChanged","place","getPlace","addLocationToList","isPlace","nuevaUbicacion","geometry","location","address","RadioCobertura","types","Tipo","markerData","exit","posString","Geocoder","geocode","results","status","GeocoderStatus","OK","formatted_address","NombreLista","isAddressEmpty","showDeleteConfirmation","confirm","title","ok","cancel","isDefaultList","showDefaultLists","showLocationLists","showUserLists","setContacts","options","floor","ceil","showSelectionBar","selectionBarGradient","from","to","maxUbicaciones","removeLocation","index","splice","saveLocationLists","setDefaultRadio","defaultRadioValue","borrar","queries","API_URL","runQuery","queryId","tipo","d","SQLExportDataController","id","a","contentType","headers","JSON","stringify","URL","createObjectURL","ResultsEncuestasClienteController","$stateParams","$sce","EncuestasClienteService","firstLoad","instance","encuestaResults","aprobados","displayOnly","encuestaId","dataIsReady","contactoDataIsReady","estadisticasDataIsReady","photoIsReady","mediaDictionary","redirect","heightToTop","clientHeight","top","scrollIntoView","block","efectividad","ventaTotal","isLoadoingEstadisticas","isLoadoingEstadisticasEfectividad","showing","progressCheckAbierto","efectividadVerTodos","firstLoadEfectividad","fechaDesde","fechaHasta","isFiltered","encuestadorNameFilter","mostrarGeosTodos","geosTodos","zipsEnProgreso","path","getResultEstadisticas","encuestadorId","encuestador","instancia","NumeroInstancias","getEncuestaBySitiowebId","estadisticas","Estadisticas","RespuestasCount","EncuestadoresCount","pregunta","chartData","labels","Opciones","opcion","Valor","getResultEstadisticasEfectividad","Efectividad","InstanciasVenta","TotalInstancias","porcentajeEfectividad","parseFloat","toFixed","VentaTotal","ventaTotalFormatted","VentaTotalFormatted","ventaPromedio","VentaPromedioFormatted","getEncuestadores","getEncuestadoresByEncuestaResults","totalPages","Total","Content","encuestadores","Contactos","Intl","DateTimeFormat","resolvedOptions","timeZone","getResultsByEncuestadorId","numeroInstancia","idSelected","preguntas","Preguntas","Geos","geos","geosJson","geo","geoId","g","Geo","latitude","longitude","NumeroInstancia","icon","catalogoTotal","Resultados","resultado","Respuestas","respuesta","RespuestasCatalogo","r","Precio","ValorNumerico","FechaSubida","Type","ValorGeo","ValorImagePath","getImage","changeInstance","changeInstanceBynro","changeInstanceGeo","$event","nroInstancia","changePage","doughnutChartOptions","aspectRatio","tooltips","enabled","hover","mode","filtrarPorFecha","limpiarFiltros","exportToCSV","exportResultsToCSV","checkearZip","fileName","dictId","nombre","check","csv","exportToPDF","defaultEmail","getValue","UserName","isMediaExport","email","slides","cargando","cerrar","dismissear","exportResultsToPDF","isMediaAvailable","respuestaId","getMedia","refreshDatos","abrirModal","paraEncuestador","getMediaForCarousel","slidesIniciales","onCarouselAfterChange","slide","x","agregarALista","agregarSinEncuestador","sendMediaEmail","NombreApellido","descargarOReintentar","item","quitarDeLista","checkForFile","$evalAsync","getLinkForFile","buscarGeosTodos","dynMarkers","bounds","LatLngBounds","valorGeo","Marker","position","NombreEncuestador","extend","clusterer","MarkerClusterer","maxZoom","imagePath","getCenter","fitBounds","ProductosController","selectedTab","selectedCar","showTab","tab","selectCar","car","scrollTo","PreguntaEncuestaClienteService","queryQuestionsTypes","tipoPregunta","NombreFE","questionsTypes","PreguntaEncuestaClienteController","tiposPreguntas","cambiar","num1","num2","objTemp","copy","addNewPregunta","AccionType","Orden","AccionTypeObject","PermitirMultiples","PreguntaPadre","Requerida","Preventivo","ControlPreventivo","PrecioObjetivo","MinAlerta","MaxAlerta","MinCandado","MaxCandado","RequeridaPorPadre","RequeridoBooleano","RequeridoOpcionMultiple","addNewRespuesta","posicion","n","newItemNo","NumeroRespuesta","Opcion","addNewProducto","Productos","newProductoNo","NumeroProducto","removeProducto","producto","removeRespuesta","cambiarPreguntaPadre","numeroPregunta","preguntaAux","preguntaPadre","validateControlPreventivo","cp","validateNullAlerta","validateNullCandado","validateRangeAlerta","validateRangeCandado","validateRanges","cambiarRequerido","copyDown","moveUp","moveDown","sendToFirst","primero","sendToLast","ultimo","removePregunta","indice","TipoPregunta","ActionType","audioVideoQuestions","cantidad","imageQuestions","simpleQuestions","totalQuestions","setQuestionsType","getVisibilityRequeridaPadre","padre","updatedPreventivo","isDuplicated","criteriosAceptacion","getCriteriosAceptacion","NuevaEncuestaClienteController","$location","validateSave","FechaInicio","fechaInicioValida","FechaVigencia","fechaVigenciaValida","TipoEncuesta","CriterioAceptacion","validateAdd","valido","Texto","validacionGuardar","validacionAgregar","setDate","getDate","fechaVigencia","fechaInicio","labelDetallesEncuesta","labelPreguntasEncuesta","labelUbicacionEncuesta","labelCostoEncuesta","selectedIndex","validacion","validateQuestion","descripcion","CriteriosAceptacion","criterios","Activo","Exito","Fracaso","Auditores","auditores","nuevaEncuestaView","ModalEncuestaController","saveEncuesta","Localizacion","positions","Aceptacion","Encuesta","showAlert","dateAceptacion","EncuestasHttpServices","encuestaCreateRequest","dataResponse","encuestaDetalles","showModalTerms","alert","MembresiaService","membership","CantidadContacto","contactosChartData","contactosLibres","doughnutChartColors","MembresiaContratarDialogController","userMembership","userCard","hasMembership","showdialogcard","modalAcept","suscribe","memberships","queryMemberships","logged","onEnter","getMembership","getUserMembership","CarritoService","getCard","queryItems","getMembresiaCarrito","getMembresiaToApprove","cancelMembership","getNextMembership","getContactosLibres","getPreguntasLibres","createMembership","deleteMembership","updateMembership","put","createItem","deleteItem","updateItem","membresiaId","getApprovalLink","executeAgreement","agreementToken","cancelMembresiaToApprove","approveMembresia","MembresiaController","faltaLogin","closed","setMembresiaButtonText","message","Active","Carrito","isGettingToken","Items","b","Destacado","PrecioFinal","Descuento","ConfirmacionMembresiaController","modalInstance","animation","resetModal","LoginController","preventDefault","authenticationError","current","$broadcast","resp","noClientError","loginWithFacebookData","FB","api","fields","requestResetPassword","facebookLogin","getLoginStatus","facebookId","newUser","FacebookId","Email","LangKey","FirstName","first_name","LastName","last_name","Telefono","facebookLoginError","focus","InvestigacionController","IndustriasController","HistorialComprasDetailController","getCompra","historial","compra","print","getHistorialCompras","HistorialComprasService","role","queryAllHistorialCompras","queryHistorialCompras","queryCompra","historialCompras","msg","uploadReceipt","$file","compraDTO","FacturaFile","HistorialComprasController","formCtrl","each","$formGroup","$inputs","inputName","$invalid","$dirty","isInvalid","ngModel","$validators","minbytes","modelValue","$isEmpty","maxbytes","EncuestasClienteDetailController","history","back","EncuestasClienteDeleteController","deleteEncuesta","encuestas","queryEncuestasClienteByPage","encuestasSummary","summary","approve","queryEncuestasCliente","queryEncuestasClienteByEstado","queryEncuestasClienteByName","createFromExcel","formData","excelDTO","addToCart","removeFromCart","Content-type","getEncuestaResults","idEncuesta","pageData","Size","Number","getTime","approveOnly","encuestaID","contactoId","esCSV","sitiowebId","offset","EncuestasClienteController","loadingTabla","TotalPages","removeEncuesta","searchEncuesta","mostrandoBusquedas","resetBusqueda","DisplayOnlyAuditedContacts","dateHoy","activasChartData","Activas","vigentesChartData","Vigentes","finalizadasChartData","Finalizadas","pendientesChartData","Pendientes","loadSummaryCharts","DatosEncuestaClienteController","getDay","minDate","minDate2","v","onlyWeekendsPredicate","day","contactTypes","nextMembership","DashboardController","userMembresia","nextMembresia","costoEncuesta","descripcionContactosLibres","colors","Monto","loadEncuestaChart","CotizadorService","preguntasLibres","accesoComunidad","bonificaciones","CantidadPreguntaEncuesta","getCotizadorVariable","queryCotizadorBonificacion","getTotal","isFloating","total","reduce","getPrecioEncuesta","getBonificacion","reloadContactosLibres","exContactos","Math","max","totalPreguntas","exPreguntas","reverse","getPrecioPreguntas","precioContacto","DescuentoContacto","CotizadorController","calculatePrice","onChange","showTicks","refreshSlider","totalPrice","getTotalPrecio","bonificado","getPorcentajeBonificacion","costoContacto","getTotalContactos","price","precioUnitario","getContactosBonificados","min","cantidadContactos","getContactosBonificadosTotal","getPreguntasNormalesTotal","cantidadPreguntas","getPrecioPreguntasNormalesTotal","n1","getSubtotal","finalPrice","sliderDisabled","precioSimple","precioAudioVideo","precioImagen","readOnly","CarritoEncuestaClienteController","changeTabSig","saveAndAddToCart","EncuestaSitioWebId","addEncuesta","showAlertOnAddToCart","completa","listaBoolean","isSaving","showAlertOnSave","myVar","faltaGuardar","faltaAgregar","textContent","ariaLabel","CarritoRemoveEncuestaController","CarritoCompraDialogController","precioTotal","lastFactura","membresia","cambio","tipoPago","isPayPalRendered","checkout","processingPayment","pagoTarjeta","pagoTransferencia","pagoCorporativo","payment","EncuestaDTOs","montoTotal","Factura","factura","facturaInfo","Apellido","Direccion","RFC","paySurveys","payError","payDone","fetchEncuestasCarrito","CLABE","Referencia","Montos","paypal","Buttons","createOrder","actions","order","create","purchase_units","amount","onApprove","capture","details","OrderId","orderID","render","card","expiredDate","CSV","trazabilityCode","encuestasCarrito","queryCarrito","membresiaCarrito","queryMembresiaCarrito","getLastCompra","getCards","carritoSubject","fetchMembresiaCarrito","addMembresia","carrito","CarritoController","habilitadaCompra","dateInicio","dateVigencia","descripcionContactos","processPurchase","precio","recargo","CardFormController","visa","mastercard","amex","cardNumber","match","cardBrand","isCardNumberValid","cleanCardNumber","jhiAlertError","jhiAlertErrorController","AlertService","addErrorAlert","alerts","timeout","toast","isToast","scoped","cleanHttpErrorListener","httpResponse","stopPropagation","Object","keys","errorHeader","fieldErrors","fieldError","convertedField","fieldName","toJson","provider","getService","alertId","alertOptions","trustAsHtml","closeAlert","extAlerts","that","closeAlertByIndex","info","warning","thisAlerts","$get","showAsToast","jhiAlert","jhiAlertController","notificationInterceptor","alertKey","param","errorHandlerInterceptor","responseError","$emit","authExpiredInterceptor","$injector","authInterceptor","request","token","Authorization","apiInterceptor","VERSION","stateChangeStart","external","stateChangeSuccess","fromParams","titleKey","paginationConfig","uibPaginationConfig","paginationConstants","maxSize","boundaryLinks","firstText","previousText","nextText","lastText","pagerConfig","uibPagerConfig","localStorageConfig","$localStorageProvider","$sessionStorageProvider","setKeyPrefix","httpConfig","$urlRouterProvider","$httpProvider","httpRequestInterceptorCacheBusterProvider","$urlMatcherFactoryProvider","setMatchlist","otherwise","interceptors","val","equals","is","pattern","compileServiceConfig","$compileProvider","DEBUG_INFO_ENABLED","debugInfoEnabled","alertServiceConfig","AlertServiceProvider","navbar@","footer@","cotizadorFlotante@","whatsappLink@","UserManagementDialogController","entity","onSaveSuccess","onSaveError","languages","langKey","UserManagementDetailController","load","UserManagementDeleteController","confirmDelete","UserManagementAssignClienteDialogController","onSuccess","totalItems","TotalElements","onError","loadAll","cliente","backdrop","firstName","lastName","activated","createdBy","createdDate","lastModifiedBy","lastModifiedDate","resetDate","resetKey","UserManagementController","ParseLinks","users","RespuestasEditController","encuestaAccionId","RespuestasService","loading","multipleChoiceArray","EncuestaAccion","MultipleChoice","change","getRespuesta","RespuestasDeleteController","deleteRespuesta","encuestaAccionid","EncuestaAccionId","Instancia","datos","RespuestasController","respuestas","getRespuestas","editRespuesta","JhiMetricsService","getMetrics","threadDump","JhiMetricsMonitoringModalController","getLabelClass","threadState","threadDumpAll","threadDumpBlocked","threadDumpRunnable","threadDumpTimedWaiting","threadDumpWaiting","JhiMetricsMonitoringController","metrics","refresh","updatingMetrics","refreshThreadDumpData","servicesStats","newValue","timers","includes","AdminMembresiaEditMembershipController","items","assign","AdminMembresiaEditItemController","AdminMembresiaController","loadMembresias","userMembresias","cancelMembresia","clearMessage","addMembership","removeMembership","addItem","editItem","removeItem","editMembership","initItems","LogsService","findAll","changeLevel","LogsController","level","loggers","JhiHealthService","checkHealth","transformHealthData","flattenHealthData","getBaseName","getSubSystemName","remainder","isHealthObject","healthObject","hasSubSystem","addHealthObject","getModuleName","isLeaf","healthData","hasDetails","HealthModalController","currentHealth","baseName","subSystemName","JhiHealthCheckController","updatingHealth","statusState","showHealth","health","AprobarEncuestaDialogController","aprobar","AdminEncuestasClienteController","formdata","aprobarEncuesta","FormData","isBlankFile","getTheFiles","$files","append","uploadFiles","isProcessing","Content-Type","$parse","ngFiles","files","controlInputList","controlInputFilters","ControlInputsService","getControlInputFilters","ValoresSKUController","barChartData","barChartLabels","barChartSeries","barChartColors","backgroundColor","borderColor","pointBackgroundColor","pointBorderColor","pointHoverBackgroundColor","pointHoverBorderColor","barChartOptions","scales","xAxes","scaleLabel","display","fontSize","labelString","yAxes","y","beginAtZero","valoresSKUList","maxDate","encuestaDataList","controlInputFiltersList","cantidadFiltros","requestValoresSKU","controlInput","FechaDesde","FechaHasta","getAllData","getValoresSKU","minValue","maxValue","ValorSKU","minValueAux","pos","valoresSKU","Data","Media","Moda","Sd","Max","Min","encuestaData","getEncuestaData","valorAux","valorActual","cantidadActual","cantidadAux","round","sum","pow","sqrt","elemPos","updateByProyecto","Encuestas","Encuestadores","EncuestaId","getEncuestasByProyecto","ProyectoId","updateEncuestas","Canales","getCanalesByProyecto","updateCanales","getEstadosByProyecto","updateEstados","SKUs","getSKUsByProyecto","skusAux","SKU","updateSKUs","updateMunicipios","getMunicipiosByProyectoAndEstado","updateEncuestadores","getEncuestadoresByEncuesta","encuestadoresAux","route","getEncuestaDataByEncuesta","exportValoresSKUToCSV","TiempoEjecucionUsuarioController","callbacks","label","tooltipItem","minutos","segundos","cantidadRespuestas","sumaRespuestas","tiempoEjecucionList","datasetIndex","TiempoEjecucion","CantidadRespuestas","requestTiempoEjecucionUsuario","getTiempoEjecucionUsuario","dataAux","media","sumAux","divisions","inicialValue","j","tiempoEjecucion","tiempoAux","tiempoActual","aux","posElem","exportControlInputToCSV","dataFunction","all","getCantidadRespuestas","proyectoId","estadoNombre","CantidadRespuestasController","cantidadRespuestasList","requestCantidadRespuestas","respuestasAux","respuestasActual","JhiConfigurationService","properties","orderBy","getEnv","vals","k","JhiConfigurationController","allConfiguration","configuration","ClienteManagementDialogController","setImagen","imagen","$error","Logo","LogoContentType","clearImage","ClienteManagementDeleteController","ClienteManagementController","AuditsService","fromDate","toDate","AuditsController","audits","loadPage","onChangeDate","previousMonth","getMonth","getFullYear","today","SettingsAddCardController","addCard","ExpMonth","ExpYear","Cvc","Name","Stripe","setPublishableKey","userCards","SettingsController","copyAccount","settingsAccount","Imagen","ImagenContentType","deleteCard","findIndex","setDefault","cardModal","RequestResetController","errorEmailNotExists","requestReset","resetAccount","ResetFinishController","keyMissing","confirmPassword","doNotMatch","finishReset","Token","Username","NewPassword","RegisterController","errorConstants","errorUserExists","registerAccount","ConfirmPassword","errorEmailExists","passwordToCheck","iElement","strength","mesureStrength","_force","_flags","_passedMatches","grep","el","getColor","s","idx","col","children","css","background-color","PasswordController","ActivationController","$templateCache"],"mappings":"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","file":"app/app-42778b4243.js","sourcesContent":["(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp', [\r\n 'ngStorage',\r\n 'ngResource',\r\n 'ngCookies',\r\n 'ngAria',\r\n 'ngCacheBuster',\r\n 'ngFileUpload',\r\n 'ui.bootstrap',\r\n 'ui.bootstrap.datetimepicker',\r\n 'ui.router',\r\n 'infinite-scroll',\r\n // jhipster-needle-angularjs-add-module JHipster will add new module here\r\n 'angular-loading-bar',\r\n 'ngMaterial',\r\n 'ngAnimate',\r\n 'rzModule',\r\n 'rx',\r\n 'chart.js',\r\n 'ngMap',\r\n 'angularSpinner',\r\n 'ui.carousel'\r\n ])\r\n .run(run);\r\n\r\n run.$inject = ['stateHandler'];\r\n\r\n function run(stateHandler) {\r\n stateHandler.initialize();\r\n }\r\n})();\r\n","// TODO: hacer como los demas services (estaba apurado por la demo)\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('User', User)\r\n .factory('UserByFacebook', UserByFacebook);\r\n\r\n User.$inject = ['$resource'];\r\n UserByFacebook.$inject = ['$resource'];\r\n\r\n function User ($resource) {\r\n var service = $resource('api/users/:id', {}, {\r\n 'query': { method: 'GET' },\r\n 'get': {\r\n method: 'GET',\r\n transformResponse: function (data) {\r\n data = angular.fromJson(data);\r\n return data;\r\n }\r\n },\r\n 'save': { method:'POST' },\r\n 'update': { method:'PUT' },\r\n 'delete':{ method:'DELETE'}\r\n });\r\n\r\n return service;\r\n }\r\n\r\n function UserByFacebook ($resource) {\r\n var service = $resource('api/users/facebook/:facebookId', {}, {\r\n 'get': {\r\n method: 'GET',\r\n transformResponse: function (data) {\r\n data = angular.fromJson(data);\r\n return data;\r\n }\r\n }\r\n });\r\n\r\n return service;\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('ProfileService', ProfileService);\r\n\r\n ProfileService.$inject = ['$http'];\r\n\r\n function ProfileService($http) {\r\n\r\n var dataPromise;\r\n\r\n var service = {\r\n getProfileInfo : getProfileInfo\r\n };\r\n\r\n return service;\r\n\r\n function getProfileInfo() {\r\n if (angular.isUndefined(dataPromise)) {\r\n dataPromise = $http.get('api/profile-info').then(function(result) {\r\n if (result.data.activeProfiles) {\r\n var response = {};\r\n response.activeProfiles = result.data.activeProfiles;\r\n response.ribbonEnv = result.data.ribbonEnv;\r\n response.inProduction = result.data.activeProfiles.indexOf(\"prod\") !== -1;\r\n response.swaggerEnabled = result.data.activeProfiles.indexOf(\"swagger\") !== -1;\r\n return response;\r\n }\r\n });\r\n }\r\n return dataPromise;\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('pageRibbon', pageRibbon);\r\n\r\n pageRibbon.$inject = ['ProfileService', '$rootScope'];\r\n\r\n function pageRibbon(ProfileService, $rootScope) {\r\n var directive = {\r\n replace : true,\r\n restrict : 'AE',\r\n template : '
{{ribbonEnv}}
',\r\n link : linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc(scope, element, attrs) {\r\n ProfileService.getProfileInfo().then(function(response) {\r\n if (response.ribbonEnv) {\r\n scope.ribbonEnv = response.ribbonEnv;\r\n element.addClass(response.ribbonEnv);\r\n element.removeClass('hidden');\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n","// TODO: hacer como los demas services (estaba apurado por la demo)\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Cliente', Cliente);\r\n\r\n Cliente.$inject = ['$resource'];\r\n\r\n function Cliente ($resource) {\r\n var service = $resource('api/clientes/:id', {}, {\r\n 'query': { method: 'GET' },\r\n 'get': {\r\n method: 'GET',\r\n transformResponse: function (data) {\r\n data = angular.fromJson(data);\r\n return data;\r\n }\r\n },\r\n 'save': { method:'POST' },\r\n 'update': { method:'PUT' },\r\n 'delete':{ method:'DELETE'}\r\n });\r\n\r\n return service;\r\n }\r\n})();","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Register', Register);\r\n\r\n Register.$inject = ['$resource'];\r\n\r\n function Register ($resource) {\r\n return $resource('api/account/register', {}, {});\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Principal', Principal);\r\n\r\n Principal.$inject = ['$q', 'Account'];\r\n\r\n function Principal ($q, Account) {\r\n var _identitySubject = new Rx.BehaviorSubject(undefined),\r\n _authenticated = false;\r\n\r\n var service = {\r\n authenticate: authenticate,\r\n getIdentitySubject: getIdentitySubject,\r\n hasAnyAuthority: hasAnyAuthority,\r\n hasAuthority: hasAuthority,\r\n identity: identity,\r\n isAuthenticated: isAuthenticated,\r\n isIdentityResolved: isIdentityResolved\r\n };\r\n\r\n return service;\r\n\r\n function authenticate (identity) {\r\n _identitySubject.onNext(identity);\r\n _authenticated = _identitySubject.value !== null;\r\n }\r\n\r\n function getIdentitySubject() {\r\n return _identitySubject;\r\n }\r\n\r\n function hasAnyAuthority (authorities) {\r\n if (!_authenticated || !_identitySubject.value || !_identitySubject.value.Authorities) {\r\n return false;\r\n }\r\n\r\n for (var i = 0; i < authorities.length; i++) {\r\n if (_identitySubject.value.Authorities.indexOf(authorities[i]) !== -1) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function hasAuthority (authority) {\r\n if (!_authenticated) {\r\n return $q.when(false);\r\n }\r\n\r\n return this.identity().then(function(_id) {\r\n return _id.Authorities && _id.Authorities.indexOf(authority) !== -1;\r\n }, function(){\r\n return false;\r\n });\r\n }\r\n\r\n function identity (force) {\r\n var deferred = $q.defer();\r\n\r\n if (force === true || !angular.isDefined(_identitySubject.value)) {\r\n Account.get().$promise\r\n .then(getAccountThen)\r\n .catch(getAccountCatch);\r\n } else {\r\n deferred.resolve(_identitySubject.value);\r\n }\r\n\r\n return deferred.promise;\r\n\r\n function getAccountThen (account) {\r\n _identitySubject.onNext(account.data);\r\n _authenticated = true;\r\n deferred.resolve(_identitySubject.value);\r\n }\r\n\r\n function getAccountCatch () {\r\n _identitySubject.onNext(null);\r\n _authenticated = false;\r\n deferred.resolve(_identitySubject.value);\r\n }\r\n }\r\n\r\n function isAuthenticated () {\r\n return _authenticated;\r\n }\r\n\r\n function isIdentityResolved () {\r\n return angular.isDefined(_identitySubject.value);\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('PasswordResetInit', PasswordResetInit);\r\n\r\n PasswordResetInit.$inject = ['$http'];\r\n\r\n function PasswordResetInit($http) {\r\n return {\r\n getResetToken : getResetToken\r\n };\r\n\r\n function getResetToken(user) {\r\n return $http.post('api/account/reset-password/token', user);\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('PasswordResetFinish', PasswordResetFinish);\r\n\r\n PasswordResetFinish.$inject = ['$http'];\r\n\r\n function PasswordResetFinish($http) {\r\n return {\r\n resetPassword : resetPassword\r\n };\r\n\r\n function resetPassword(data) {\r\n return $http.post('api/account/reset-password', data);\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Password', Password);\r\n\r\n Password.$inject = ['$resource'];\r\n\r\n function Password($resource) {\r\n var service = $resource('api/account/change-password', {}, {});\r\n\r\n return service;\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('hasAuthority', hasAuthority);\r\n\r\n hasAuthority.$inject = ['Principal'];\r\n\r\n function hasAuthority(Principal) {\r\n var directive = {\r\n restrict: 'A',\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc(scope, element, attrs) {\r\n var authority = attrs.hasAuthority.replace(/\\s+/g, '');\r\n\r\n var setVisible = function () {\r\n element.removeClass('hidden');\r\n },\r\n setHidden = function () {\r\n element.addClass('hidden');\r\n },\r\n defineVisibility = function (reset) {\r\n\r\n if (reset) {\r\n setVisible();\r\n }\r\n\r\n Principal.hasAuthority(authority)\r\n .then(function (result) {\r\n if (result) {\r\n setVisible();\r\n } else {\r\n setHidden();\r\n }\r\n });\r\n };\r\n\r\n if (authority.length > 0) {\r\n defineVisibility(true);\r\n\r\n scope.$watch(function() {\r\n return Principal.isAuthenticated();\r\n }, function() {\r\n defineVisibility(true);\r\n });\r\n }\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('hasAnyAuthority', hasAnyAuthority);\r\n\r\n hasAnyAuthority.$inject = ['Principal'];\r\n\r\n function hasAnyAuthority(Principal) {\r\n var directive = {\r\n restrict: 'A',\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc(scope, element, attrs) {\r\n var authorities = attrs.hasAnyAuthority.replace(/\\s+/g, '').split(',');\r\n\r\n var setVisible = function () {\r\n element.removeClass('hidden');\r\n },\r\n setHidden = function () {\r\n element.addClass('hidden');\r\n },\r\n defineVisibility = function (reset) {\r\n var result;\r\n if (reset) {\r\n setVisible();\r\n }\r\n\r\n result = Principal.hasAnyAuthority(authorities);\r\n if (result) {\r\n setVisible();\r\n } else {\r\n setHidden();\r\n }\r\n };\r\n\r\n if (authorities.length > 0) {\r\n defineVisibility(true);\r\n\r\n scope.$watch(function() {\r\n return Principal.isAuthenticated();\r\n }, function() {\r\n defineVisibility(true);\r\n });\r\n }\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Auth', Auth);\r\n\r\n Auth.$inject = ['$rootScope', '$state', '$sessionStorage', '$q', 'Principal', 'AuthServerProvider', 'Account', 'LoginService', 'Register', 'Activate', 'Password', 'PasswordResetInit', 'PasswordResetFinish'];\r\n\r\n function Auth ($rootScope, $state, $sessionStorage, $q, Principal, AuthServerProvider, Account, LoginService, Register, Activate, Password, PasswordResetInit, PasswordResetFinish) {\r\n var service = {\r\n activateAccount: activateAccount,\r\n authorize: authorize,\r\n changePassword: changePassword,\r\n createAccount: createAccount,\r\n getPreviousState: getPreviousState,\r\n login: login,\r\n logout: logout,\r\n loginWithToken: loginWithToken,\r\n resetPasswordFinish: resetPasswordFinish,\r\n resetPasswordInit: resetPasswordInit,\r\n resetPreviousState: resetPreviousState,\r\n storePreviousState: storePreviousState,\r\n updateAccount: updateAccount\r\n };\r\n\r\n return service;\r\n\r\n function activateAccount (key, callback) {\r\n var cb = callback || angular.noop;\r\n\r\n return Activate.get(key,\r\n function (response) {\r\n return cb(response);\r\n },\r\n function (err) {\r\n return cb(err);\r\n }.bind(this)).$promise;\r\n }\r\n\r\n function authorize (force) {\r\n var authReturn = Principal.identity(force).then(authThen);\r\n\r\n return authReturn;\r\n\r\n function authThen () {\r\n var isAuthenticated = Principal.isAuthenticated();\r\n\r\n // an authenticated user can't access to login and register pages\r\n if (isAuthenticated && $rootScope.toState.parent === 'account' && ($rootScope.toState.name === 'login' || $rootScope.toState.name === 'register' || $rootScope.toState.name === 'social-auth')) {\r\n $state.go('home');\r\n }\r\n\r\n // recover and clear previousState after external login redirect (e.g. oauth2)\r\n if (isAuthenticated && !$rootScope.fromState.name && getPreviousState()) {\r\n var previousState = getPreviousState();\r\n resetPreviousState();\r\n $state.go(previousState.name, previousState.params);\r\n }\r\n\r\n if ($rootScope.toState.data.authorities && $rootScope.toState.data.authorities.length > 0 && !Principal.hasAnyAuthority($rootScope.toState.data.authorities)) {\r\n if (isAuthenticated) {\r\n // user is signed in but not authorized for desired state\r\n $state.go('accessdenied');\r\n }\r\n else {\r\n // user is not authenticated. stow the state they wanted before you\r\n // send them to the login service, so you can return them when you're done\r\n storePreviousState($rootScope.toState.name, $rootScope.toStateParams);\r\n\r\n // now, send them to the signin state so they can log in\r\n $state.go('accessdenied').then(function() {\r\n LoginService.open();\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n function changePassword (newPassword, callback) {\r\n var cb = callback || angular.noop;\r\n\r\n return Password.save(newPassword, function () {\r\n return cb();\r\n }, function (err) {\r\n return cb(err);\r\n }).$promise;\r\n }\r\n\r\n function createAccount (account, callback) {\r\n var cb = callback || angular.noop;\r\n\r\n return Register.save(account,\r\n function () {\r\n return cb(account);\r\n },\r\n function (err) {\r\n this.logout();\r\n return cb(err);\r\n }.bind(this)).$promise;\r\n }\r\n\r\n function login (credentials, callback) {\r\n var cb = callback || angular.noop;\r\n var deferred = $q.defer();\r\n\r\n AuthServerProvider.login(credentials)\r\n .then(loginThen)\r\n .catch(function (err) {\r\n this.logout();\r\n deferred.reject(err);\r\n return cb(err);\r\n }.bind(this));\r\n\r\n function loginThen (data) {\r\n Principal.identity(true).then(function(account) {\r\n deferred.resolve(data);\r\n });\r\n return cb();\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function loginWithToken(jwt, rememberMe) {\r\n return AuthServerProvider.loginWithToken(jwt, rememberMe);\r\n }\r\n\r\n function logout () {\r\n AuthServerProvider.logout();\r\n Principal.authenticate(null);\r\n }\r\n\r\n function resetPasswordFinish (keyAndPassword, callback) {\r\n var cb = callback || angular.noop;\r\n\r\n return PasswordResetFinish.save(keyAndPassword, function () {\r\n return cb();\r\n }, function (err) {\r\n return cb(err);\r\n }).$promise;\r\n }\r\n\r\n function resetPasswordInit (mail, callback) {\r\n var cb = callback || angular.noop;\r\n\r\n return PasswordResetInit.save(mail, function() {\r\n return cb();\r\n }, function (err) {\r\n return cb(err);\r\n }).$promise;\r\n }\r\n\r\n function updateAccount (account, callback) {\r\n var cb = callback || angular.noop;\r\n\r\n return Account.save(account,\r\n function () {\r\n return cb(account);\r\n },\r\n function (err) {\r\n return cb(err);\r\n }.bind(this)).$promise;\r\n }\r\n\r\n function getPreviousState() {\r\n var previousState = $sessionStorage.previousState;\r\n return previousState;\r\n }\r\n\r\n function resetPreviousState() {\r\n delete $sessionStorage.previousState;\r\n }\r\n\r\n function storePreviousState(previousStateName, previousStateParams) {\r\n var previousState = { \"name\": previousStateName, \"params\": previousStateParams };\r\n $sessionStorage.previousState = previousState;\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('AuthServerProvider', AuthServerProvider);\r\n\r\n AuthServerProvider.$inject = ['$http', '$localStorage', '$sessionStorage', '$q'];\r\n\r\n function AuthServerProvider ($http, $localStorage, $sessionStorage, $q) {\r\n var service = {\r\n getToken: getToken,\r\n login: login,\r\n loginWithToken: loginWithToken,\r\n storeAuthenticationToken: storeAuthenticationToken,\r\n logout: logout\r\n };\r\n\r\n return service;\r\n\r\n function getToken () {\r\n return $localStorage.authenticationToken || $sessionStorage.authenticationToken;\r\n }\r\n\r\n function toParams(obj) {\r\n var params = [];\r\n\r\n for (var key in obj) {\r\n params.push(key + '=' + encodeURIComponent(obj[key]));\r\n }\r\n\r\n return params.join('&');\r\n }\r\n\r\n function login (credentials) {\r\n var data = {\r\n username: credentials.username,\r\n password: credentials.password,\r\n grant_type: credentials.grant_type\r\n };\r\n\r\n return $http.post('token', toParams(data)).success(authenticateSuccess);\r\n\r\n function authenticateSuccess (data) {\r\n if (angular.isDefined(data.access_token) && data.token_type === 'bearer') {\r\n service.storeAuthenticationToken(data.access_token, credentials.rememberMe);\r\n\r\n return data.access_token;\r\n }\r\n }\r\n }\r\n\r\n function loginWithToken(jwt, rememberMe) {\r\n var deferred = $q.defer();\r\n\r\n if (angular.isDefined(jwt)) {\r\n this.storeAuthenticationToken(jwt, rememberMe);\r\n deferred.resolve(jwt);\r\n } else {\r\n deferred.reject();\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function storeAuthenticationToken(jwt, rememberMe) {\r\n if(rememberMe){\r\n $localStorage.authenticationToken = jwt;\r\n } else {\r\n $sessionStorage.authenticationToken = jwt;\r\n }\r\n }\r\n\r\n function logout () {\r\n delete $localStorage.authenticationToken;\r\n delete $sessionStorage.authenticationToken;\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Activate', Activate);\r\n\r\n Activate.$inject = ['$resource'];\r\n\r\n function Activate ($resource) {\r\n var service = $resource('api/activate', {}, {\r\n 'get': { method: 'GET', params: {}, isArray: false}\r\n });\r\n\r\n return service;\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Account', Account);\r\n\r\n Account.$inject = ['$resource'];\r\n\r\n function Account ($resource) {\r\n var service = $resource('api/account', {}, {\r\n 'get': { method: 'GET', params: {}, isArray: false,\r\n interceptor: {\r\n response: function(response) {\r\n // expose response\r\n return response;\r\n }\r\n }\r\n }\r\n });\r\n\r\n return service;\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('whatsappLink', {\r\n templateUrl: 'app/layouts/whatsappLink/whatsappLink.html',\r\n controllerAs: 'vm',\r\n bindings: {\r\n number: '@',\r\n open: '='\r\n }\r\n });\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('NavbarController', NavbarController);\r\n\r\n NavbarController.$inject = ['$state', 'Auth', 'Principal', 'ProfileService', 'LoginService', '$window', 'CarritoProvider', '$timeout', 'SQLExportDataService'];\r\n\r\n function NavbarController ($state, Auth, Principal, ProfileService, LoginService, $window, CarritoProvider, $timeout, SQLExportDataService) {\r\n var vm = this,\r\n _identitySubscription,\r\n _carritoSubscription;\r\n\r\n function init() {\r\n vm.isNavbarCollapsed = true;\r\n vm.isAuthenticated = Principal.isAuthenticated;\r\n vm.isAdmin = Principal.identity();\r\n vm.pending = 0;\r\n vm.$state = $state;\r\n vm.isAdmin = false;\r\n vm.hasQueries = false;\r\n Principal.identity().then(function (result) {\r\n if(result){\r\n angular.forEach(result.Authorities, function(auth){\r\n if(auth == 'ROLE_ADMIN'){\r\n vm.isAdmin = true;\r\n }\r\n });\r\n }\r\n });\r\n\r\n SQLExportDataService.getHasAnyQuery().then( function (result) {\r\n if (result) {\r\n vm.hasQueries = true;\r\n }\r\n });\r\n\r\n angular.element($window).bind(\"scroll\", function() {\r\n var principalMenuLi = $(\".principal-menu-li\"),\r\n principalMenu = $(\".principal-menu\");\r\n\r\n if (this.pageYOffset >= 52) {\r\n principalMenuLi.addClass('scrolled');\r\n principalMenu.addClass('scrolled');\r\n } else {\r\n principalMenuLi.removeClass('scrolled');\r\n principalMenu.removeClass('scrolled');\r\n }\r\n });\r\n\r\n _identitySubscription = Principal.getIdentitySubject().subscribe(function (value) {\r\n vm.user = value;\r\n });\r\n\r\n _carritoSubscription = CarritoProvider.getCarritoSubject().subscribe(function (value) {\r\n if (vm.pending < value.length) {\r\n $('#carritoNotification').removeClass('bounce');\r\n\r\n $timeout(function () {\r\n $('#carritoNotification').addClass('bounce');\r\n }, 400);\r\n }\r\n\r\n vm.pending = value.length;\r\n });\r\n }\r\n\r\n vm.login = function() {\r\n vm.collapseNavbar();\r\n LoginService.open();\r\n };\r\n\r\n vm.logout = function() {\r\n vm.collapseNavbar();\r\n Auth.logout();\r\n $state.go('home', {},{reload:true});\r\n };\r\n\r\n vm.toggleNavbar = function() {\r\n vm.isNavbarCollapsed = !vm.isNavbarCollapsed;\r\n if(!vm.isNavbarCollapsed) {\r\n document.getElementById('navbar-collapse').style.marginBottom = \"100vh\";\r\n }\r\n else {\r\n document.getElementById('navbar-collapse').style.marginBottom = \"0\";\r\n }\r\n };\r\n\r\n vm.collapseNavbar = function() {\r\n vm.isNavbarCollapsed = true;\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('error', {\r\n parent: 'app',\r\n url: '/error',\r\n data: {\r\n authorities: [],\r\n pageTitle: 'Error page!'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/layouts/error/error.html'\r\n }\r\n }\r\n })\r\n .state('accessdenied', {\r\n parent: 'app',\r\n url: '/accessdenied',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/layouts/error/accessdenied.html'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('CotizadorFlotanteController', CotizadorFlotanteController);\r\n\r\n CotizadorFlotanteController.$inject = [];\r\n\r\n function CotizadorFlotanteController () {\r\n var vm = this;\r\n vm.floatCotizador = true;\r\n\r\n vm.openCotizadorFlotante = function () {\r\n vm.showCotizador = !vm.showCotizador;\r\n \r\n if (vm.showCotizador) {\r\n $(\"body\").addClass(\"modal-open\");\r\n }\r\n else {\r\n $(\"body\").removeClass(\"modal-open\");\r\n }\r\n };\r\n\r\n\r\n function init() {\r\n vm.showCotizador = false;\r\n }\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('home', {\r\n parent: 'app',\r\n url: '/',\r\n params: {\r\n openLogin: false\r\n },\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/home/home.html',\r\n controller: 'HomeController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n auditoresActivos: ['HomeService', function (HomeService) {\r\n return HomeService.queryAuditores();\r\n }],\r\n clientes: ['HomeService', function (HomeService) {\r\n return HomeService.queryClientes();\r\n }],\r\n encuestaContactos: ['HomeService', function (HomeService) {\r\n return HomeService.queryEncuestaContactos();\r\n }],\r\n chartVariables: ['HomeService', function (HomeService) {\r\n return HomeService.queryDashboardVariables(14);\r\n }]\r\n }\r\n },\r\n }\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('HomeService', HomeService);\r\n\r\n HomeService.$inject = ['$q', '$http', 'BACKOFFICE_API_URL'];\r\n\r\n function HomeService ($q, $http, BACKOFFICE_API_URL) {\r\n return {\r\n queryAuditores: queryAuditores,\r\n queryClientes: queryClientes,\r\n queryEncuestaContactos: queryEncuestaContactos,\r\n queryDashboardVariables: queryDashboardVariables\r\n };\r\n\r\n function queryAuditores() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/getAuditoresActivos').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryEncuestaContactos () {\r\n // var deferred = $q.defer();\r\n\r\n // $http.get(BACKOFFICE_API_URL + '/newapi/getestadisticas?limite=60').then(function (response) {\r\n // deferred.resolve(response.data);\r\n // }).catch(function (error) {\r\n // deferred.reject(error);\r\n // });\r\n\r\n // return deferred.promise;\r\n }\r\n\r\n function queryClientes() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/getClientes').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryDashboardVariables(count) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/getChart/'+count).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('HomeController', HomeController);\r\n\r\n HomeController.$inject = ['$scope', 'Principal', 'LoginService', '$state', '$mdDialog', '$interval',\r\n 'auditoresActivos', 'clientes', 'encuestaContactos', 'chartVariables'];\r\n\r\n function HomeController ($scope, Principal, LoginService, $state, $mdDialog, $interval,\r\n auditoresActivos, clientes, encuestaContactos, chartVariables) {\r\n var vm = this;\r\n\r\n // Asingacion de variables\r\n vm.account = null;\r\n vm.isAuthenticated = null;\r\n vm.login = LoginService.open;\r\n vm.login = login;\r\n vm.auditoresActivos = auditoresActivos;\r\n vm.clientes = clientes;\r\n vm.encuestaContactos = encuestaContactos;\r\n vm.resenas;\r\n\r\n vm.fechas = [];\r\n vm.contactos = [];\r\n\r\n angular.forEach(vm.encuestaContactos, function(contacto){\r\n contacto.formatDate = moment(contacto.Fecha).format('D/MMM');\r\n vm.fechas.push(contacto.formatDate);\r\n vm.contactos.push(contacto.Cantidad);\r\n });\r\n\r\n // Asingacion de funciones\r\n vm.register = register;\r\n vm.changeVideo = changeVideo;\r\n\r\n\r\n // Lllamado de funciones\r\n init();\r\n getAccount();\r\n\r\n function login() {\r\n LoginService.open();\r\n }\r\n // Definicion de funciones\r\n function init() {\r\n $scope.$on('authenticationSuccess', function() {\r\n getAccount();\r\n });\r\n\r\n if($state.params.openLogin){\r\n vm.login();\r\n }\r\n\r\n $(document).ready(function () {\r\n $(\"#myModal\").on(\"hidden.bs.modal\", function () {\r\n $(\"#iframeYoutube\").attr(\"src\", \"#\");\r\n })\r\n });\r\n }\r\n\r\n //animation\r\n $interval(function(){\r\n $('#realtimeAuditors').fadeOut(1500);\r\n $('#realtimeClients').fadeOut(1500);\r\n\r\n $('#realtimeAuditors').fadeIn(1500);\r\n $('#realtimeClients').fadeIn(1500);\r\n }, 3000);\r\n\r\n vm.showVideo = function(ev) {\r\n $mdDialog.show({\r\n controller: ['$mdDialog', function DialogController($mdDialog) {\r\n var vm = this;\r\n vm.closeModal = function() {\r\n $mdDialog.hide();\r\n }\r\n }],\r\n template: '
' +\r\n '' +\r\n '' +\r\n '
',\r\n parent: angular.element(document.body),\r\n targetEvent: ev,\r\n clickOutsideToClose:true,\r\n controllerAs:'vm',\r\n });\r\n };\r\n\r\n vm.closeModal = function() {\r\n $mdDialog.hide();\r\n };\r\n\r\n function getAccount() {\r\n Principal.identity().then(function(account) {\r\n vm.account = account;\r\n vm.isAuthenticated = Principal.isAuthenticated();\r\n });\r\n }\r\n\r\n function register () {\r\n $state.go('register');\r\n }\r\n\r\n function changeVideo() {\r\n var iframe = document.getElementById(\"iframeYoutube\");\r\n iframe.src = \"https://www.youtube.com/embed/FN--MpnF1EY?rel=0&controls=0&showinfo=0?ecver=1\";\r\n\r\n $(\"#myModal\").modal(\"show\");\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('entity', {\r\n abstract: true,\r\n parent: 'app'\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .filter('words', words);\r\n\r\n function words() {\r\n return wordsFilter;\r\n\r\n function wordsFilter(input, words) {\r\n if (isNaN(words)) {\r\n return input;\r\n }\r\n if (words <= 0) {\r\n return '';\r\n }\r\n if (input) {\r\n var inputWords = input.split(/\\s+/);\r\n if (inputWords.length > words) {\r\n input = inputWords.slice(0, words).join(' ') + '...';\r\n }\r\n }\r\n return input;\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .filter('characters', characters);\r\n\r\n function characters () {\r\n return charactersFilter;\r\n\r\n function charactersFilter(input, chars, breakOnWord) {\r\n if (isNaN(chars)) {\r\n return input;\r\n }\r\n if (chars <= 0) {\r\n return '';\r\n }\r\n if (input && input.length > chars) {\r\n input = input.substring(0, chars);\r\n\r\n if (!breakOnWord) {\r\n var lastspace = input.lastIndexOf(' ');\r\n // Get last space\r\n if (lastspace !== -1) {\r\n input = input.substr(0, lastspace);\r\n }\r\n } else {\r\n while (input.charAt(input.length-1) === ' ') {\r\n input = input.substr(0, input.length - 1);\r\n }\r\n }\r\n return input + '...';\r\n }\r\n return input;\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('jhSortBy', jhSortBy);\r\n\r\n function jhSortBy() {\r\n var directive = {\r\n restrict: 'A',\r\n scope: false,\r\n require: '^jhSort',\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc(scope, element, attrs, parentCtrl) {\r\n element.bind('click', function () {\r\n parentCtrl.sort(attrs.jhSortBy);\r\n });\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('jhSort', jhSort);\r\n\r\n function jhSort () {\r\n var directive = {\r\n restrict: 'A',\r\n scope: {\r\n predicate: '=jhSort',\r\n ascending: '=',\r\n callback: '&'\r\n },\r\n controller: SortController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n return directive;\r\n }\r\n\r\n SortController.$inject = ['$scope', '$element'];\r\n\r\n function SortController ($scope, $element) {\r\n var vm = this;\r\n\r\n vm.applyClass = applyClass;\r\n vm.resetClasses = resetClasses;\r\n vm.sort = sort;\r\n vm.triggerApply = triggerApply;\r\n\r\n $scope.$watchGroup(['vm.predicate', 'vm.ascending'], vm.triggerApply);\r\n vm.triggerApply();\r\n\r\n function applyClass (element) {\r\n var thisIcon = element.find('span.glyphicon'),\r\n sortIcon = 'glyphicon-sort',\r\n sortAsc = 'glyphicon-sort-by-attributes',\r\n sortDesc = 'glyphicon-sort-by-attributes-alt',\r\n remove = sortIcon + ' ' + sortDesc,\r\n add = sortAsc;\r\n if (!vm.ascending) {\r\n remove = sortIcon + ' ' + sortAsc;\r\n add = sortDesc;\r\n }\r\n vm.resetClasses();\r\n thisIcon.removeClass(remove);\r\n thisIcon.addClass(add);\r\n }\r\n\r\n function resetClasses () {\r\n var allThIcons = $element.find('span.glyphicon'),\r\n sortIcon = 'glyphicon-sort',\r\n sortAsc = 'glyphicon-sort-by-attributes',\r\n sortDesc = 'glyphicon-sort-by-attributes-alt';\r\n allThIcons.removeClass(sortAsc + ' ' + sortDesc);\r\n allThIcons.addClass(sortIcon);\r\n }\r\n\r\n function sort (field) {\r\n if (field !== vm.predicate) {\r\n vm.ascending = true;\r\n } else {\r\n vm.ascending = !vm.ascending;\r\n }\r\n vm.predicate = field;\r\n $scope.$apply();\r\n vm.callback();\r\n }\r\n\r\n function triggerApply (values) {\r\n vm.resetClasses();\r\n if (values && values[0] !== '_score') {\r\n vm.applyClass($element.find('th[jh-sort-by=\\'' + values[0] + '\\']'));\r\n }\r\n }\r\n }\r\n})();\r\n","(function(){\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('ParseLinks', ParseLinks);\r\n\r\n function ParseLinks () {\r\n\r\n var service = {\r\n parse : parse\r\n };\r\n\r\n return service;\r\n\r\n function parse(header) {\r\n if (header.length === 0) {\r\n throw new Error('input must not be of zero length');\r\n }\r\n\r\n // Split parts by comma\r\n var parts = header.split(',');\r\n var links = {};\r\n // Parse each part into a named link\r\n angular.forEach(parts, function(p) {\r\n var section = p.split('>;');\r\n if (section.length !== 2) {\r\n throw new Error('section could not be split on \">;\"');\r\n }\r\n var url = section[0].replace(/<(.*)/, '$1').trim();\r\n var queryString = {};\r\n url.replace(\r\n new RegExp('([^?=&]+)(=([^&]*))?', 'g'),\r\n function($0, $1, $2, $3) { queryString[$1] = $3; }\r\n );\r\n var page = queryString.page;\r\n if (angular.isString(page)) {\r\n page = parseInt(page);\r\n }\r\n var name = section[1].replace(/rel=\"(.*)\"/, '$1').trim();\r\n links[name] = page;\r\n });\r\n return links;\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('PaginationUtil', PaginationUtil);\r\n\r\n function PaginationUtil () {\r\n\r\n var service = {\r\n parseAscending : parseAscending,\r\n parsePage : parsePage,\r\n parsePredicate : parsePredicate\r\n };\r\n\r\n return service;\r\n\r\n function parseAscending (sort) {\r\n var sortArray = sort.split(',');\r\n if (sortArray.length > 1){\r\n return sort.split(',').slice(-1)[0] === 'asc';\r\n } else {\r\n // default to true if no sort defined\r\n return true;\r\n }\r\n }\r\n\r\n // query params are strings, and need to be parsed\r\n function parsePage (page) {\r\n return parseInt(page);\r\n }\r\n\r\n // sort can be in the format `id,asc` or `id`\r\n function parsePredicate (sort) {\r\n var sortArray = sort.split(',');\r\n if (sortArray.length > 1){\r\n sortArray.pop();\r\n }\r\n return sortArray.join(',');\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n var jhiItemCount = {\r\n template: '
' +\r\n 'Showing {{(($ctrl.page - 1) * $ctrl.itemsPerPage) == 0 ? 1 : (($ctrl.page - 1) * $ctrl.itemsPerPage + 1)}} - ' +\r\n '{{($ctrl.page * $ctrl.itemsPerPage) < $ctrl.queryCount ? ($ctrl.page * $ctrl.itemsPerPage) : $ctrl.queryCount}} ' +\r\n 'of {{$ctrl.queryCount}} items.' +\r\n '
',\r\n bindings: {\r\n page: '<',\r\n queryCount: ''\r\n );\r\n }\r\n\r\n function toBase64 (file, cb) {\r\n var fileReader = new FileReader();\r\n fileReader.readAsDataURL(file);\r\n fileReader.onload = function (e) {\r\n var base64Data = e.target.result.substr(e.target.result.indexOf('base64,') + 'base64,'.length);\r\n cb(base64Data);\r\n };\r\n }\r\n }\r\n})();\r\n","\r\n( function( window ) {\r\n\r\n'use strict';\r\n\r\nfunction classReg( className ) {\r\n return new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\");\r\n}\r\nvar hasClass, addClass, removeClass;\r\n\r\nif ( 'classList' in document.documentElement ) {\r\n hasClass = function( elem, c ) {\r\n return elem.classList.contains( c );\r\n };\r\n addClass = function( elem, c ) {\r\n elem.classList.add( c );\r\n };\r\n removeClass = function( elem, c ) {\r\n elem.classList.remove( c );\r\n };\r\n}\r\nelse {\r\n hasClass = function( elem, c ) {\r\n return classReg( c ).test( elem.className );\r\n };\r\n addClass = function( elem, c ) {\r\n if ( !hasClass( elem, c ) ) {\r\n elem.className = elem.className + ' ' + c;\r\n }\r\n };\r\n removeClass = function( elem, c ) {\r\n elem.className = elem.className.replace( classReg( c ), ' ' );\r\n };\r\n}\r\n\r\nfunction toggleClass( elem, c ) {\r\n var fn = hasClass( elem, c ) ? removeClass : addClass;\r\n fn( elem, c );\r\n}\r\n\r\nvar classie = {\r\n\r\n hasClass: hasClass,\r\n addClass: addClass,\r\n removeClass: removeClass,\r\n toggleClass: toggleClass,\r\n\r\n has: hasClass,\r\n add: addClass,\r\n remove: removeClass,\r\n toggle: toggleClass\r\n};\r\n\r\n\r\nif ( typeof define === 'function' && define.amd ) {\r\n\r\n define( classie );\r\n} else {\r\n\r\n window.classie = classie;\r\n}\r\n\r\n})( window );\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .filter('capitalize', capitalize);\r\n\r\n function capitalize() {\r\n return capitalizeFilter;\r\n\r\n function capitalizeFilter (input) {\r\n if (input !== null) {\r\n input = input.toLowerCase();\r\n input = input.substring(0, 1).toUpperCase() + input.substring(1);\r\n }\r\n return input;\r\n }\r\n }\r\n})();\r\n","(function() {\r\n /*jshint bitwise: false*/\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Base64', Base64);\r\n\r\n function Base64 () {\r\n var keyStr = 'ABCDEFGHIJKLMNOP' +\r\n 'QRSTUVWXYZabcdef' +\r\n 'ghijklmnopqrstuv' +\r\n 'wxyz0123456789+/' +\r\n '=';\r\n\r\n var service = {\r\n decode : decode,\r\n encode : encode\r\n };\r\n\r\n return service;\r\n\r\n function encode (input) {\r\n var output = '',\r\n chr1, chr2, chr3,\r\n enc1, enc2, enc3, enc4,\r\n i = 0;\r\n\r\n while (i < input.length) {\r\n chr1 = input.charCodeAt(i++);\r\n chr2 = input.charCodeAt(i++);\r\n chr3 = input.charCodeAt(i++);\r\n\r\n enc1 = chr1 >> 2;\r\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\r\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\r\n enc4 = chr3 & 63;\r\n\r\n if (isNaN(chr2)) {\r\n enc3 = enc4 = 64;\r\n } else if (isNaN(chr3)) {\r\n enc4 = 64;\r\n }\r\n\r\n output = output +\r\n keyStr.charAt(enc1) +\r\n keyStr.charAt(enc2) +\r\n keyStr.charAt(enc3) +\r\n keyStr.charAt(enc4);\r\n }\r\n\r\n return output;\r\n }\r\n\r\n function decode (input) {\r\n var output = '',\r\n chr1, chr2, chr3,\r\n enc1, enc2, enc3, enc4,\r\n i = 0;\r\n\r\n // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\r\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\r\n\r\n while (i < input.length) {\r\n enc1 = keyStr.indexOf(input.charAt(i++));\r\n enc2 = keyStr.indexOf(input.charAt(i++));\r\n enc3 = keyStr.indexOf(input.charAt(i++));\r\n enc4 = keyStr.indexOf(input.charAt(i++));\r\n\r\n chr1 = (enc1 << 2) | (enc2 >> 4);\r\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\r\n chr3 = ((enc3 & 3) << 6) | enc4;\r\n\r\n output = output + String.fromCharCode(chr1);\r\n\r\n if (enc3 !== 64) {\r\n output = output + String.fromCharCode(chr2);\r\n }\r\n if (enc4 !== 64) {\r\n output = output + String.fromCharCode(chr3);\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UbicacionEncuestaClienteSaveLocationsDialogController', UbicacionEncuestaClienteSaveLocationsDialogController);\r\n\r\n UbicacionEncuestaClienteSaveLocationsDialogController.$inject = ['$uibModalInstance', 'ubicacions', '$http'];\r\n\r\n function UbicacionEncuestaClienteSaveLocationsDialogController ($uibModalInstance, ubicacions, $http) {\r\n var vm = this;\r\n\r\n vm.ubicacionLista = {}\r\n vm.ubicacionLista.Ubicacions = ubicacions\r\n\r\n vm.clear = function () {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.save = function () {\r\n angular.forEach(vm.ubicacionLista.Ubicacions, function(ubicacion){\r\n ubicacion.Latitud = ubicacion.Pos[0];\r\n ubicacion.Longitud = ubicacion.Pos[1];\r\n });\r\n \r\n $http.post('api/ubicacionListas', vm.ubicacionLista).then(function(response){\r\n $uibModalInstance.close('ok');\r\n }).catch(function (error) {\r\n console.log(error);\r\n });\r\n };\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('UbicacionEncuestaClienteLocationsService', UbicacionEncuestaClienteLocationsService);\r\n\r\n UbicacionEncuestaClienteLocationsService.$inject = ['$q', '$http'];\r\n\r\n function UbicacionEncuestaClienteLocationsService ($q, $http) {\r\n return {\r\n queryCadenasLists: queryCadenasLists,\r\n queryTiendasLists: queryTiendasLists,\r\n queryEstadosLists: queryEstadosLists,\r\n queryMunicipiosLists: queryMunicipiosLists,\r\n queryListsByFilter : queryListsByFilter\r\n };\r\n\r\n function queryCadenasLists() {\r\n var deferred = $q.defer();\r\n $http.get('api/ubicacion/filter/findAllCadenas').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function queryTiendasLists() {\r\n var deferred = $q.defer();\r\n $http.get('api/ubicacion/filter/findAllTiendas').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function queryEstadosLists() {\r\n var deferred = $q.defer();\r\n $http.get('api/ubicacion/filter/findAllEstados').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n return deferred.promise;\r\n }\r\n function queryMunicipiosLists() {\r\n var deferred = $q.defer();\r\n $http.get('api/ubicacion/filter/findAllMinicipios').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n return deferred.promise;\r\n }\r\n function queryListsByFilter(filtros) {\r\n var deferred = $q.defer();\r\n console.log(filtros);\r\n $http.get('api/ubicacion/filter/findListsByFilter?Cadena='+filtros.Cadena+'&Tienda='+filtros.Tienda+'&Estado='+filtros.Estado+'&Municipio='+filtros.Municipio).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UbicacionEncuestaClienteLocationsController', UbicacionEncuestaClienteLocationsController);\r\n\r\n UbicacionEncuestaClienteLocationsController.$inject = ['$uibModalInstance', 'defaultList', 'CadenasList', 'TiendasList', 'EstadosList', 'MunicipiosList', 'UbicacionEncuestaClienteLocationsService', 'isDefault'];\r\n\r\n function UbicacionEncuestaClienteLocationsController($uibModalInstance, defaultList, CadenasList, TiendasList, EstadosList, MunicipiosList, UbicacionEncuestaClienteLocationsService, isDefault) {\r\n var vm = this;\r\n vm.clear = clear;\r\n vm.select = select;\r\n vm.selectUbicaciones = selectUbicaciones;\r\n\r\n vm.listVisible = true;\r\n vm.isPlaceholder = true;\r\n vm.selected = '';\r\n vm.isDefault = isDefault;\r\n\r\n vm.listaSelect = [];\r\n vm.ubicacionesSelect = [];\r\n vm.listaDefault = defaultList;\r\n vm.listasUbi = null;\r\n vm.selectedCadena = '';\r\n vm.selectedTiendas = '';\r\n vm.selectedEstados = '';\r\n vm.selectedMunicipios = '';\r\n\r\n\r\n vm.Cadenas = CadenasList.Cadenas;\r\n vm.Tiendas = TiendasList.Tiendas;\r\n vm.Estados = EstadosList.Estados;\r\n vm.Municipios = MunicipiosList.Municipios;\r\n\r\n console.log(CadenasList);\r\n console.log(TiendasList);\r\n console.log(EstadosList);\r\n console.log(MunicipiosList);\r\n\r\n if(isDefault) {\r\n if (vm.Cadenas.length === 0) {\r\n vm.Cadenas = [\"NO HAY CADENAS\"];\r\n }\r\n if (vm.Tiendas.length === 0) {\r\n vm.Tiendas = [\"NO HAY TIENDAS\"];\r\n }\r\n if (vm.Estados.length === 0) {\r\n vm.Estados = [\"NO HAY ESTADOS\"];\r\n }\r\n if (vm.Municipios.length === 0) {\r\n vm.Municipios = [\"NO HAY MUNICIPIOS\"];\r\n }\r\n }\r\n\r\n function select(){\r\n var filtros = {Cadena: vm.selectedCadena, Tienda: vm.selectedTiendas, Estado:vm.selectedEstados, Municipio: vm.selectedMunicipios};\r\n UbicacionEncuestaClienteLocationsService.queryListsByFilter(filtros).then(function (result) {\r\n vm.listasUbi = result;\r\n angular.forEach(vm.listasUbi, function(value, key){\r\n vm.listaSelect.push(false);\r\n });\r\n });\r\n }\r\n\r\n function selectUbicaciones(){\r\n vm.ubicacionesSelect = [];\r\n angular.forEach(vm.listaSelect, function(value, key){\r\n if(value === true){\r\n vm.ubicacionesSelect.push(vm.listasUbi[key]);\r\n }\r\n });\r\n var list = {\r\n Nombre: \"Lista Default\",\r\n Descripcion: null,\r\n Ubicacions: vm.ubicacionesSelect,\r\n Id: 0,\r\n $$hashKey: \"object:451\"};\r\n vm.selectList(list);\r\n }\r\n\r\n vm.selectList = function(list){\r\n console.log(list);\r\n $uibModalInstance.close(list)\r\n };\r\n\r\n function clear () {\r\n $uibModalInstance.dismiss();\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('UbicacionEncuestaService', UbicacionEncuestaService);\r\n\r\n UbicacionEncuestaService.$inject = ['$q', '$http'];\r\n\r\n function UbicacionEncuestaService ($q, $http) {\r\n return {\r\n queryDefaultLists: queryDefaultLists,\r\n queryUserLists: queryUserLists\r\n };\r\n\r\n function queryDefaultLists() {\r\n var deferred = $q.defer();\r\n $http.get('api/ubicacionListas/default').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n \r\n return deferred.promise;\r\n }\r\n\r\n function queryUserLists() {\r\n var deferred = $q.defer();\r\n $http.get('api/ubicacionListas').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('ubicacionEncuestaCliente', {\r\n templateUrl: 'app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente.html',\r\n controller: 'UbicacionEncuestaClienteController',\r\n controllerAs: 'vm',\r\n bindings: {\r\n encuesta: '=',\r\n changeTab: '&'\r\n }\r\n });\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UbicacionEncuestaClienteController', UbicacionEncuestaClienteController);\r\n\r\n UbicacionEncuestaClienteController.$inject = ['$rootScope', 'NgMap', '$timeout', '$uibModal',\r\n 'UbicacionEncuestaService','UbicacionEncuestaClienteLocationsService', '$mdDialog', '$scope', '$q'];\r\n\r\n function UbicacionEncuestaClienteController($rootScope, NgMap, $timeout, $uibModal,\r\n UbicacionEncuestaService, UbicacionEncuestaClienteLocationsService, $mdDialog, $scope, $q) {\r\n var vm = this;\r\n\r\n vm.validateForm = validateForm;\r\n vm.confirmEncuesta = confirmEncuesta;\r\n vm.exportTableToExcel = exportTableToExcel;\r\n vm.cargarTabla = cargarTabla;\r\n vm.descargarTabla = descargarTabla;\r\n vm.descargarTemplete = descargarTemplete;\r\n vm.topPage = topPage;\r\n\r\n vm.isLoading = false;\r\n vm.encuesta.Ubicaciones = [];\r\n vm.encuesta.CantidadContactos = 0;\r\n vm.mostrarTabla = false;\r\n //Setea la posicion del mapa al inciarlo, en Mexico.\r\n vm.center = [19.41, -99.14];\r\n\r\n vm.arregloExcel = [{\r\n Canal: '',\r\n Cadena: '',\r\n Formato: '',\r\n Tienda: '',\r\n CodigoTienda: '',\r\n Latitud: '',\r\n Longitud: '',\r\n Calle: '',\r\n Estado: '',\r\n Municipio: '',\r\n DescTRM: ''\r\n }];\r\n\r\n vm.templete = [{\r\n Canal: '',\r\n Cadena: '',\r\n Formato: '',\r\n Tienda: '',\r\n CodigoTienda: '',\r\n Latitud: '',\r\n Longitud: '',\r\n Calle: '',\r\n Estado: '',\r\n Municipio: '',\r\n DescTRM: ''\r\n }];\r\n\r\n $scope.$watch('vm.encuesta.Ubicaciones', function () {\r\n NgMap.getMap().then(function (map) {\r\n vm.map = map;\r\n });\r\n });\r\n\r\n NgMap.getMap().then(function (map) {\r\n vm.map = map;\r\n });\r\n\r\n vm.zoomOut = function () {\r\n if (window.matchMedia(\"(max-width: 767px)\").matches) {\r\n vm.map.setZoom(4);\r\n vm.map.setCenter(new google.maps.LatLng(19.41, -99.14));\r\n }\r\n else {\r\n vm.map.setZoom(5);\r\n vm.map.setCenter(new google.maps.LatLng(19.41, -99.14));\r\n }\r\n };\r\n\r\n vm.getpos = function (event) {\r\n vm.lat = event.latLng.lat();\r\n vm.lng = event.latLng.lng();\r\n vm.latlng = [event.latLng.lat(), event.latLng.lng()];\r\n };\r\n\r\n\r\n vm.addMarker = function (event) {\r\n var ll = event.latLng;\r\n var lat = ll.lat();\r\n var lng = ll.lng();\r\n\r\n vm.getReverseGeocodingData(lat, lng);\r\n };\r\n\r\n vm.placeChanged = function () {\r\n vm.place = this.getPlace();\r\n };\r\n\r\n vm.addLocationToList = function () {\r\n var isPlace = false;\r\n var nuevaUbicacion = {\r\n Pos: [vm.place.geometry.location.lat(), vm.place.geometry.location.lng()],\r\n Nombre: vm.address,\r\n RadioCobertura: 1\r\n }\r\n\r\n vm.center = nuevaUbicacion.Pos;\r\n angular.forEach(vm.place.types, function (type) {\r\n if (!isPlace) {\r\n if (type === 'locality' || type === 'political') {\r\n nuevaUbicacion.Tipo = 'state';\r\n nuevaUbicacion.CantidadContactos = 0;\r\n isPlace = true;\r\n } else {\r\n nuevaUbicacion.CantidadContactos = 1;\r\n nuevaUbicacion.Tipo = 'place';\r\n }\r\n }\r\n });\r\n if (nuevaUbicacion.Tipo === 'place') {\r\n vm.encuesta.CantidadContactos += 1;\r\n }\r\n\r\n vm.encuesta.Ubicaciones.push(nuevaUbicacion);\r\n vm.cargarTabla();\r\n NgMap.getMap().then(function (map) {\r\n vm.map = map;\r\n });\r\n vm.address = null;\r\n };\r\n\r\n //Funcion que regresa dirección cuando recibe como parámetros latitud y longitud\r\n vm.getReverseGeocodingData = function (lat, lng) {\r\n var exit = false;\r\n var markerData;\r\n var latlng = new google.maps.LatLng(lat, lng);\r\n var posString = [lat, lng];\r\n // Aca se obtiene la direccion.\r\n var geocoder = new google.maps.Geocoder();\r\n\r\n geocoder.geocode({'latLng': latlng}, function (results, status) {\r\n if (status !== google.maps.GeocoderStatus.OK) {\r\n console.log(\"ok\");\r\n $timeout(function () {\r\n vm.getReverseGeocodingData(lat, lng);\r\n }, 300);\r\n exit = true;\r\n }\r\n\r\n if (!exit) {\r\n var isPlace = false;\r\n // This is checking to see if the Geoeode Status is OK before proceeding\r\n if (status == google.maps.GeocoderStatus.OK) {\r\n results[0].formatted_address;\r\n var address = (results[0].formatted_address);\r\n markerData = {\r\n \"Nombre\": address,\r\n \"Pos\": posString,\r\n \"NombreLista\": '',\r\n \"Estado\": '',\r\n \"RadioCobertura\": 1\r\n }\r\n\r\n angular.forEach(results[0].types, function (type) {\r\n if (!isPlace) {\r\n if (type === 'locality' || type === 'political') {\r\n markerData.Tipo = 'state';\r\n isPlace = true;\r\n } else {\r\n markerData.Tipo = 'place';\r\n }\r\n }\r\n });\r\n if (markerData.Tipo === 'place') {\r\n markerData.CantidadContactos = 1;\r\n vm.encuesta.CantidadContactos += 1;\r\n }\r\n\r\n vm.encuesta.Ubicaciones.push(markerData);\r\n }\r\n\r\n if (vm.encuesta.Ubicaciones.length > 0) {\r\n vm.isAddressEmpty = false;\r\n }\r\n\r\n NgMap.getMap().then(function (map) {\r\n vm.map = map;\r\n });\r\n cargarTabla();\r\n }\r\n });\r\n };\r\n\r\n vm.showDeleteConfirmation = function (ev) {\r\n // Modal para borrar toda la lista.\r\n var confirm = $mdDialog.confirm()\r\n .title('¿Desea borrar todas las localidades de la lista?')\r\n .ok('Si')\r\n .cancel('Cancelar');\r\n\r\n $mdDialog.show(confirm).then(function () {\r\n vm.encuesta.Ubicaciones = [];\r\n }, function () {\r\n\r\n });\r\n };\r\n\r\n var isDefaultList = false;\r\n vm.showDefaultLists = function () {\r\n isDefaultList = true;\r\n showLocationLists();\r\n };\r\n\r\n vm.showUserLists = function () {\r\n isDefaultList = false;\r\n showLocationLists();\r\n };\r\n\r\n vm.setContacts = function () {\r\n vm.encuesta.CantidadContactos = 0;\r\n angular.forEach(vm.encuesta.Ubicaciones, function (ubicacion) {\r\n vm.encuesta.CantidadContactos += ubicacion.CantidadContactos;\r\n });\r\n };\r\n\r\n var showLocationLists = function () {\r\n $uibModal.open({\r\n templateUrl: 'app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente-locations.html',\r\n controller: 'UbicacionEncuestaClienteLocationsController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n isDefault: isDefaultList,\r\n defaultList: ['UbicacionEncuestaService', function (UbicacionEncuestaService) {\r\n var list;\r\n if (isDefaultList) {\r\n list = UbicacionEncuestaService.queryDefaultLists();\r\n } else {\r\n list = UbicacionEncuestaService.queryUserLists();\r\n }\r\n return list;\r\n }],\r\n CadenasList: ['UbicacionEncuestaClienteLocationsService', function (UbicacionEncuestaClienteLocationsService) {\r\n var deferred = $q.defer();\r\n isDefaultList = true;\r\n if (isDefaultList) {\r\n var lista = UbicacionEncuestaClienteLocationsService.queryCadenasLists();\r\n return lista;\r\n } else {\r\n deferred.resolve(null);\r\n return deferred;\r\n }\r\n }],\r\n TiendasList: ['UbicacionEncuestaClienteLocationsService', function (UbicacionEncuestaClienteLocationsService) {\r\n var deferred = $q.defer();\r\n if (isDefaultList) {\r\n var lista = UbicacionEncuestaClienteLocationsService.queryTiendasLists();\r\n return lista;\r\n } else {\r\n deferred.resolve(null);\r\n }\r\n return deferred;\r\n }],\r\n EstadosList: ['UbicacionEncuestaClienteLocationsService', function (UbicacionEncuestaClienteLocationsService) {\r\n var deferred = $q.defer();\r\n if (isDefaultList) {\r\n var lista = UbicacionEncuestaClienteLocationsService.queryEstadosLists();\r\n return lista;\r\n } else {\r\n deferred.resolve(null);\r\n }\r\n return deferred;\r\n\r\n }],\r\n MunicipiosList: ['UbicacionEncuestaClienteLocationsService', function (UbicacionEncuestaClienteLocationsService) {\r\n var deferred = $q.defer();\r\n if (isDefaultList) {\r\n var lista = UbicacionEncuestaClienteLocationsService.queryMunicipiosLists();\r\n return lista;\r\n } else {\r\n deferred.resolve(null);\r\n }\r\n return deferred;\r\n }]\r\n }\r\n }).result.then(function (result) {\r\n vm.encuesta.Ubicaciones.length = 0;\r\n if (Ubicaciones) {\r\n Ubicaciones.length = 0;\r\n }\r\n var Ubicaciones = result.Ubicacions;\r\n vm.encuesta.Ubicaciones.options = {\r\n floor: 0,\r\n ceil: Ubicaciones.length,\r\n showSelectionBar: true,\r\n selectionBarGradient: {\r\n from: '#b0b3d6',\r\n to: '#001b56'\r\n }\r\n };\r\n vm.maxUbicaciones = Ubicaciones.length;\r\n vm.isLoading = true;\r\n angular.forEach(Ubicaciones, function (ubicacion) {\r\n ubicacion.Pos = [];\r\n ubicacion.Pos[0] = ubicacion.Latitud;\r\n ubicacion.Pos[1] = ubicacion.Longitud;\r\n vm.getReverseGeocodingData(ubicacion.Latitud, ubicacion.Longitud);\r\n });\r\n $scope.$watch('vm.encuesta.Ubicaciones.length', function () {\r\n if (vm.encuesta.Ubicaciones.length === vm.maxUbicaciones) {\r\n vm.isLoading = false;\r\n }\r\n });\r\n });\r\n };\r\n\r\n vm.removeLocation = function (index) {\r\n vm.encuesta.Ubicaciones.splice(index, 1);\r\n cargarTabla();\r\n };\r\n\r\n vm.saveLocationLists = function () {\r\n $uibModal.open({\r\n templateUrl: 'app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente-save-locations-dialog.html',\r\n controller: 'UbicacionEncuestaClienteSaveLocationsDialogController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n ubicacions: [function () {\r\n return vm.encuesta.Ubicaciones;\r\n }]\r\n }\r\n });\r\n cargarTabla();\r\n };\r\n\r\n vm.setDefaultRadio = function () {\r\n angular.forEach(vm.encuesta.Ubicaciones, function (ubicacion) {\r\n ubicacion.RadioCobertura = vm.defaultRadioValue;\r\n });\r\n };\r\n\r\n vm.borrar = function () {\r\n if (vm.encuesta.Ubicaciones.length === 0) {\r\n vm.encuesta.Ubicaciones = [];\r\n }\r\n };\r\n\r\n function confirmEncuesta() {\r\n $('html, body').animate({scrollTop: 0}, 'slow');\r\n if (vm.validateForm()) {\r\n $rootScope.changeToFinal();\r\n }\r\n };\r\n\r\n function validateForm() {\r\n return true;\r\n };\r\n\r\n function exportTableToExcel(){\r\n vm.cargarTabla();\r\n vm.descargarTabla();\r\n }\r\n\r\n function descargarTemplete() {\r\n var downloadLink;\r\n var datatype = \"text/plain;charset=utf-8;\";\r\n var tableSelect = document.getElementById('downloadTemplete');\r\n var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');\r\n // Specify file name\r\n var filename = 'ubicaciones';\r\n filename = filename?filename+'.xls':'excel_data.xls';\r\n // Create download link element\r\n downloadLink = document.createElement(\"a\");\r\n document.body.appendChild(downloadLink);\r\n if(navigator.msSaveOrOpenBlob){\r\n var blob = new Blob(['\\ufeff', tableHTML], {\r\n type: datatype\r\n });\r\n navigator.msSaveOrOpenBlob( blob, filename);\r\n }else{\r\n // Create a link to the file\r\n downloadLink.href = 'data:' + datatype + ', ' + tableHTML;\r\n // Setting the file name\r\n downloadLink.download = filename;\r\n //triggering the function\r\n downloadLink.click();\r\n }\r\n }\r\n\r\n function descargarTabla(){\r\n var downloadLink;\r\n var dataType = 'application/vnd.ms-excel';\r\n var tableSelect = document.getElementById('exportable');\r\n\r\n var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');\r\n\r\n // Specify file name\r\n var filename = 'ubicaciones';\r\n filename = filename?filename+'.xls':'excel_data.xls';\r\n\r\n // Create download link element\r\n downloadLink = document.createElement(\"a\");\r\n\r\n document.body.appendChild(downloadLink);\r\n\r\n if(navigator.msSaveOrOpenBlob){\r\n var blob = new Blob(['\\ufeff', tableHTML], {\r\n type: dataType\r\n });\r\n navigator.msSaveOrOpenBlob( blob, filename);\r\n }else{\r\n // Create a link to the file\r\n downloadLink.href = 'data:' + dataType + ', ' + tableHTML;\r\n\r\n // Setting the file name\r\n downloadLink.download = filename;\r\n\r\n //triggering the function\r\n downloadLink.click();\r\n }\r\n }\r\n\r\n function cargarTabla() {\r\n vm.arregloExcel = [];\r\n angular.forEach(vm.encuesta.Ubicaciones, function(value, key){\r\n vm.arregloExcel.push({\r\n Canal: '',\r\n Cadena: '',\r\n Formato: '',\r\n Tienda: value.Nombre,\r\n CodigoTienda: '',\r\n Latitud: value.Pos[0],\r\n Longitud: value.Pos[1],\r\n Calle: '',\r\n Estado: '',\r\n Municipio: '',\r\n DescTRM: ''\r\n });\r\n });\r\n }\r\n\r\n function topPage() {\r\n document.body.scrollTop = document.documentElement.scrollTop = 0;\r\n }\r\n } \r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('sQLExportData', {\r\n parent: 'app',\r\n url: '/sql-export-data',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/sQLExportData/sQLExportData.html',\r\n controller: 'SQLExportDataController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n queries : ['SQLExportDataService', function (SQLExportDataService) {\r\n return SQLExportDataService.get();\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('SQLExportDataService', SQLExportDataService);\r\n\r\n SQLExportDataService.$inject = ['$q', '$http', 'API_URL', '$window'];\r\n\r\n function SQLExportDataService ($q, $http, API_URL, $window) {\r\n return {\r\n get: get,\r\n runQuery: runQuery,\r\n getHasAnyQuery: getHasAnyQuery\r\n };\r\n\r\n function get() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/sqlexportdata/').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getHasAnyQuery() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/sqlexportdata/hasAnyQuery').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function runQuery(queryId, tipo) {\r\n var d = $q.defer();\r\n $http.get('api/sqlexportdata/run/' + queryId + '/tipo/' + tipo).then(function (response) {\r\n d.resolve(response);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n return d.promise;\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('SQLExportDataController', SQLExportDataController);\r\n\r\n SQLExportDataController.$inject = ['queries', '$uibModal', '$state', 'SQLExportDataService'];\r\n\r\n function SQLExportDataController (queries, $uibModal, $state, SQLExportDataService) {\r\n var vm = this;\r\n\r\n vm.queries = [];\r\n\r\n function init () \r\n {\r\n vm.queries = queries;\r\n }\r\n\r\n vm.runQuery = function (id, tipo) {\r\n var a = document.createElement(\"a\");\r\n document.body.appendChild(a);\r\n SQLExportDataService.runQuery(id, tipo).then(function(response) {\r\n var headers = response.headers();\r\n var contentType = headers['content-type'];\r\n var contentDisposition = response.headers('Content-Disposition');\r\n var filename = contentDisposition.split(';')[1].split('filename')[1].split('=')[1].trim();\r\n var data = tipo == 0 ? JSON.stringify(response.data) : response.data;\r\n var file = new Blob([data], {\r\n type: contentType+ ';charset=utf-8'\r\n });\r\n var fileURL = window.URL.createObjectURL(file);\r\n a.href = fileURL;\r\n a.download = filename;\r\n a.click();\r\n });\r\n }\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('resultEncuestaCliente', {\r\n parent: 'app',\r\n url: '/results/{id}/{displayOnly}',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/resultEncuestaCliente/resultEncuestaCliente.html',\r\n controller: 'ResultsEncuestasClienteController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ResultsEncuestasClienteController', ResultsEncuestasClienteController);\r\n\r\n ResultsEncuestasClienteController.$inject = ['$scope', '$stateParams', '$sce',\r\n '$http', 'BACKOFFICE_API_URL', '$uibModal', 'EncuestasClienteService', 'Principal', '$timeout', 'NgMap', '$interval'];\r\n\r\n function ResultsEncuestasClienteController ($scope, $stateParams, $sce, $http,\r\n BACKOFFICE_API_URL, $uibModal, EncuestasClienteService, Principal, $timeout, NgMap, $interval) {\r\n //init variables\r\n var vm = this;\r\n vm.clear = clear;\r\n vm.page = 0;\r\n vm.firstLoad = true;\r\n vm.instance = 0;\r\n vm.encuestaResults = {};\r\n var aprobados = $stateParams.displayOnly;\r\n var encuestaId = $stateParams.id;\r\n vm.dataIsReady = false;\r\n vm.contactoDataIsReady = false;\r\n vm.estadisticasDataIsReady = false;\r\n vm.photoIsReady = false;\r\n vm.mediaDictionary = {};\r\n vm.redirect = redirect;\r\n vm.efectividad = '';\r\n vm.ventaTotal = '';\r\n vm.isLoadoingEstadisticas = false;\r\n vm.isLoadoingEstadisticasEfectividad = false;\r\n vm.showing = false;\r\n vm.progressCheckAbierto = false;\r\n\r\n vm.efectividadVerTodos = true;\r\n vm.firstLoadEfectividad = true;\r\n\r\n vm.fechaDesde = new Date();\r\n vm.fechaHasta = new Date();\r\n vm.isFiltered = false;\r\n\r\n vm.encuesta = null;\r\n vm.encuestadorNameFilter = '';\r\n\r\n vm.mostrarGeosTodos = false;\r\n vm.geosTodos = [];\r\n\r\n vm.zipsEnProgreso = [];\r\n vm.path = '';\r\n\r\n function redirect() {\r\n var containerEncuestasHeight = document.getElementById(\"container-encuestas\").clientHeight;\r\n var heightToTop = (containerEncuestasHeight + 300) + \"px\";\r\n\r\n document.getElementById(\"redirect\").style.top = heightToTop;\r\n document.getElementById(\"redirect\").scrollIntoView({block: \"start\"});\r\n }\r\n\r\n vm.getResultEstadisticas = function() {\r\n vm.estadisticasDataIsReady = false;\r\n vm.isLoadoingEstadisticas = true;\r\n\r\n var encuestadorId = 0;\r\n if(!vm.efectividadVerTodos){\r\n if(vm.encuestador != null){\r\n encuestadorId = vm.encuestador.Id;\r\n }\r\n }\r\n\r\n var instancia = 0;\r\n if(vm.NumeroInstancias != null && vm.instance != -1){\r\n instancia = vm.NumeroInstancias[vm.instance];\r\n }\r\n\r\n EncuestasClienteService.getEncuestaBySitiowebId(encuestaId).then(function(result) {\r\n vm.encuesta = result;\r\n });\r\n\r\n EncuestasClienteService.getResultEstadisticas(encuestaId, encuestadorId, aprobados, instancia,\r\n vm.fechaDesde, vm.fechaHasta).then(function(result) {\r\n vm.estadisticas = result.data.Estadisticas;\r\n vm.estadisticasDataIsReady = true;\r\n \r\n vm.RespuestasCount = result.data.RespuestasCount;\r\n vm.EncuestadoresCount = result.data.EncuestadoresCount;\r\n\r\n angular.forEach(vm.estadisticas, function(pregunta){\r\n pregunta.chartData = [];\r\n pregunta.labels = [];\r\n angular.forEach(pregunta.Opciones, function(opcion){\r\n pregunta.chartData.push(opcion.Cantidad / pregunta.Cantidad);\r\n pregunta.labels.push(opcion.Valor);\r\n\r\n });\r\n });\r\n\r\n vm.isLoadoingEstadisticas = false;\r\n\r\n\r\n vm.getResultEstadisticasEfectividad();\r\n\r\n });\r\n };\r\n\r\n vm.getResultEstadisticas();\r\n\r\n vm.getResultEstadisticasEfectividad = function(){\r\n vm.isLoadoingEstadisticasEfectividad = true;\r\n\r\n var encuestadorId = 0;\r\n if(!vm.efectividadVerTodos){\r\n if(vm.encuestador != null){\r\n encuestadorId = vm.encuestador.Id;\r\n }\r\n }\r\n\r\n var instancia = 0;\r\n if(vm.NumeroInstancias != null && vm.instance != -1){\r\n instancia = vm.NumeroInstancias[vm.instance];\r\n }\r\n\r\n\r\n EncuestasClienteService.getResultEstadisticasEfectividad(encuestaId, encuestadorId, instancia,\r\n vm.fechaDesde, vm.fechaHasta, aprobados)\r\n .then(function(result) {\r\n // Efectividad\r\n if(result.data.Efectividad != null){\r\n vm.efectividad = result.data.Efectividad.InstanciasVenta + '/' + result.data.Efectividad.TotalInstancias;\r\n\r\n vm.porcentajeEfectividad = parseFloat(parseFloat(result.data.Efectividad.InstanciasVenta) /\r\n parseFloat(result.data.Efectividad.TotalInstancias) * 100).toFixed(2);\r\n if(isNaN(vm.porcentajeEfectividad)){\r\n vm.efectividad = '';\r\n vm.porcentajeEfectividad = \"0.0%\";\r\n }else{\r\n vm.porcentajeEfectividad = vm.porcentajeEfectividad + \"%\";\r\n }\r\n }else{\r\n vm.efectividad = '';\r\n }\r\n\r\n // Venta Total\r\n if(result.data.VentaTotal != null){\r\n vm.ventaTotal = result.data.VentaTotal;\r\n vm.ventaTotalFormatted = result.data.VentaTotalFormatted;\r\n }else{\r\n vm.ventaTotal = 0;\r\n }\r\n\r\n if(result.data.Efectividad != null\r\n && result.data.Efectividad.InstanciasVenta != null\r\n && result.data.Efectividad.InstanciasVenta > 0\r\n && vm.ventaTotal != null){\r\n //venta promedio\r\n var ventaProm = parseFloat(vm.ventaTotal / result.data.Efectividad.InstanciasVenta).toFixed(2);\r\n vm.ventaPromedio = \"MXN $ \" + result.data.VentaPromedioFormatted;\r\n }\r\n\r\n\r\n vm.isLoadoingEstadisticasEfectividad = false;\r\n\r\n\r\n // if(vm.efectividad != '' && vm.ventaTotal != 0) {\r\n vm.showing = true;\r\n // }\r\n\r\n });\r\n\r\n };\r\n\r\n // vm.getResultEstadisticasEfectividad();\r\n\r\n vm.getEncuestadores = function(page) {\r\n vm.dataIsReady = false;\r\n vm.contactoDataIsReady = false;\r\n\r\n EncuestasClienteService.getEncuestadoresByEncuestaResults(page, encuestaId, aprobados, vm.fechaDesde, vm.fechaHasta, vm.encuestadorNameFilter)\r\n .then(function(result) {\r\n \r\n vm.totalPages = result.data.Total;\r\n \r\n if(result.data.Content)\r\n vm.encuestadores = result.data.Content.Contactos;\r\n\r\n if(vm.encuestadores[0]) {\r\n vm.encuestador = vm.encuestadores[0];\r\n //resultados: cargo el detalle\r\n var timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n vm.getResultsByEncuestadorId(vm.encuestador, true);\r\n } else {\r\n vm.encuestador = null;\r\n vm.contactoDataIsReady = true;\r\n }\r\n vm.dataIsReady = true;\r\n });\r\n };\r\n\r\n vm.getEncuestadores();\r\n\r\n\r\n vm.getResultsByEncuestadorId = function(encuestador, firstLoad, numeroInstancia){\r\n vm.contactoDataIsReady = false;\r\n vm.mostrarGeosTodos = false;\r\n vm.encuestador = encuestador;\r\n \r\n if(!numeroInstancia){\r\n numeroInstancia = null;\r\n vm.instance = -1;\r\n }\r\n\r\n if(!firstLoad){\r\n firstLoad = false;\r\n }\r\n\r\n var timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\r\n if(vm.efectividadVerTodos){\r\n vm.instance = -1;\r\n }\r\n\r\n vm.getResultEstadisticas();\r\n\r\n EncuestasClienteService.getResultsByEncuestadorId(encuestaId, encuestador.Id, aprobados, vm.fechaDesde,\r\n vm.fechaHasta, numeroInstancia, timeZone)\r\n .then(function(result) {\r\n\r\n vm.idSelected = encuestaId;\r\n vm.contacto = result.data.Contactos[0];\r\n vm.preguntas = result.data.Preguntas;\r\n\r\n //REMOVE\r\n if (result.data.Geos != null) {\r\n vm.geos = result.data.Geos;\r\n } else {\r\n vm.geos = result.data.geos;\r\n }\r\n vm.NumeroInstancias = result.data.NumeroInstancias;\r\n\r\n //parse geos\r\n vm.geosJson = [];\r\n var geoId = 1;\r\n var geo;\r\n var indexGeo = 0;\r\n vm.geos.forEach(function (g, i) {\r\n //REMOVE\r\n if (result.data.Geos != null) {\r\n geo = JSON.parse(g.Geo);\r\n } else {\r\n geo = JSON.parse(g);\r\n }\r\n\r\n\r\n geo.id = geoId++;\r\n geo.latitude = parseFloat(geo.latitude);\r\n geo.longitude = parseFloat(geo.longitude);\r\n geo.NumeroInstancia = g.NumeroInstancia;\r\n\r\n if (g.VentaTotal != null) {\r\n geo.ventaTotal = 'VENTA: MXN $' + parseFloat(g.VentaTotal);\r\n geo.icon = 'content/images/markers/green-marker.png';\r\n } else {\r\n geo.ventaTotal = \"NO HUBO VENTAS\";\r\n geo.icon = 'content/images/markers/red-marker.png';\r\n }\r\n vm.geosJson.push(geo);\r\n\r\n });\r\n\r\n\r\n vm.catalogoTotal = 0;\r\n if(vm.contacto && vm.contacto.Resultados){\r\n angular.forEach(vm.contacto.Resultados, function(resultado) {\r\n //catalogo\r\n angular.forEach(resultado.Respuestas, function (respuesta) {\r\n if (respuesta.RespuestasCatalogo != null) {\r\n angular.forEach(respuesta.RespuestasCatalogo, function (r) {\r\n vm.catalogoTotal += r.Precio * r.ValorNumerico;\r\n });\r\n }\r\n });\r\n // vm.catalogoTotal = Math.round(vm.catalogoTotal);\r\n\r\n\r\n resultado.FechaSubida = new Date(resultado.FechaSubida);\r\n for (var i=0;i= cp.MaxAlerta);\r\n }\r\n\r\n vm.validateRangeCandado = function (cp) {\r\n return (cp.MinCandado != null && cp.MaxCandado != null && cp.MinCandado >= cp.MaxCandado);\r\n }\r\n\r\n vm.validateRanges = function (cp) {\r\n return (cp.MinAlerta != null && cp.MinCandado != null && cp.MinAlerta < cp.MinCandado) || (cp.MaxAlerta != null && cp.MaxCandado != null && cp.MaxAlerta > cp.MaxCandado);\r\n }\r\n\r\n vm.cambiarRequerido = function (numeroPregunta) {\r\n let pregunta = vm.encuesta.Preguntas[numeroPregunta - 1];\r\n if (pregunta.Requerida) {\r\n let preguntaAux, preguntaPadre = pregunta.PreguntaPadre;\r\n for (; preguntaPadre != 0 ; preguntaPadre = preguntaAux.PreguntaPadre) {\r\n preguntaAux = vm.encuesta.Preguntas[preguntaPadre - 1];\r\n preguntaAux.Requerida = true;\r\n }\r\n } else {\r\n pregunta.Requerida = false;\r\n vm.encuesta.Preguntas.forEach(function(x) {\r\n if (x.PreguntaPadre == numeroPregunta && x.Requerida)\r\n pregunta.Requerida = true;\r\n });\r\n }\r\n };\r\n\r\n vm.copyDown = function(pregunta){\r\n vm.encuesta.Preguntas.push(angular.copy(pregunta));\r\n };\r\n\r\n vm.moveUp = function (posicion) {\r\n vm.cambiar(posicion, posicion - 1);\r\n vm.encuesta.Preguntas.forEach(function(x){\r\n if(x.PreguntaPadre - 1 == posicion)\r\n x.PreguntaPadre = posicion;\r\n else if(x.PreguntaPadre - 1 == posicion - 1)\r\n x.PreguntaPadre = posicion + 1;\r\n })\r\n };\r\n\r\n vm.moveDown = function (posicion) {\r\n var ultimo = vm.encuesta.Preguntas.length - 1;\r\n vm.cambiar(posicion, posicion + 1);\r\n vm.encuesta.Preguntas.forEach(function(x){\r\n if(x.PreguntaPadre - 1 == posicion)\r\n x.PreguntaPadre = posicion + 2;\r\n else if(x.PreguntaPadre - 1 == posicion + 1)\r\n x.PreguntaPadre = posicion + 1;\r\n })\r\n };\r\n\r\n vm.sendToFirst = function (posicion) {\r\n var primero = 0;\r\n vm.cambiar(posicion, primero);\r\n vm.encuesta.Preguntas.forEach(function(x){\r\n if(x.PreguntaPadre - 1 == primero)\r\n x.PreguntaPadre = posicion + 1;\r\n else if(x.PreguntaPadre - 1 == posicion)\r\n x.PreguntaPadre = primero + 1;\r\n })\r\n };\r\n\r\n vm.sendToLast = function (posicion) {\r\n var ultimo = vm.encuesta.Preguntas.length - 1;\r\n vm.cambiar(posicion, ultimo);\r\n vm.encuesta.Preguntas.forEach(function(x){\r\n if(x.PreguntaPadre - 1 == ultimo)\r\n x.PreguntaPadre = posicion + 1;\r\n else if(x.PreguntaPadre - 1 == posicion)\r\n x.PreguntaPadre = ultimo + 1;\r\n })\r\n };\r\n\r\n vm.removePregunta = function(pregunta) {\r\n const indice = vm.encuesta.Preguntas.indexOf(pregunta);\r\n if(pregunta.TipoPregunta.ActionType === 7 || pregunta.TipoPregunta.ActionType === 8){\r\n vm.encuesta.audioVideoQuestions.cantidad -= 1;\r\n } else if (pregunta.TipoPregunta.ActionType === 4){\r\n vm.encuesta.imageQuestions.cantidad -= 1;\r\n }else {\r\n vm.encuesta.simpleQuestions.cantidad -= 1;\r\n }\r\n vm.encuesta.Preguntas.splice(indice, 1);\r\n vm.encuesta.totalQuestions.cantidad--;\r\n vm.encuesta.Preguntas.forEach(function(x){\r\n if(x.PreguntaPadre === indice + 1)\r\n x.PreguntaPadre = 0;\r\n else if (x.PreguntaPadre > indice + 1)\r\n x.PreguntaPadre--;\r\n })\r\n };\r\n\r\n var resetQuestionsAmounts = function () {\r\n if(!vm.encuesta.audioVideoQuestions){\r\n vm.encuesta.audioVideoQuestions = {};\r\n }\r\n if(!vm.encuesta.imageQuestions){\r\n vm.encuesta.imageQuestions = {};\r\n }\r\n if(!vm.encuesta.simpleQuestions){\r\n vm.encuesta.simpleQuestions = {};\r\n }\r\n if(!vm.encuesta.totalQuestions){\r\n vm.encuesta.totalQuestions = {};\r\n }\r\n\r\n vm.encuesta.audioVideoQuestions.cantidad = 0;\r\n vm.encuesta.imageQuestions.cantidad = 0;\r\n vm.encuesta.simpleQuestions.cantidad = 0;\r\n vm.encuesta.totalQuestions.cantidad = 0;\r\n };\r\n\r\n //Cuando se asigna un tipo de pregunta a una pregunta, configura las mismas en el cotizador.\r\n vm.setQuestionsType = function () {\r\n resetQuestionsAmounts();\r\n angular.forEach(vm.encuesta.Preguntas, function (pregunta) {\r\n if(pregunta.TipoPregunta.ActionType === 7 || pregunta.TipoPregunta.ActionType === 8){\r\n vm.encuesta.audioVideoQuestions.cantidad += 1;\r\n } else if (pregunta.TipoPregunta.ActionType === 4){\r\n vm.encuesta.imageQuestions.cantidad += 1;\r\n }else {\r\n vm.encuesta.simpleQuestions.cantidad += 1;\r\n }\r\n vm.encuesta.totalQuestions.cantidad++;\r\n });\r\n };\r\n\r\n vm.getVisibilityRequeridaPadre = function (padre) {\r\n return padre != 0 && (vm.encuesta.Preguntas[padre - 1].TipoPregunta.Nombre == 'SI/NO' || vm.encuesta.Preguntas[padre - 1].TipoPregunta.Nombre == 'OPCION_MULTIPLE');\r\n };\r\n\r\n vm.updatedPreventivo = function (index) {\r\n var pregunta = vm.encuesta.Preguntas[index];\r\n if (pregunta.ControlPreventivo == null)\r\n pregunta.ControlPreventivo = { PrecioObjetivo: null, \r\n MinAlerta: null, MaxAlerta: null, MinCandado: null, MaxCandado: null };\r\n };\r\n\r\n function topPage() {\r\n document.body.scrollTop = document.documentElement.scrollTop = 0;\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('nuevaEncuestaCliente', {\r\n parent: 'app',\r\n url: '/nueva-encuesta-cliente/{id}',\r\n data: {\r\n authorities: []\r\n },\r\n params: {\r\n isDuplicated: ''\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/nuevaEncuestaCliente/nuevaEncuestaCliente.html',\r\n controller: 'NuevaEncuestaClienteController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n questionsTypes: ['PreguntaEncuestaClienteService', function (PreguntaEncuestaClienteService) {\r\n return PreguntaEncuestaClienteService.queryQuestionsTypes();\r\n }],\r\n criteriosAceptacion: ['EncuestasClienteService', function(EncuestasClienteService) {\r\n return EncuestasClienteService.getCriteriosAceptacion();\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('NuevaEncuestaClienteController', NuevaEncuestaClienteController);\r\n\r\n NuevaEncuestaClienteController.$inject = ['$rootScope', '$state', '$location',\r\n '$scope', 'questionsTypes', '$stateParams', 'EncuestasClienteService', 'criteriosAceptacion'];\r\n\r\n function NuevaEncuestaClienteController ($rootScope, $state, $location, $scope,\r\n questionsTypes, $stateParams, EncuestasClienteService, criteriosAceptacion) {\r\n var vm = this;\r\n\r\n vm.questionsTypes = questionsTypes;\r\n\r\n vm.encuesta = {};\r\n\r\n vm.validacionGuardar = false;\r\n vm.validacionAgregar = false;\r\n vm.validateSave = validateSave;\r\n vm.validateAdd = validateAdd;\r\n vm.fechaInicioValida = new Date();\r\n vm.fechaVigenciaValida = new Date();\r\n vm.fechaInicioValida.setDate(vm.fechaInicioValida.getDate() + 2);\r\n vm.fechaVigenciaValida.setDate(vm.fechaInicioValida.getDate() + 5);\r\n vm.fechaVigencia = moment(vm.encuesta.FechaVigencia).format('L');\r\n vm.fechaInicio = moment(vm.encuesta.FechaInicio).format('L');\r\n vm.criteriosAceptacion = criteriosAceptacion;\r\n vm.labelDetallesEncuesta = \"1 Detalles de la Encuesta\";\r\n vm.labelPreguntasEncuesta = \"2 Preguntas Encuesta\";\r\n vm.labelUbicacionEncuesta = \"3 Ubicación Encuesta\";\r\n vm.labelCostoEncuesta = \"4 Costo de la encuesta\";\r\n\r\n document.body.scrollTop = document.documentElement.scrollTop = 0;\r\n\r\n if(!$stateParams.id){\r\n vm.encuesta.Preguntas = [{ Descripcion: '', AccionType:'', Orden: '', AccionTypeObject: null, \r\n Respuestas:[{ NumeroRespuesta: 1, Valor: '' }], Requerida: false,\r\n ControlPreventivo: { PrecioObjetivo: null, MinAlerta: null, MaxAlerta: null,\r\n MinCandado: null, MaxCandado: null }}];\r\n }\r\n if($stateParams.id){\r\n EncuestasClienteService.get($stateParams.id).then(function(result){\r\n vm.encuesta = result;\r\n angular.forEach(vm.encuesta.Preguntas, function(pregunta){\r\n if(!pregunta.TipoPregunta.NombreFE) {\r\n if(pregunta.TipoPregunta.Nombre == 'NUMERICO'){\r\n pregunta.TipoPregunta.NombreFE = 'Numérico';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'ALFANUMERICO'){\r\n pregunta.TipoPregunta.NombreFE = 'Alfanumérico';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'SI/NO'){\r\n pregunta.TipoPregunta.NombreFE = 'Sí/No';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'GEOLOCALIZACION'){\r\n pregunta.TipoPregunta.NombreFE = 'Geolocalización';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'IMAGEN'){\r\n pregunta.TipoPregunta.NombreFE = 'Imágen';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'OPCION_MULTIPLE'){\r\n pregunta.TipoPregunta.NombreFE = 'Opción múltiple';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'BARRA_DESPLAZABLE'){\r\n pregunta.TipoPregunta.NombreFE = 'Barra desplazable';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'AUDIO'){\r\n pregunta.TipoPregunta.NombreFE = 'Audio';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'VIDEO'){\r\n pregunta.TipoPregunta.NombreFE = 'Video';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'CODIGO_QR'){\r\n pregunta.TipoPregunta.NombreFE = 'Código QR';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'PREGUNTA_CATALOGO'){\r\n pregunta.TipoPregunta.NombreFE = 'Pregunta catálogo';\r\n }\r\n };\r\n if($stateParams.isDuplicated){\r\n vm.encuesta.isDuplicated = true;\r\n }\r\n });\r\n vm.setQuestionsType();\r\n angular.forEach(vm.encuesta.Ubicaciones, function(ubicacion){\r\n ubicacion.Pos = [ubicacion.Latitud, ubicacion.Longitud];\r\n });\r\n });\r\n }\r\n\r\n (function(){\r\n if (window.matchMedia(\"(max-width: 767px)\").matches) {\r\n vm.labelDetallesEncuesta = \"1\";\r\n vm.labelPreguntasEncuesta = \"2\";\r\n vm.labelUbicacionEncuesta = \"3\";\r\n vm.labelCostoEncuesta = \"4\";\r\n }\r\n else {\r\n vm.labelDetallesEncuesta = \"1 Detalles de la Encuesta\";\r\n vm.labelPreguntasEncuesta = \"2 Preguntas Encuesta\";\r\n vm.labelUbicacionEncuesta = \"3 Ubicación Encuesta\";\r\n vm.labelCostoEncuesta = \"4 Costo de la encuesta\";\r\n }\r\n })();\r\n\r\n vm.setQuestionsType = function () {\r\n if(!vm.encuesta.audioVideoQuestions) {\r\n vm.encuesta.audioVideoQuestions = {};\r\n vm.encuesta.audioVideoQuestions.cantidad = 0;\r\n }\r\n if(!vm.encuesta.imageQuestions) {\r\n vm.encuesta.imageQuestions = {};\r\n vm.encuesta.imageQuestions.cantidad = 0;\r\n }\r\n if(!vm.encuesta.simpleQuestions) {\r\n vm.encuesta.simpleQuestions = {};\r\n vm.encuesta.simpleQuestions.cantidad = 0;\r\n }\r\n if(!vm.encuesta.totalQuestions) {\r\n vm.encuesta.totalQuestions = {};\r\n vm.encuesta.totalQuestions.cantidad = 0;\r\n }\r\n\r\n angular.forEach(vm.encuesta.Preguntas, function (pregunta) {\r\n if(pregunta.TipoPregunta.ActionType === 7 || pregunta.TipoPregunta.ActionType === 8){\r\n vm.encuesta.audioVideoQuestions.cantidad += 1;\r\n } else if (pregunta.TipoPregunta.ActionType === 4){\r\n vm.encuesta.imageQuestions.cantidad += 1;\r\n }else {\r\n vm.encuesta.simpleQuestions.cantidad += 1;\r\n }\r\n vm.encuesta.totalQuestions.cantidad++;\r\n });\r\n };\r\n\r\n vm.selectedIndex = 0;\r\n\r\n vm.changeTab = function () {\r\n vm.selectedIndex++;\r\n if(vm.selectedIndex === 3){\r\n vm.validacionGuardar = validateSave();\r\n vm.validacionAgregar = validateAdd();\r\n }\r\n };\r\n\r\n vm.validacion = function () {\r\n vm.validacionGuardar = validateSave();\r\n vm.validacionAgregar = validateAdd();\r\n };\r\n\r\n function validateSave() {\r\n if( vm.encuesta.Nombre === \"\" || vm.encuesta.Nombre === undefined)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.Descripcion === \"\" || vm.encuesta.Descripcion === undefined)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.FechaInicio === \"\" || vm.fechaInicioValida >= vm.encuesta.FechaInicio)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.FechaVigencia === \"\" || vm.fechaVigenciaValida >= vm.encuesta.FechaVigencia)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.TipoEncuesta === \"\" || vm.encuesta.TipoEncuesta === undefined)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.CriterioAceptacion === \"\" || vm.encuesta.CriterioAceptacion === undefined)\r\n {\r\n return false;\r\n }\r\n return true;\r\n\r\n }\r\n\r\n function validateAdd() {\r\n if( vm.encuesta.FechaInicio === \"\" || vm.fechaInicioValida >= vm.encuesta.FechaInicio)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.FechaVigencia === \"\" || vm.fechaVigenciaValida >= vm.encuesta.FechaVigencia)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.Preguntas.length === 0){\r\n return false;\r\n }\r\n vm.valido = true;\r\n vm.encuesta.Preguntas.forEach(function(element) {\r\n if(element.TipoPregunta){\r\n if(element.TipoPregunta.Nombre === \"\"){\r\n vm.valido = false;\r\n return false;\r\n }\r\n if(element.Texto === \"\" || !element.Texto && element.TipoPregunta.Nombre != 'PREGUNTA_CATALOGO'){\r\n vm.valido = false;\r\n return false;\r\n }\r\n }\r\n else{\r\n vm.valido = false;\r\n return false;\r\n }\r\n });\r\n if(!vm.valido){\r\n return false;\r\n }\r\n if( vm.encuesta.Ubicaciones.length === 0){\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n vm.confirmEncuesta = function () {\r\n if (vm.validateForm() && vm.validateQuestion()) {\r\n vm.encuesta.Nombre = vm.nombre;\r\n vm.encuesta.Descripcion = vm.descripcion;\r\n vm.encuesta.CriteriosAceptacion = vm.criterios;\r\n vm.encuesta.FechaInicio = vm.fechaInicio;\r\n vm.encuesta.FechaVigencia = vm.fechaVigencia;\r\n vm.encuesta.Activo = 1;\r\n vm.encuesta.Exito = 50;\r\n vm.encuesta.Fracaso = 50;\r\n vm.encuesta.Auditores = vm.auditores;\r\n\r\n /*vm.listaMapItems = [];\r\n vm.listaMapName = [];\r\n\r\n vm.nombreListaMap = sharedProperties.getListName(); //Obtenemos el nombre de la lista desde map-controller\r\n\r\n vm.listaMapItems = sharedProperties.getItems();\r\n if (vm.nombreListaMap) {\r\n for (var i = 0; i < vm.listaMapItems.length; i++)\r\n {\r\n vm.listaMapItems[i].NombreLista = vm.nombreListaMap.toString();\r\n }\r\n var ListaNombre = vm.nombreListaMap.toString()\r\n }\r\n var nList = { ListaNombre }\r\n vm.listaMapName.push(nList);\r\n\r\n params = { Encuesta: $scope.encuesta, Preguntas: $scope.preguntas, Respuestas: $scope.respuestas, Ubicaciones: $scope.listaMapItems, Lista: $scope.listaMapName };\r\n vm.showAdvanced(params);*/\r\n }\r\n };\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('nuevaEncuestaCliente.modal', {\r\n parent: 'nuevaEncuestaCliente',\r\n url: '/modal',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'nuevaEncuestaView': {\r\n templateUrl: 'app/components/modalEncuesta/modalEncuesta.html',\r\n controller: 'ModalEncuestaController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ModalEncuestaController', ModalEncuestaController);\r\n\r\n ModalEncuestaController.$inject = [];\r\n\r\n function ModalEncuestaController () {\r\n var vm = this;\r\n\r\n vm.saveEncuesta = saveEncuesta;\r\n\r\n function saveEncuesta (data) {\r\n vm.isLoading = true;\r\n vm.encuesta.Localizacion = vm.positions;\r\n vm.encuesta.Aceptacion = data.Encuesta.Aceptacion;\r\n if (vm.encuesta.Aceptacion == 'undefined' || vm.encuesta.Aceptacion == null || vm.encuesta.Aceptacion == false) {\r\n vm.showAlert(\"Se deben aceptar los términos y condiciones\");\r\n }\r\n else {\r\n if (vm.encuesta.Aceptacion == true) {\r\n date = new Date();\r\n var dateAceptacion = moment(date, 'DD/MM/YYYY').format();\r\n data.Encuesta.Aceptacion = dateAceptacion;\r\n }\r\n\r\n EncuestasHttpServices.encuestaCreateRequest(data,\r\n function (data) {\r\n vm.isLoading = false;\r\n vm.dataResponse = data;\r\n var detalles = data.encuestaDetalles;\r\n var preguntas = data.preguntas;\r\n var status = data.status;\r\n if (status == 1) {\r\n vm.showModalTerms();\r\n }\r\n else {\r\n vm.isLoading = false;\r\n vm.showAlert('Ocurrio un error al registrar la encuesta');\r\n }\r\n },\r\n function (response) {\r\n vm.isLoading = false;\r\n alert(\"Ha ocurrido un error\");\r\n }\r\n );\r\n }\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('membresiaSaldo', {\r\n templateUrl: 'app/components/membresiaSaldo/membresiaSaldo.html',\r\n controller: ['MembresiaService', function (MembresiaService) {\r\n var vm = this;\r\n\r\n if(!vm.membership){\r\n vm.membership = {}\r\n vm.membership.CantidadContacto = 0;\r\n }\r\n\r\n vm.contactosChartData = [\r\n vm.contactosLibres,\r\n vm.membership.CantidadContacto - vm.contactosLibres\r\n ];\r\n\r\n vm.doughnutChartOptions = {\r\n aspectRatio: 1,\r\n hover: {\r\n mode: null\r\n },\r\n tooltips: {\r\n enabled: false\r\n }\r\n };\r\n\r\n vm.doughnutChartColors = [\r\n '#8bc24a',\r\n '#d9e4eb'\r\n ];\r\n\r\n }],\r\n controllerAs: 'vm',\r\n bindings: {\r\n membership: '<',\r\n contactosLibres: '<'\r\n }\r\n });\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('MembresiaContratarDialogController', MembresiaContratarDialogController);\r\n\r\n MembresiaContratarDialogController.$inject = ['$uibModalInstance', 'membership', '$http', 'userMembership', 'userCard'];\r\n\r\n function MembresiaContratarDialogController ($uibModalInstance, membership, $http, userMembership, userCard) {\r\n var vm = this;\r\n\r\n vm.membership = membership;\r\n vm.hasMembership = userMembership != null;\r\n vm.showdialogcard = false;\r\n\r\n vm.userCard = userCard.data;\r\n if(vm.userCard == null){\r\n vm.showdialogcard = true;\r\n }\r\n\r\n vm.clear = function () {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.modalAcept = function(){\r\n $uibModalInstance.dismiss('ok');\r\n };\r\n\r\n vm.suscribe = function () {\r\n $http.post('api/membresias/suscribe/'+membership.Id, {}).then(function(){\r\n $uibModalInstance.close('ok');\r\n }).catch(function (error) {\r\n console.log(error);\r\n });\r\n };\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('membresia', {\r\n parent: 'app',\r\n url: '/membresia',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/membresia/membresia.html',\r\n controller: 'MembresiaController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n memberships: ['MembresiaService', function (MembresiaService) {\r\n return MembresiaService.queryMemberships();\r\n }],\r\n // userMembership : ['MembresiaService', function (MembresiaService) {\r\n // return MembresiaService.getUserMembership();\r\n // }],\r\n logged : ['Principal', function (Principal) {\r\n return Principal.isAuthenticated();\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state('membresia.contratar', {\r\n parent: 'membresia',\r\n url: '/contratar/{id}',\r\n data: {\r\n authorities: []\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', 'MembresiaService', function($stateParams, $state, $uibModal, MembresiaService) {\r\n $uibModal.open({\r\n templateUrl: 'app/components/membresia/membresiaContratar-dialog.html',\r\n controller: 'MembresiaContratarDialogController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n membership : ['MembresiaService', function (MembresiaService) {\r\n return MembresiaService.getMembership($stateParams.id);\r\n }],\r\n userMembership : function () {\r\n return MembresiaService.getUserMembership();\r\n },\r\n userCard : ['CarritoService', function (CarritoService) {\r\n return CarritoService.getCard();\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('membresia', null, { reload: true });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n });\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('MembresiaService', MembresiaService);\r\n\r\n MembresiaService.$inject = ['$q', '$http'];\r\n\r\n function MembresiaService ($q, $http) {\r\n return {\r\n queryMemberships: queryMemberships,\r\n queryItems: queryItems,\r\n getUserMembership: getUserMembership,\r\n getMembresiaCarrito: getMembresiaCarrito,\r\n getMembresiaToApprove: getMembresiaToApprove,\r\n cancelMembership: cancelMembership,\r\n getNextMembership: getNextMembership,\r\n getMembership: getMembership,\r\n getContactosLibres: getContactosLibres,\r\n getPreguntasLibres: getPreguntasLibres,\r\n createMembership: createMembership,\r\n deleteMembership: deleteMembership,\r\n updateMembership: updateMembership,\r\n createItem: createItem,\r\n deleteItem: deleteItem,\r\n updateItem: updateItem,\r\n // addToCart: addToCart,\r\n suscribe: suscribe,\r\n getApprovalLink: getApprovalLink,\r\n executeAgreement: executeAgreement,\r\n cancelMembresiaToApprove: cancelMembresiaToApprove,\r\n approveMembresia: approveMembresia\r\n };\r\n\r\n function queryMemberships() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function cancelMembership() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/cancel').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n\r\n function getContactosLibres() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/contactos').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getPreguntasLibres() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/preguntas').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryItems() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/items').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getUserMembership() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/byLoggedUser').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getMembresiaCarrito() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/carrito').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getMembresiaToApprove() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/to-approve').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getMembership(id) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/Membresias/' + id).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getNextMembership() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/nextByUserLogged').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function createMembership(membership) {\r\n return $http.post('api/membresias', membership);\r\n }\r\n\r\n function deleteMembership(membership) {\r\n return $http.delete('api/membresias?id='+membership.Id);\r\n }\r\n\r\n function updateMembership(membership) {\r\n return $http.put('api/membresias', membership);\r\n }\r\n\r\n function createItem(item) {\r\n return $http.post('api/items', item);\r\n }\r\n\r\n function deleteItem(item) {\r\n return $http.delete('api/items?id='+item.Id);\r\n }\r\n\r\n function updateItem(item) {\r\n return $http.put('api/items', item);\r\n }\r\n\r\n // function addToCart(encuesta){\r\n // var deferred = $q.defer();\r\n //\r\n // save(encuesta).then(function(response){\r\n // $http.post('api/membresias/addToCart', response).then(function (result) {\r\n // deferred.resolve(result.data);\r\n // }).catch(function (error) {\r\n // deferred.reject(error);\r\n // });\r\n // });\r\n //\r\n // return deferred.promise;\r\n // }\r\n\r\n function suscribe(membresiaId){\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/membresias/suscribe/' + membresiaId).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getApprovalLink(id) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/GetPayPalApproval_url?id_membresia=' + id).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function executeAgreement(agreementToken) {\r\n return $http.get('api/membresias/ExecuteAgreement?agreementToken=' + agreementToken);\r\n }\r\n\r\n function cancelMembresiaToApprove(id){\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/membresias/CancelMembresiaToApprove', id).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function approveMembresia(id){\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/membresias/ApproveMembresia', id).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('MembresiaController', MembresiaController);\r\n\r\n MembresiaController.$inject = ['memberships', 'logged', 'MembresiaService', 'Principal', '$window',\r\n '$stateParams', '$location','LoginService', 'CarritoProvider', '$uibModal'];\r\n\r\n function MembresiaController (memberships, logged, MembresiaService, Principal, $window,\r\n $stateParams, $location, LoginService, CarritoProvider, $uibModal) {\r\n var vm = this;\r\n\r\n vm.faltaLogin = 'Es necesario estar logueado para poder contratar una membresia.';\r\n\r\n function init () {\r\n vm.isGettingToken = false;\r\n\r\n // var agreementToken = $location.search().token;\r\n // if(agreementToken != null) {\r\n // vm.isGettingToken = true;\r\n // MembresiaService.executeAgreement(agreementToken).then(function(result) {\r\n // vm.isGettingToken = false;\r\n // $uibModal.open({\r\n // templateUrl: 'app/components/membresia/confirmacionMembresia-dialog.html',\r\n // controller: 'ConfirmacionMembresiaController',\r\n // controllerAs: 'vm',\r\n // size: 'md'\r\n // });\r\n // });\r\n // }\r\n\r\n vm.isAuthenticated = Principal.isAuthenticated;\r\n vm.memberships = memberships;\r\n vm.memberships.map(function (x) {\r\n x.Items.sort(function (a, b) {\r\n return b.Destacado - a.Destacado;\r\n });\r\n return x;\r\n });\r\n\r\n\r\n\r\n if(logged){\r\n MembresiaService.getUserMembership().then(function(result){\r\n vm.userMembership = result;\r\n });\r\n\r\n }\r\n \r\n angular.forEach(vm.memberships, function(membership){\r\n membership.PrecioFinal = membership.Precio - ((membership.Precio * membership.Descuento) / 100) ;\r\n });\r\n vm.logged = logged;\r\n }\r\n\r\n vm.suscribe = function (membresiaId) {\r\n if(!vm.logged) {\r\n LoginService.open();\r\n return;\r\n }\r\n\r\n console.log('nicooo', vm.userMembership);\r\n if(vm.userMembership\r\n && vm.userMembership.Id === membresiaId) {\r\n //ya tiene la membresia contratada\r\n console.log('membresia contratada');\r\n return;\r\n }\r\n //llamo al servicio de be que crea la suscripcion a la membresia seleccionada\r\n MembresiaService.suscribe(membresiaId).then(function(response) {\r\n console.log(\"membresia enviada al carrito\");\r\n $uibModal.open({\r\n templateUrl: 'app/components/membresia/confirmacionMembresia-dialog.html',\r\n controller: 'ConfirmacionMembresiaController',\r\n controllerAs: 'vm',\r\n size: 'md'\r\n }).closed.then(function () {\r\n MembresiaService.getUserMembership().then(function(result){\r\n vm.userMembership = result;\r\n });\r\n });\r\n });\r\n\r\n\r\n };\r\n\r\n vm.setMembresiaButtonText = function(index){\r\n var message = 'CONTRATAR';\r\n if(vm.userMembership != null && vm.memberships[index].Id == vm.userMembership.Id){\r\n if(vm.userMembership.Active){\r\n message = 'CONTRATADA';\r\n }\r\n if(!vm.userMembership.Active && !vm.userMembership.Carrito){\r\n message = 'PENDIENTE DE APROBACION';\r\n }\r\n if(vm.userMembership.Carrito){\r\n message = 'ENVIADA AL CARRITO';\r\n }\r\n }\r\n\r\n return message;\r\n };\r\n\r\n window.scrollTo(0, 0);\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ConfirmacionMembresiaController', ConfirmacionMembresiaController);\r\n\r\n ConfirmacionMembresiaController.$inject = ['CarritoProvider', '$uibModalInstance'];\r\n\r\n function ConfirmacionMembresiaController(CarritoProvider, $uibModalInstance) {\r\n var vm = this;\r\n\r\n function init () {\r\n }\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n init();\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('LoginService', LoginService);\r\n\r\n LoginService.$inject = ['$uibModal'];\r\n\r\n function LoginService ($uibModal) {\r\n var service = {\r\n open: open\r\n };\r\n\r\n var modalInstance = null;\r\n var resetModal = function () {\r\n modalInstance = null;\r\n };\r\n\r\n return service;\r\n\r\n function open () {\r\n if (modalInstance !== null) return;\r\n modalInstance = $uibModal.open({\r\n animation: true,\r\n templateUrl: 'app/components/login/login.html',\r\n controller: 'LoginController',\r\n controllerAs: 'vm'\r\n });\r\n modalInstance.result.then(\r\n resetModal,\r\n resetModal\r\n );\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('LoginController', LoginController);\r\n\r\n LoginController.$inject = ['$rootScope', '$state', '$timeout', 'Auth', '$uibModalInstance', 'UserByFacebook', '$window'];\r\n\r\n function LoginController ($rootScope, $state, $timeout, Auth, $uibModalInstance, UserByFacebook, $window) {\r\n var vm = this;\r\n\r\n vm.authenticationError = false;\r\n vm.noClientError = false;\r\n vm.cancel = cancel;\r\n vm.credentials = {};\r\n vm.grant_type = 'password';\r\n vm.login = login;\r\n vm.password = null;\r\n vm.register = register;\r\n vm.rememberMe = true;\r\n vm.requestResetPassword = requestResetPassword;\r\n vm.username = null;\r\n vm.facebookLogin = facebookLogin;\r\n\r\n $timeout(function (){angular.element('#username').focus();});\r\n\r\n function cancel () {\r\n vm.credentials = {\r\n username: null,\r\n password: null,\r\n rememberMe: true,\r\n grant_type: 'password'\r\n };\r\n vm.authenticationError = false;\r\n vm.noClientError = false;\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function login (event) {\r\n if(event != null) {\r\n event.preventDefault();\r\n }\r\n\r\n Auth.login({\r\n username: vm.username,\r\n password: vm.password,\r\n rememberMe: vm.rememberMe,\r\n grant_type: vm.grant_type\r\n }).then(function () {\r\n vm.authenticationError = false;\r\n $uibModalInstance.close();\r\n\r\n $window.location.reload();\r\n\r\n if ($state.current.name === 'register' || $state.current.name === 'activate' ||\r\n $state.current.name === 'finishReset' || $state.current.name === 'requestReset') {\r\n }\r\n\r\n $rootScope.$broadcast('authenticationSuccess');\r\n\r\n // previousState was set in the authExpiredInterceptor before being redirected to login modal.\r\n // since login is successful, go to stored previousState and clear previousState\r\n if (Auth.getPreviousState()) {\r\n var previousState = Auth.getPreviousState();\r\n Auth.resetPreviousState();\r\n $state.go(previousState.name, previousState.params);\r\n }\r\n }).catch(function (resp) {\r\n if (resp.data.error === 'invalid_grant') {\r\n vm.authenticationError = true;\r\n }\r\n\r\n if (resp.data.error === 'no_client') {\r\n vm.noClientError = true;\r\n }\r\n });\r\n }\r\n\r\n function register () {\r\n $uibModalInstance.dismiss('cancel');\r\n $state.go('register');\r\n }\r\n\r\n function facebookLogin() {\r\n //Busco el estado del login del usuario con facebook\r\n FB.getLoginStatus(function(response) {\r\n //Si ya se encuentra logueado facebook y conectado a la aplicacion\r\n if (response.status === 'connected') {\r\n //Logueo el usuario en Smart Eyes\r\n loginWithFacebookData();\r\n } else {\r\n //Sino muestro el cuadro de inicio de sesión de Facebook\r\n FB.login(function(response) {\r\n console.log(response.status);\r\n //Si se conecto a Facebook, logueo el usuario en Smart Eyes\r\n if (response.status === 'connected') {\r\n //Busco en Facebook los datos del usuario\r\n FB.api('/me', {\r\n fields: 'id, first_name, last_name, email'\r\n }, function (response) {\r\n //Si no hubo ningun error buscando los datos\r\n if (response && !response.error) {\r\n //Busco si ya existe en Smart Eyes el usuario logueado en Facebook\r\n UserByFacebook.get({facebookId: response.id}, function(result) {\r\n //Si no existe, lo creo\r\n if(result.Id == undefined) {\r\n var newUser = {\r\n FacebookId: response.id,\r\n Email: response.email,\r\n LangKey: 'en',\r\n UserName: response.email,\r\n Password: response.id,\r\n FirstName: response.first_name,\r\n LastName: response.last_name,\r\n Telefono: '00000000'\r\n };\r\n\r\n //Si el usuario esta logueado a Facebook mediante numero de telefono, y no tiene email\r\n //entonces no se puede loguear a Smart Eyes mediante Facebook\r\n if(newUser.Email != null) {\r\n Auth.createAccount(newUser).then(function () {\r\n //una vez creado el usuario, lo logueo a Smart Eyes\r\n loginWithFacebookData();\r\n });\r\n } else {\r\n vm.facebookLoginError = \"No se puede loguear con Facebook si no se tiene email\";\r\n }\r\n } else {\r\n //Si existe, directamente logueo al usuario en Smart Eyes\r\n loginWithFacebookData();\r\n }\r\n });\r\n } else {\r\n vm.facebookLoginError = \"Error al buscar los datos del usuario en Facebook\";\r\n }\r\n });\r\n }\r\n }, {scope: 'public_profile, email'});\r\n }\r\n });\r\n }\r\n\r\n function loginWithFacebookData() {\r\n FB.api('/me', {\r\n fields: 'id, first_name, last_name, email'\r\n }, function (response) {\r\n vm.username = response.email;\r\n vm.password = response.id;\r\n vm.rememberMe = true;\r\n vm.grant_type = 'password';\r\n\r\n login();\r\n })\r\n }\r\n\r\n function requestResetPassword () {\r\n $uibModalInstance.dismiss('cancel');\r\n $state.go('requestReset');\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('investigacion', {\r\n parent: 'app',\r\n url: '/investigacion',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/investigacion/investigacion.html',\r\n controller: 'InvestigacionController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n })\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('InvestigacionController', InvestigacionController);\r\n\r\n InvestigacionController.$inject = [];\r\n\r\n function InvestigacionController () {\r\n var vm = this;\r\n\r\n vm.selectedTab = 1;\r\n vm.selectedCar = 1;\r\n\r\n vm.showTab = function (tab){\r\n vm.selectedTab = tab;\r\n }\r\n\r\n vm.selectCar = function (car){\r\n vm.selectedCar = car;\r\n }\r\n\r\n window.scrollTo(0, 0);\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('industrias', {\r\n parent: 'app',\r\n url: '/industrias',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/industrias/industrias.html',\r\n controller: 'IndustriasController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n })\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('IndustriasController', IndustriasController);\r\n\r\n IndustriasController.$inject = [];\r\n\r\n function IndustriasController () {\r\n var vm = this;\r\n\r\n vm.selectedTab = 1;\r\n vm.selectedCar = 1;\r\n\r\n vm.showTab = function (tab){\r\n vm.selectedTab = tab;\r\n }\r\n\r\n vm.selectCar = function (car){\r\n vm.selectedCar = car;\r\n }\r\n\r\n window.scrollTo(0, 0);\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('HistorialComprasDetailController', HistorialComprasDetailController);\r\n\r\n HistorialComprasDetailController.$inject = ['$scope', '$stateParams', '$uibModalInstance', 'getCompra'];\r\n\r\n function HistorialComprasDetailController ($scope, $stateParams, $uibModalInstance, getCompra) {\r\n var vm = this;\r\n\r\n vm.historial = getCompra.compra;\r\n\r\n vm.print = function () {\r\n window.print();\r\n };\r\n\r\n vm.clear = function () {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('historialCompras', {\r\n parent: 'app',\r\n url: '/historial-compras',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/historialCompras/historialCompras.html',\r\n controller: 'HistorialComprasController',\r\n controllerAs: 'vm'\r\n }\r\n },\r\n resolve: {\r\n getHistorialCompras: ['HistorialComprasService','Principal', function (HistorialComprasService, Principal) {\r\n var isAdmin = false;\r\n return Principal.identity().then(function (result) {\r\n angular.forEach(result.Authorities, function (role) {\r\n if(role === 'ROLE_ADMIN'){\r\n isAdmin = true;\r\n }\r\n });\r\n if(isAdmin){\r\n return HistorialComprasService.queryAllHistorialCompras();\r\n }else{\r\n return HistorialComprasService.queryHistorialCompras();\r\n }\r\n });\r\n }]\r\n }\r\n })\r\n .state('historialCompras.detail', {\r\n parent: 'historialCompras',\r\n url: '/{id}',\r\n data: {\r\n authorities: []\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/components/historialCompras/historialCompras-detail.html',\r\n controller: 'HistorialComprasDetailController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n getCompra: ['HistorialComprasService', function (HistorialComprasService) {\r\n return HistorialComprasService.queryCompra($stateParams.id);\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('historialCompras', null, { reload: false });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n })\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('HistorialComprasService', HistorialComprasService);\r\n\r\n HistorialComprasService.$inject = ['$q', '$http', '$stateParams'];\r\n\r\n function HistorialComprasService ($q, $http, $stateParams) {\r\n return {\r\n queryHistorialCompras: queryHistorialCompras,\r\n queryCompra: queryCompra,\r\n queryAllHistorialCompras: queryAllHistorialCompras,\r\n uploadReceipt: uploadReceipt\r\n };\r\n\r\n function queryHistorialCompras() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/compras')\r\n .success(function(data) {\r\n deferred.resolve({\r\n historialCompras: data.Content\r\n });\r\n }).error(function(msg) {\r\n deferred.reject(msg);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryCompra(id) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/compras/' + id)\r\n .success(function(data) {\r\n deferred.resolve({\r\n compra: data\r\n });\r\n }).error(function(msg) {\r\n deferred.reject(msg);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryAllHistorialCompras (size, number) {\r\n var deferred = $q.defer();\r\n var size = 20;\r\n var number = number;\r\n\r\n if(!number){\r\n number = 0;\r\n }\r\n\r\n $http.get('api/compras?Size='+ size + '&Number=' + number)\r\n .success(function(data) {\r\n deferred.resolve({\r\n historialCompras: data.Content\r\n });\r\n }).error(function(msg) {\r\n deferred.reject(msg);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function uploadReceipt($file, id) {\r\n if($file) {\r\n var fileReader = new FileReader();\r\n fileReader.readAsDataURL($file);\r\n var base64Data = \"\";\r\n\r\n fileReader.onload = function (e) {\r\n base64Data = e.target.result.substr(e.target.result.indexOf('base64,') + 'base64,'.length);\r\n\r\n var compraDTO = {};\r\n compraDTO.Id = id;\r\n compraDTO.FacturaFile = base64Data;\r\n\r\n $http.post('api/compras/UploadFacturaFile', compraDTO).then(function(response) {\r\n if(response.status == 200)\r\n window.alert(\"Carga exitosa\");\r\n else\r\n window.alert(\"Error al cargar archivo\");\r\n });\r\n };\r\n }\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('HistorialComprasController', HistorialComprasController);\r\n\r\n HistorialComprasController.$inject = ['getHistorialCompras', 'HistorialComprasService'];\r\n\r\n function HistorialComprasController (getHistorialCompras, HistorialComprasService) {\r\n var vm = this;\r\n\r\n vm.historialCompras = getHistorialCompras.historialCompras;\r\n\r\n vm.uploadReceipt = function ($file, id) {\r\n HistorialComprasService.uploadReceipt($file, id);\r\n }\r\n\r\n window.scrollTo(0, 0);\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('showValidation', showValidation);\r\n\r\n function showValidation () {\r\n var directive = {\r\n restrict: 'A',\r\n require: 'form',\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc (scope, element, attrs, formCtrl) {\r\n element.find('.form-group').each(function() {\r\n var $formGroup = angular.element(this);\r\n var $inputs = $formGroup.find('input[ng-model],textarea[ng-model],select[ng-model]');\r\n\r\n if ($inputs.length > 0) {\r\n $inputs.each(function() {\r\n var $input = angular.element(this);\r\n var inputName = $input.attr('name');\r\n scope.$watch(function() {\r\n return formCtrl[inputName].$invalid && formCtrl[inputName].$dirty;\r\n }, function(isInvalid) {\r\n $formGroup.toggleClass('has-error', isInvalid);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .constant('paginationConstants', {\r\n 'itemsPerPage': 20\r\n });\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('minbytes', minbytes);\r\n\r\n function minbytes () {\r\n var directive = {\r\n restrict: 'A',\r\n require: '?ngModel',\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc (scope, element, attrs, ngModel) {\r\n if (!ngModel) {\r\n return;\r\n }\r\n\r\n ngModel.$validators.minbytes = function (modelValue) {\r\n return ngModel.$isEmpty(modelValue) || numberOfBytes(modelValue) >= attrs.minbytes;\r\n };\r\n }\r\n\r\n function endsWith(suffix, str) {\r\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\r\n }\r\n\r\n function paddingSize(base64String) {\r\n if (endsWith('==', base64String)) {\r\n return 2;\r\n }\r\n if (endsWith('=', base64String)) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n function numberOfBytes(base64String) {\r\n return base64String.length / 4 * 3 - paddingSize(base64String);\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('maxbytes', maxbytes);\r\n\r\n function maxbytes () {\r\n var directive = {\r\n restrict: 'A',\r\n require: '?ngModel',\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc (scope, element, attrs, ngModel) {\r\n if (!ngModel) {\r\n return;\r\n }\r\n\r\n ngModel.$validators.maxbytes = function (modelValue) {\r\n return ngModel.$isEmpty(modelValue) || numberOfBytes(modelValue) <= attrs.maxbytes;\r\n };\r\n }\r\n\r\n function endsWith(suffix, str) {\r\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\r\n }\r\n\r\n function paddingSize(base64String) {\r\n if (endsWith('==', base64String)) {\r\n return 2;\r\n }\r\n if (endsWith('=', base64String)) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n function numberOfBytes(base64String) {\r\n return base64String.length / 4 * 3 - paddingSize(base64String);\r\n }\r\n }\r\n\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('EncuestasClienteDetailController', EncuestasClienteDetailController);\r\n\r\n EncuestasClienteDetailController.$inject = ['$scope', '$stateParams', '$uibModalInstance', 'encuesta', '$window'];\r\n\r\n function EncuestasClienteDetailController ($scope, $stateParams, $uibModalInstance, encuesta, $window) {\r\n var vm = this;\r\n vm.clear = clear;\r\n vm.encuesta = encuesta;\r\n \r\n function clear () {\r\n $uibModalInstance.dismiss('cancel');\r\n $window.history.back();\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('EncuestasClienteDeleteController', EncuestasClienteDeleteController);\r\n\r\n EncuestasClienteDeleteController.$inject = ['encuesta', '$uibModalInstance', 'EncuestasClienteService'];\r\n\r\n function EncuestasClienteDeleteController (encuesta, $uibModalInstance, EncuestasClienteService) {\r\n var vm = this;\r\n\r\n function init () {\r\n vm.encuesta = encuesta;\r\n }\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.remove = function() {\r\n EncuestasClienteService.deleteEncuesta(vm.encuesta);\r\n $uibModalInstance.close(vm.encuesta);\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('encuestasCliente', {\r\n parent: 'app',\r\n url: '/encuestas-cliente',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/encuestasCliente/encuestasCliente.html',\r\n controller: 'EncuestasClienteController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n user : ['Principal', function (Principal) {\r\n return Principal.identity();\r\n }],\r\n encuestas: ['EncuestasClienteService', function (EncuestasClienteService) {\r\n return EncuestasClienteService.queryEncuestasClienteByPage(0);\r\n }],\r\n encuestasSummary: ['EncuestasClienteService', function (EncuestasClienteService) {\r\n return EncuestasClienteService.summary();\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state('encuestasCliente.detail', {\r\n parent: 'encuestasCliente',\r\n url: '/{id}',\r\n data: {\r\n authorities: []\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/components/encuestasCliente/encuestasCliente-detail.html',\r\n controller: 'EncuestasClienteDetailController',\r\n controllerAs: 'vm',\r\n resolve: { \r\n encuesta: ['EncuestasClienteService', function (EncuestasClienteService) {\r\n return EncuestasClienteService.get($stateParams.id);\r\n }]\r\n },\r\n size: 'md'\r\n }).result.then(function() {\r\n $state.go('encuestasCliente', null, { reload: false });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n })\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('EncuestasClienteService', EncuestasClienteService);\r\n\r\n EncuestasClienteService.$inject = ['$q', '$http', 'API_URL', '$window'];\r\n\r\n function EncuestasClienteService ($q, $http, API_URL, $window) {\r\n return {\r\n approve: approve,\r\n get: get,\r\n queryEncuestasCliente: queryEncuestasCliente,\r\n queryEncuestasClienteByEstado: queryEncuestasClienteByEstado,\r\n queryEncuestasClienteByName: queryEncuestasClienteByName,\r\n createFromExcel: createFromExcel,\r\n queryEncuestasClienteByPage: queryEncuestasClienteByPage,\r\n save: save,\r\n addToCart: addToCart,\r\n summary: summary,\r\n removeFromCart: removeFromCart,\r\n deleteEncuesta: deleteEncuesta,\r\n getEncuestaResults: getEncuestaResults,\r\n getEncuestadoresByEncuestaResults: getEncuestadoresByEncuestaResults,\r\n getResultEstadisticasEfectividad: getResultEstadisticasEfectividad,\r\n getResultsByEncuestadorId: getResultsByEncuestadorId,\r\n getResultEstadisticas: getResultEstadisticas,\r\n exportResultsToCSV: exportResultsToCSV,\r\n exportResultsToPDF: exportResultsToPDF,\r\n getCriteriosAceptacion: getCriteriosAceptacion,\r\n getImage: getImage,\r\n sendMediaEmail: sendMediaEmail,\r\n checkForFile: checkForFile,\r\n getLinkForFile: getLinkForFile,\r\n buscarGeosTodos: buscarGeosTodos,\r\n getEncuestaBySitiowebId: getEncuestaBySitiowebId,\r\n getMediaForCarousel: getMediaForCarousel\r\n };\r\n\r\n function get(encuestaId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/' + encuestaId).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function deleteEncuesta (encuesta) {\r\n var deferred = $q.defer();\r\n\r\n $http({\r\n method: 'DELETE',\r\n url: 'api/encuestas',\r\n data: encuesta,\r\n headers: {\r\n 'Content-type': 'application/json;charset=utf-8'\r\n }\r\n }).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function approve(encuestaId) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/encuestas/approve', { Id: encuestaId }).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryEncuestasCliente() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryEncuestasClienteByPage(page) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas?Number=' + page).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryEncuestasClienteByEstado(state) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/estado/' + state).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryEncuestasClienteByName(nombre, page) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/nombre/' + nombre + '?Number=' + page).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function createFromExcel(formData) {\r\n var deferred = $q.defer();\r\n\r\n var excelDTO = {};\r\n excelDTO.name = 'nico';\r\n excelDTO.file = formData;\r\n\r\n $http.post('api/encuestas/create-from-excel', excelDTO).then(function (result) {\r\n deferred.resolve(result.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function addToCart(encuesta){\r\n var deferred = $q.defer();\r\n\r\n save(encuesta).then(function(response){\r\n $http.post('api/encuestas/addToCart', response).then(function (result) {\r\n deferred.resolve(result.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function removeFromCart (encuesta) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/encuestas/removeFromCart', encuesta).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function save(encuesta) {\r\n var deferred = $q.defer();\r\n\r\n if(!encuesta.Id){\r\n $http.post('api/encuestas', encuesta).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n } else{\r\n $http.put('api/encuestas', encuesta).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function summary() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/summary').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEncuestaResults (idEncuesta, aprobados, fechaDesde, fechaHasta) {\r\n var deferred = $q.defer();\r\n\r\n var pageData = {\r\n \"Size\" : 12,\r\n \"Number\" : 0\r\n };\r\n\r\n if(!aprobados)\r\n {\r\n aprobados = false;\r\n }\r\n\r\n if(!fechaDesde || !fechaHasta){\r\n $http.post('api/encuestas/results?aprobados=' + aprobados + '&encuestaId=' +\r\n idEncuesta + '&fechaDesde=null&fechaHasta=null', pageData).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n }else{\r\n $http.post('api/encuestas/results?aprobados=' + aprobados + '&encuestaId=' +\r\n idEncuesta + '&fechaDesde=' + fechaDesde.getTime() + '&fechaHasta=' + fechaHasta.getTime(), pageData).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEncuestadoresByEncuestaResults(page, idEncuesta, aprobados, fechaDesde, fechaHasta, nombre) {\r\n var deferred = $q.defer();\r\n\r\n var pageData = {\r\n \"Size\" : 12,\r\n \"Number\" : page,\r\n };\r\n\r\n if(!aprobados)\r\n {\r\n aprobados = false;\r\n }\r\n\r\n if(!fechaDesde || !fechaHasta){\r\n $http.post('api/encuestas/results/auditors?aprobados=' + aprobados + '&encuestaId=' +\r\n idEncuesta + '&fechaDesde=null&fechaHasta=null&nombre=' + nombre, pageData).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n }else{\r\n $http.post('api/encuestas/results/auditors?aprobados=' + aprobados + '&encuestaId=' +\r\n idEncuesta + '&fechaDesde=' + fechaDesde.getTime() \r\n + '&fechaHasta=' + fechaHasta.getTime() + '&nombre=' + nombre, pageData).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getResultsByEncuestadorId(encuestaId, encuestadorId, aprobados, fechaDesde, fechaHasta, numeroInstancia, timeZone) {\r\n var deferred = $q.defer();\r\n\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n\r\n $http.post('api/encuestas/results/encuesta/' + encuestaId \r\n + '/auditor/' + encuestadorId + '/approveOnly/' + aprobados \r\n + '?fechaDesde=' + fechaDesde + '&fechaHasta=' + fechaHasta + '&numeroInstancia=' + numeroInstancia\r\n + '&timeZone=' + timeZone).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n \r\n return deferred.promise;\r\n }\r\n\r\n function getResultEstadisticas(encuestaId, encuestadorId, aprobados, instancia, fechaDesde, fechaHasta) {\r\n var deferred = $q.defer();\r\n\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n\r\n $http.post('api/encuestas/results/estadisticas/encuesta/' + encuestaId \r\n + '/auditor/' + encuestadorId + '/approveOnly/' + aprobados\r\n + '?instancia=' + instancia\r\n + '&fechaDesde=' + fechaDesde + '&fechaHasta=' + fechaHasta).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n \r\n return deferred.promise;\r\n }\r\n\r\n\r\n function exportResultsToCSV(encuestaID, aprobados, fechaDesde, fechaHasta, encuestadorId, timeZone) {\r\n if(!aprobados)\r\n aprobados = false;\r\n\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n \r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/results/csv?encuestaId=' + encuestaID + '&aprobados=' + aprobados\r\n + '&fechaDesde=' + fechaDesde + '&fechaHasta=' + fechaHasta + '&encuestadorId=' + encuestadorId \r\n + '&timeZone=' + timeZone, '_blank', '').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function exportResultsToPDF(email, encuestaID, aprobados, fechaDesde, fechaHasta, encuestadorId, timeZone) {\r\n var deferred = $q.defer();\r\n\r\n if(!aprobados)\r\n aprobados = false;\r\n\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n\r\n $http.get(API_URL+ '/api/encuestas/results/pdf?email=' + email + '&encuestaId=' + encuestaID + '&aprobados=' + aprobados\r\n + '&fechaDesde=' + fechaDesde + '&fechaHasta=' + fechaHasta + '&encuestadorId=' + encuestadorId \r\n + '&timeZone=' + timeZone, '_blank', '')\r\n .then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function(error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getResultEstadisticasEfectividad(encuestaId, encuestadorId, instancia, fechaDesde, fechaHasta, approveOnly) {\r\n var deferred = $q.defer();\r\n\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n\r\n $http.post('api/encuestas/results/estadisticas/efectividad/encuesta/' + encuestaId\r\n + '/encuestador/' + encuestadorId\r\n + '?approveOnly=' + approveOnly\r\n + '&instancia=' + instancia\r\n + '&fechaDesde=' + fechaDesde\r\n + '&fechaHasta=' + fechaHasta).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getCriteriosAceptacion () {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/criteriosaceptacion').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getImage(contactoId, type) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/results/contacto/' + contactoId + '/type/' + type).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function sendMediaEmail(address, encuestaId, encuestadorId, fechaDesde, fechaHasta) {\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n \r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/results/zip?direccion=' + address + '&encuestaId=' + encuestaId + (fechaDesde ? (\"&fechaDesde=\" + fechaDesde) : \"\") + (fechaHasta ? (\"&fechaHasta=\" + fechaHasta) : \"\") + (encuestadorId ? (\"&encuestadorId=\" + encuestadorId) : \"\")).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function checkForFile(dictId) {\r\n var deferred = $q.defer();\r\n $http.get('api/encuestas/results/checkFile?dictId=' + dictId).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getLinkForFile(dictId, esCSV) {\r\n if(esCSV) {\r\n return API_URL + '/api/encuestas/results/downloadCSV?dictId=' + dictId\r\n }\r\n else {\r\n return API_URL + '/api/encuestas/results/downloadZip?dictId=' + dictId\r\n }\r\n }\r\n\r\n function buscarGeosTodos(encuestaId, fechaDesde, fechaHasta) {\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/results/buscarGeosTodos?encuestaId=' + encuestaId + \"&fechaDesde=\" + fechaDesde + \"&fechaHasta=\" + fechaHasta).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEncuestaBySitiowebId(sitiowebId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/results/getEncuestaBySitiowebId?encuestaId=' + sitiowebId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getMediaForCarousel(encuestaId, slides, offset, encuestadorId, fechaDesde, fechaHasta) {\r\n if (!offset) {\r\n offset = 0;\r\n }\r\n\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/results/getMediaForCarousel?encuestaId=' + encuestaId + '&numberOfSlides=' + slides + '&offset=' + offset + '&encuestadorId=' + encuestadorId + \"&fechaDesde=\" + fechaDesde + \"&fechaHasta=\" + fechaHasta).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function(error) {\r\n deferred.reject(error);\r\n })\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('EncuestasClienteController', EncuestasClienteController);\r\n\r\n EncuestasClienteController.$inject = ['encuestas', 'encuestasSummary', '$uibModal', '$state', 'EncuestasClienteService','user'];\r\n\r\n function EncuestasClienteController (encuestas, encuestasSummary, $uibModal, $state, EncuestasClienteService, user) {\r\n var vm = this;\r\n\r\n function init () {\r\n window.scrollTo(0, 0);\r\n\r\n if(user.Cliente){\r\n vm.displayOnly = user.Cliente.DisplayOnlyAuditedContacts;\r\n }else{\r\n vm.displayOnly = false;\r\n }\r\n vm.page = encuestas.Number;\r\n vm.totalPages = encuestas.TotalPages;\r\n vm.encuestas = encuestas.Content;\r\n vm.encuestasSummary = encuestasSummary;\r\n vm.dateHoy = new Date();\r\n vm.loadingTabla = false;\r\n vm.mostrandoBusquedas = false;\r\n\r\n angular.forEach(vm.encuestas, function(value, key) {\r\n if(value.Estado.Nombre === 'APROBADA' && value.FechaVigencia <= vm.dateHoy){\r\n value.Estado.Nombre = 'FINALIZADA';\r\n }\r\n });\r\n loadSummaryCharts(vm.encuestasSummary);\r\n }\r\n\r\n vm.changePage = function (page) {\r\n vm.loadingTabla = true;\r\n EncuestasClienteService.queryEncuestasClienteByPage(page).then(function (response) {\r\n vm.page = response.Number;\r\n vm.totalPages = response.TotalPages;\r\n vm.encuestas = response.Content;\r\n vm.loadingTabla = false;\r\n });\r\n };\r\n\r\n function loadSummaryCharts (encuestasSummary) {\r\n vm.doughnutChartOptions = {\r\n aspectRatio: 1,\r\n hover: {\r\n mode: null\r\n },\r\n tooltips: {\r\n enabled: false\r\n }\r\n };\r\n\r\n vm.doughnutChartColors = [\r\n '#5c8be6',\r\n '#d9e4eb'\r\n ];\r\n\r\n vm.activasChartData = [\r\n encuestasSummary.Activas,\r\n encuestasSummary.Total - encuestasSummary.Activas\r\n ];\r\n\r\n vm.vigentesChartData = [\r\n encuestasSummary.Vigentes,\r\n encuestasSummary.Total - encuestasSummary.Vigentes\r\n ];\r\n\r\n vm.finalizadasChartData = [\r\n encuestasSummary.Finalizadas,\r\n encuestasSummary.Total - encuestasSummary.Finalizadas\r\n ];\r\n\r\n vm.pendientesChartData = [\r\n encuestasSummary.Pendientes,\r\n encuestasSummary.Total - encuestasSummary.Pendientes\r\n ];\r\n }\r\n\r\n vm.removeEncuesta = function(encuesta) {\r\n $uibModal.open({\r\n templateUrl: 'app/components/encuestasCliente/encuestasCliente-delete.html',\r\n controller: 'EncuestasClienteDeleteController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n encuesta: function () {\r\n return encuesta;\r\n }\r\n }\r\n }).result.then(function (result) {\r\n $state.reload();\r\n });\r\n };\r\n\r\n vm.searchEncuesta = function(encuesta, page) {\r\n vm.encuestas = [];\r\n vm.loadingTabla = true;\r\n vm.mostrandoBusquedas = true;\r\n\r\n EncuestasClienteService.queryEncuestasClienteByName(encuesta, page).then(function (response) {\r\n vm.page = response.Number;\r\n vm.totalPages = response.TotalPages;\r\n vm.encuestas = response.Content;\r\n vm.loadingTabla = false;\r\n \r\n });\r\n }\r\n\r\n vm.resetBusqueda = function() {\r\n if(vm.mostrandoBusquedas) {\r\n vm.changePage(0);\r\n vm.mostrandoBusquedas = false;\r\n }\r\n }\r\n\r\n window.scrollTo(0, 0);\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('datosEncuestaCliente', {\r\n templateUrl: 'app/components/datosEncuestaCliente/datosEncuestaCliente.html',\r\n controller: 'DatosEncuestaClienteController',\r\n controllerAs: 'vm',\r\n bindings: {\r\n encuesta: '=',\r\n changeTab: '&',\r\n criterios: '<'\r\n }\r\n });\r\n\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('DatosEncuestaClienteController', DatosEncuestaClienteController);\r\n\r\n DatosEncuestaClienteController.$inject = ['$scope'];\r\n\r\n function DatosEncuestaClienteController ($scope) {\r\n var vm = this;\r\n vm.topPage = topPage;\r\n\r\n vm.encuesta.FechaInicio = new Date();\r\n vm.encuesta.FechaInicio.setDate(vm.encuesta.FechaInicio.getDate() + 2);\r\n vm.encuesta.FechaVigencia = new Date(vm.encuesta.FechaInicio);\r\n vm.encuesta.FechaVigencia.setDate(vm.encuesta.FechaVigencia.getDate() + 5);\r\n\r\n if(vm.encuesta.FechaInicio.getDay() == 6){\r\n vm.encuesta.FechaInicio.setDate(vm.encuesta.FechaInicio.getDate() + 2);\r\n }\r\n if(vm.encuesta.FechaInicio.getDay() == 0){\r\n vm.encuesta.FechaInicio.setDate(vm.encuesta.FechaInicio.getDate() + 1);\r\n }\r\n if(vm.encuesta.FechaVigencia.getDay() == 6){\r\n vm.encuesta.FechaVigencia.setDate(vm.encuesta.FechaVigencia.getDate() + 2);\r\n }\r\n if(vm.encuesta.FechaVigencia.getDay() == 0){\r\n vm.encuesta.FechaVigencia.setDate(vm.encuesta.FechaVigencia.getDate() + 1);\r\n }\r\n\r\n vm.minDate = new Date();\r\n vm.minDate.setDate(vm.minDate.getDate() + 2);\r\n\r\n vm.minDate2 = new Date();\r\n\r\n console.log(vm.criterios);\r\n\r\n $scope.$watch('vm.encuesta.FechaInicio', function(v) {\r\n vm.minDate2 = new Date(v);\r\n vm.minDate2.setDate(vm.minDate2.getDate() + 7);\r\n\r\n if (vm.encuesta.FechaVigencia < vm.minDate2)\r\n vm.encuesta.FechaVigencia = new Date(vm.minDate2);\r\n });\r\n\r\n vm.onlyWeekendsPredicate = function(date) {\r\n var day = date.getDay();\r\n return day != 0 && day != 6;\r\n };\r\n\r\n vm.contactTypes = [\r\n 'Auditor',\r\n 'Consumidor'\r\n ];\r\n }\r\n \r\n function topPage() {\r\n document.body.scrollTop = document.documentElement.scrollTop = 0;\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('dashboard', {\r\n parent: 'app',\r\n url: '/dashboard',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/dashboard/dashboard.html',\r\n controller: 'DashboardController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n encuestas: ['EncuestasClienteService', function (EncuestasClienteService) {\r\n return EncuestasClienteService.queryEncuestasCliente();\r\n }],\r\n encuestasSummary: ['EncuestasClienteService', function (EncuestasClienteService) {\r\n return EncuestasClienteService.summary();\r\n }],\r\n membership: ['MembresiaService', function (MembresiaService) {\r\n return MembresiaService.getUserMembership();\r\n }],\r\n contactosLibres: ['MembresiaService', function (MembresiaService) {\r\n return MembresiaService.getContactosLibres();\r\n }],\r\n nextMembership: ['MembresiaService', function (MembresiaService) {\r\n return MembresiaService.getNextMembership();\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('DashboardController', DashboardController);\r\n\r\n DashboardController.$inject = ['CarritoProvider', 'encuestas', 'membership', 'nextMembership', 'encuestasSummary', 'contactosLibres'];\r\n\r\n function DashboardController (CarritoProvider, encuestas, membership, nextMembership, encuestasSummary, contactosLibres) {\r\n var vm = this;\r\n var carritoSubscription;\r\n\r\n function init () {\r\n window.scrollTo(0, 0);\r\n\r\n vm.encuestas = encuestas.Content;\r\n vm.encuestasSummary = encuestasSummary;\r\n vm.userMembresia = membership;\r\n vm.nextMembresia = nextMembership;\r\n vm.contactosLibres = contactosLibres;\r\n vm.costoEncuesta = 0;\r\n vm.descripcionContactosLibres = \"Saldo Contactos (disponibles/total)\";\r\n\r\n carritoSubscription = CarritoProvider.getCarritoSubject().subscribe(function (value) {\r\n vm.pending = value.length;\r\n });\r\n\r\n loadSummaryCharts(vm.encuestasSummary);\r\n loadEncuestaChart(encuestas.Content);\r\n }\r\n\r\n function loadEncuestaChart(encuestas) {\r\n vm.labels = [];\r\n vm.data = [];\r\n vm.colors = [];\r\n\r\n angular.forEach(encuestas, function (encuesta) {\r\n if(encuesta.Estado.Nombre === 'APROBADA' || encuesta.Estado.Nombre === 'PENDIENTE_DE_APROBACION'){\r\n vm.labels.push(encuesta.Nombre);\r\n vm.data.push( (encuesta.Monto / encuesta.CantidadContactos).toFixed(2) );\r\n vm.colors.push('#5c8be6');\r\n }\r\n });\r\n }\r\n\r\n function loadSummaryCharts (encuestasSummary) {\r\n vm.doughnutChartOptions = {\r\n aspectRatio: 1,\r\n hover: {\r\n mode: null\r\n },\r\n tooltips: {\r\n enabled: false\r\n }\r\n };\r\n\r\n vm.doughnutChartColors = [\r\n '#5c8be6',\r\n '#d9e4eb'\r\n ];\r\n\r\n vm.activasChartData = [\r\n encuestasSummary.Activas,\r\n encuestasSummary.Total - encuestasSummary.Activas\r\n ];\r\n\r\n vm.pendientesChartData = [\r\n encuestasSummary.Pendientes,\r\n encuestasSummary.Total - encuestasSummary.Pendientes\r\n ];\r\n\r\n\r\n vm.vigentesChartData = [\r\n encuestasSummary.Vigentes,\r\n encuestasSummary.Total - encuestasSummary.Vigentes\r\n ];\r\n\r\n vm.finalizadasChartData = [\r\n encuestasSummary.Finalizadas,\r\n encuestasSummary.Total - encuestasSummary.Finalizadas\r\n ];\r\n }\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('CotizadorService', CotizadorService);\r\n\r\n CotizadorService.$inject = ['MembresiaService', 'CarritoService'];\r\n\r\n function CotizadorService(MembresiaService, CarritoService) {\r\n var userMembresia = null;\r\n var contactosLibres = 0;\r\n var preguntasLibres = 0;\r\n var accesoComunidad = 0;\r\n var bonificaciones = [[], []];\r\n var hasMembership = false;\r\n\r\n\r\n MembresiaService.getUserMembership().then(function (response) {\r\n userMembresia = response ? response : null;\r\n hasMembership = (userMembresia != null);\r\n preguntasLibres = hasMembership ? userMembresia.CantidadPreguntaEncuesta : 0;\r\n });\r\n\r\n MembresiaService.getContactosLibres().then(function (response) {\r\n contactosLibres = response;\r\n });\r\n\r\n CarritoService.getCotizadorVariable('ACCESO_COMUNIDAD').then(function (response) {\r\n accesoComunidad = hasMembership ? 0 : response.data.Valor;\r\n });\r\n\r\n CarritoService.queryCotizadorBonificacion().then(function (response) {\r\n bonificaciones = response.data;\r\n });\r\n\r\n return {\r\n getTotal: getTotal,\r\n getBonificacion: getBonificacion,\r\n getPrecioEncuesta: getPrecioEncuesta,\r\n reloadContactosLibres: reloadContactosLibres\r\n };\r\n\r\n function reloadContactosLibres() {\r\n MembresiaService.getContactosLibres().then(function (response) {\r\n contactosLibres = response;\r\n });\r\n\r\n MembresiaService.getUserMembership().then(function (response) {\r\n userMembresia = response ? response : null;\r\n hasMembership = (userMembresia != null);\r\n preguntasLibres = hasMembership ? userMembresia.CantidadPreguntaEncuesta : 0;\r\n });\r\n }\r\n\r\n function getPrecioPreguntas(encuesta, isFloating) {\r\n if(!isFloating){\r\n var exPreguntas = Math.max(encuesta.Preguntas.length - preguntasLibres, 0);\r\n }\r\n\r\n if(encuesta.Preguntas){\r\n var total = encuesta.Preguntas\r\n .map(function (pregunta) {\r\n if(pregunta.TipoPregunta){\r\n return pregunta.TipoPregunta.Precio;\r\n }else{\r\n return 0;\r\n }\r\n })\r\n .sort()\r\n .reverse()\r\n .slice(0, exPreguntas)\r\n .reduce(function (n, x) {\r\n return n+x;\r\n }, 0);\r\n\r\n return total;\r\n }\r\n else{\r\n return 0;\r\n }\r\n }\r\n\r\n function getPrecioEncuesta(encuesta, isFloating) {\r\n if(!isFloating){\r\n var exContactos = Math.max(encuesta.CantidadContactos - contactosLibres, 0);\r\n }else{\r\n var exContactos = encuesta.CantidadContactos;\r\n }\r\n\r\n var totalPreguntas = getPrecioPreguntas(encuesta, isFloating);\r\n\r\n encuesta.precioContacto = Math.max(250, totalPreguntas);\r\n\r\n if (hasMembership && !isFloating){\r\n encuesta.precioContacto *= (1 - userMembresia.DescuentoContacto / 100);\r\n }\r\n\r\n var total = exContactos * encuesta.precioContacto;\r\n\r\n if (totalPreguntas > 0 && exContactos == 0)\r\n total += totalPreguntas;\r\n\r\n return total;\r\n }\r\n\r\n function getBonificacion(total) {\r\n for (var i=0;i= bonificaciones[0][i].Valor)\r\n return bonificaciones[1][i].Valor;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n function getTotal(encuestas, hasMembership, isFloating) {\r\n var total = encuestas.reduce(function (n, encuesta) {\r\n return n + getPrecioEncuesta(encuesta, isFloating);\r\n }, 0);\r\n if(hasMembership)\r\n {\r\n accesoComunidad = 0;\r\n }\r\n return total * (1 - getBonificacion(total)) + accesoComunidad;\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('cotizador', {\r\n templateUrl: 'app/components/cotizador/cotizador.html',\r\n controller: 'CotizadorController',\r\n controllerAs: 'vm',\r\n bindings: {\r\n encuesta: '=',\r\n floatCotizador: '<'\r\n }\r\n });\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('CotizadorController', CotizadorController);\r\n\r\n CotizadorController.$inject = ['$scope', 'PreguntaEncuestaClienteService', 'MembresiaService',\r\n 'CarritoService', 'CotizadorService', '$timeout'];\r\n\r\n function CotizadorController ($scope, PreguntaEncuestaClienteService,\r\n MembresiaService, CarritoService, CotizadorService, $timeout) {\r\n var vm = this;\r\n\r\n function init() {\r\n vm.finalPrice = 0;\r\n vm.sliderDisabled = false;\r\n vm.accesoComunidad = 0;\r\n vm.totalPrice = 0;\r\n vm.costoContacto = 0;\r\n vm.contactos.precioUnitario = 250;\r\n\r\n vm.precioSimple = 0;\r\n vm.precioAudioVideo = 0;\r\n vm.precioImagen = 0;\r\n\r\n CarritoService.getCotizadorVariable('ACCESO_COMUNIDAD').then(function (response) {\r\n vm.accesoComunidad = vm.hasMembership ? 0 : response.data.Valor;\r\n });\r\n\r\n if(!vm.encuesta){\r\n vm.encuesta = {};\r\n vm.encuesta.Preguntas = [];\r\n }\r\n\r\n vm.encuesta.totalQuestions = {};\r\n vm.encuesta.totalQuestions.cantidad = 0;\r\n\r\n vm.encuesta.simpleQuestions = {\r\n cantidad: 0,\r\n precioUnitario: 10,\r\n options: {\r\n floor: 0,\r\n ceil: 30,\r\n showSelectionBar: true,\r\n selectionBarGradient: {\r\n from: '#b0b3d6',\r\n to: '#001b56'\r\n },\r\n onChange: function(){\r\n vm.calculatePrice();\r\n },\r\n },\r\n };\r\n\r\n vm.encuesta.audioVideoQuestions = {\r\n cantidad: 0,\r\n precioUnitario: 50,\r\n options: {\r\n floor: 0,\r\n ceil: 30,\r\n showSelectionBar: true,\r\n selectionBarGradient: {\r\n from: '#b0b3d6',\r\n to: '#001b56'\r\n },\r\n onChange: function(){\r\n vm.calculatePrice()\r\n },\r\n },\r\n };\r\n\r\n vm.encuesta.imageQuestions = {\r\n cantidad: 0,\r\n precioUnitario: 30,\r\n options: {\r\n floor: 0,\r\n ceil: 30,\r\n showSelectionBar: true,\r\n selectionBarGradient: {\r\n from: '#b0b3d6',\r\n to: '#001b56'\r\n },\r\n onChange: function(){\r\n vm.calculatePrice()\r\n },\r\n },\r\n };\r\n\r\n MembresiaService.getUserMembership().then(function(result){\r\n vm.hasMembership = result;\r\n if(!vm.hasMembership){\r\n vm.totalPrice = 3500;\r\n }\r\n });\r\n\r\n PreguntaEncuestaClienteService.queryQuestionsTypes().then(function(result){\r\n vm.questionsTypes = result;\r\n angular.forEach(vm.questionsTypes, function (type){\r\n if(type.Nombre === 'NUMERICO'){\r\n vm.precioSimple = type.Precio;\r\n }\r\n if(type.Nombre === 'AUDIO'){\r\n vm.precioAudioVideo = type.Precio;\r\n }\r\n if(type.Nombre === 'IMAGEN'){\r\n vm.precioImagen = type.Precio;\r\n }\r\n });\r\n });\r\n\r\n if(!vm.floatCotizador){\r\n vm.encuesta.audioVideoQuestions.options.readOnly = true;\r\n vm.encuesta.imageQuestions.options.readOnly = true;\r\n vm.encuesta.simpleQuestions.options.readOnly = true;\r\n }\r\n }\r\n\r\n $scope.$watch('vm.encuesta.CantidadContactos', function() {\r\n if(vm.encuesta.CantidadContactos){\r\n vm.contactos.cantidad = vm.encuesta.CantidadContactos;\r\n vm.calculatePrice();\r\n }\r\n });\r\n $scope.$watch('vm.contactos.cantidad', function() {\r\n vm.encuesta.CantidadContactos = vm.contactos.cantidad;\r\n vm.calculatePrice();\r\n });\r\n $scope.$watch('vm.encuesta.totalQuestions.cantidad', function() {\r\n vm.calculatePrice();\r\n });\r\n\r\n vm.contactos = {\r\n cantidad: 0,\r\n options: {\r\n showSelectionBar: true,\r\n ceil: 3000,\r\n selectionBarGradient: {\r\n from: '#b0b3d6',\r\n to: '#001b56'\r\n },\r\n onChange: function(){\r\n vm.calculatePrice()\r\n },\r\n showTicks: 500\r\n }\r\n };\r\n\r\n vm.contactTypes = [\r\n 'Auditor',\r\n 'Consumidor'\r\n ];\r\n\r\n //refresca el slider al modificar un input.\r\n vm.refreshSlider = function() {\r\n $scope.$broadcast('rzSliderForceRender');\r\n };\r\n\r\n //Calcula el precio para cada pregunta segun tipo y cantidad.\r\n vm.calculatePrice = function (){\r\n\r\n if(vm.floatCotizador){\r\n vm.encuesta.Preguntas = [];\r\n\r\n for(var i = 0; i < vm.encuesta.simpleQuestions.cantidad; i++){\r\n var pregunta = {\r\n TipoPregunta: vm.questionsTypes[0]\r\n };\r\n vm.encuesta.Preguntas.push(pregunta);\r\n };\r\n for(var i = 0; i < vm.encuesta.audioVideoQuestions.cantidad; i++){\r\n var pregunta = {\r\n TipoPregunta: vm.questionsTypes[8]\r\n };\r\n vm.encuesta.Preguntas.push(pregunta);\r\n };\r\n for(var i = 0; i < vm.encuesta.imageQuestions.cantidad; i++){\r\n var pregunta = {\r\n TipoPregunta: vm.questionsTypes[4]\r\n };\r\n vm.encuesta.Preguntas.push(pregunta);\r\n };\r\n }\r\n\r\n if(vm.encuesta.Preguntas){\r\n vm.totalPrice = vm.getTotalPrecio();\r\n vm.encuesta.Monto = vm.totalPrice;\r\n }\r\n\r\n vm.bonificado = vm.getPorcentajeBonificacion(vm.getTotal()) * 100;\r\n vm.costoContacto = vm.getTotalContactos() > 0 ? (vm.getTotalPrecio() - vm.accesoComunidad) / vm.getTotalContactos() : 0;\r\n\r\n if(vm.hasMembership){\r\n vm.accesoComunidad = 0;\r\n } else {\r\n vm.accesoComunidad = 3500;\r\n }\r\n vm.contactos.price = vm.contactos.precioUnitario * vm.contactos.cantidad;\r\n\r\n vm.encuesta.totalQuestions.cantidad = vm.encuesta.simpleQuestions.cantidad + vm.encuesta.audioVideoQuestions.cantidad + vm.encuesta.imageQuestions.cantidad;\r\n };\r\n\r\n vm.getContactosBonificados = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n return n + Math.min(encuesta.CantidadContactos, vm.cantidadContactos);\r\n }, 0);\r\n };\r\n\r\n vm.getContactosBonificadosTotal = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n return n + Math.min(encuesta.CantidadContactos, vm.cantidadContactos) * encuesta.precioContacto;\r\n }, 0);\r\n };\r\n\r\n vm.getPreguntasNormalesTotal = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n return n + Math.max(encuesta.Preguntas.length - vm.cantidadPreguntas, 0);\r\n }, 0);\r\n };\r\n\r\n vm.getTotalContactos = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n return n + encuesta.CantidadContactos;\r\n }, 0);\r\n };\r\n\r\n vm.getPrecioPreguntasNormalesTotal = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n var exPreguntas = Math.max(encuesta.Preguntas.length-vm.cantidadPreguntas, 0);\r\n var totalPreguntas = encuesta.Preguntas\r\n .map(function (pregunta) {\r\n return pregunta.TipoPregunta.Precio;\r\n })\r\n .sort()\r\n .reverse()\r\n .slice(0, exPreguntas)\r\n .reduce(function (n1, x) {\r\n return n1+x;\r\n }, 0);\r\n\r\n return n + totalPreguntas;\r\n }, 0);\r\n };\r\n\r\n vm.getSubtotal = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n return n + encuesta.CantidadContactos * encuesta.precioContacto;\r\n }, 0);\r\n };\r\n\r\n vm.getTotal = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n return n + CotizadorService.getPrecioEncuesta(encuesta);\r\n }, 0);\r\n };\r\n\r\n vm.getPorcentajeBonificacion = function (total) {\r\n return CotizadorService.getBonificacion(total);\r\n };\r\n\r\n vm.getTotalPrecio = function () {\r\n if(!vm.encuestas){\r\n vm.encuestas = [vm.encuesta];\r\n }\r\n return CotizadorService.getTotal(vm.encuestas, vm.hasMembership, vm.floatCotizador);\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('carritoEncuestaCliente', {\r\n templateUrl: 'app/components/carritoEncuestaCliente/carritoEncuestaCliente.html',\r\n controller: 'CarritoEncuestaClienteController',\r\n controllerAs: 'vm',\r\n bindings : {\r\n encuesta: '=',\r\n validacionGuardar: '=',\r\n validacionAgregar: '='\r\n }\r\n });\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('CarritoEncuestaClienteController', CarritoEncuestaClienteController);\r\n\r\n CarritoEncuestaClienteController.$inject = ['$rootScope', 'CarritoProvider',\r\n 'EncuestasClienteService', '$mdDialog', '$state'];\r\n\r\n function CarritoEncuestaClienteController ($rootScope, CarritoProvider, EncuestasClienteService,\r\n $mdDialog, $state, $stateParams) {\r\n var vm = this;\r\n vm.changeTab = changeTab;\r\n vm.saveAndAddToCart = saveAndAddToCart;\r\n vm.completa = completa;\r\n vm.save = save;\r\n vm.floatCotizador = false;\r\n vm.listaBoolean = [{ Valor: false}];\r\n vm.myVar = false;\r\n\r\n vm.faltaGuardar = \"Los datos de la encuesta son obligatorios para poder guardar\";\r\n vm.faltaAgregar = \"Es necesario que la Encuesta tenga al menos una pregunta, una ubicación definida y cantidad de contactos mayor a 0 para poder agregarla al carrito.\";\r\n\r\n function completa() {\r\n angular.forEach(vm.preguntas, function(pregunta, index){\r\n vm.listaBoolean[index] = false;\r\n });\r\n }\r\n\r\n function changeTab() {\r\n $('html, body').animate({scrollTop:0}, 'slow');\r\n $rootScope.changeTabSig();\r\n }\r\n\r\n vm.showAlertOnSave = function(ev) {\r\n // Appending dialog to document.body to cover sidenav in docs app\r\n var confirm = $mdDialog.confirm()\r\n .title('Encuesta guardada.')\r\n .textContent('La encuesta se ha guardado correctamente.')\r\n .ariaLabel('')\r\n .targetEvent(ev)\r\n .ok('Cerrar')\r\n .cancel('Ir a encuestas');\r\n\r\n $mdDialog.show(confirm).then(function() {\r\n }, function() {\r\n $state.go('encuestasCliente');\r\n });\r\n };\r\n\r\n vm.showAlertOnAddToCart = function(ev) {\r\n // Appending dialog to document.body to cover sidenav in docs app\r\n var confirm = $mdDialog.confirm()\r\n .title('Encuesta guardada.')\r\n .textContent('La encuesta se ha agregado al carrito correctamente.')\r\n .ariaLabel('')\r\n .targetEvent(ev)\r\n .ok('Ir al carrito')\r\n .cancel('Ir a encuestas');\r\n $mdDialog.show(confirm).then(function() {\r\n $state.go('carrito');\r\n }, function() {\r\n $state.go('encuestasCliente');\r\n });\r\n };\r\n\r\n function save($event){\r\n vm.isSaving = true;\r\n angular.forEach(vm.encuesta.Ubicaciones, function (ubicacion) {\r\n ubicacion.Latitud = ubicacion.Pos[0];\r\n ubicacion.Longitud = ubicacion.Pos[1];\r\n });\r\n\r\n var i = 0;\r\n angular.forEach(vm.encuesta.Preguntas, function(pregunta) {\r\n pregunta.Orden = i;\r\n if (pregunta.PreguntaPadre == 0 || vm.encuesta.Preguntas[i - 1].TipoPregunta.Nombre != 'SI/NO' || \r\n vm.encuesta.Preguntas[i - 1].TipoPregunta.Nombre != 'OPCION_MULTIPLE' || \r\n (vm.encuesta.Preguntas[i - 1].TipoPregunta.Nombre == 'OPCION_MULTIPLE' && pregunta.RequeridoOpcionMultiple == 0))\r\n pregunta.RequeridaPorPadre = null;\r\n ++i;\r\n if (pregunta.TipoPregunta.Nombre != 'NUMERICO' || !pregunta.Preventivo)\r\n pregunta.ControlPreventivo = null;\r\n });\r\n \r\n if(vm.encuesta.isDuplicated == true){\r\n vm.encuesta.Id = null;\r\n vm.encuesta.EncuestaSitioWebId = 0;\r\n }\r\n\r\n EncuestasClienteService.save(vm.encuesta).then(function (response) {\r\n vm.encuesta = response;\r\n vm.showAlertOnSave($event);\r\n });\r\n }\r\n\r\n function saveAndAddToCart($event) {\r\n angular.forEach(vm.encuesta.Ubicaciones, function(ubicacion){\r\n ubicacion.Latitud = ubicacion.Pos[0];\r\n ubicacion.Longitud = ubicacion.Pos[1];\r\n });\r\n\r\n for (var i=0;i -1) {\r\n carrito.splice(index, 1);\r\n carritoSubject.onNext(carrito);\r\n }\r\n fetchEncuestasCarrito();\r\n });\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('CarritoController', CarritoController);\r\n\r\n CarritoController.$inject = ['CarritoProvider', 'userMembresia', '$uibModal', 'encuestasCarrito', 'CarritoService',\r\n 'contactosLibres', 'preguntasLibres', 'accesoComunidad', 'bonificaciones', 'EncuestasClienteService',\r\n 'CotizadorService', 'membresiaCarrito', 'MembresiaService'];\r\n\r\n function CarritoController (CarritoProvider, userMembresia, $uibModal, encuestasCarrito, CarritoService,\r\n contactosLibres, preguntasLibres, accesoComunidad, bonificaciones, EncuestasClienteService,\r\n CotizadorService, membresiaCarrito, MembresiaService) {\r\n var vm = this;\r\n var carritoSubscription;\r\n vm.habilitadaCompra = habilitadaCompra;\r\n vm.descripcionContactos = \"Contactos bonificados / Contactos disponibles\";\r\n\r\n var accordion = document.getElementById('downloadTemplete');\r\n\r\n function init () {\r\n carritoSubscription = CarritoProvider.getCarritoSubject().subscribe(function(value){\r\n vm.encuestas = value;\r\n });\r\n\r\n CotizadorService.reloadContactosLibres();\r\n\r\n vm.processingPayment = false;\r\n\r\n vm.membresia = userMembresia;\r\n vm.membresiaCarrito = membresiaCarrito;\r\n\r\n vm.hasMembership = (vm.membresia != null);\r\n\r\n vm.recargo = vm.hasMembership ? 0 : accesoComunidad.data.Valor;\r\n vm.bonificaciones = bonificaciones.data;\r\n\r\n vm.cantidadContactos = contactosLibres;\r\n vm.cantidadPreguntas = preguntasLibres;\r\n }\r\n\r\n vm.removeEncuesta = function(encuesta) {\r\n $uibModal.open({\r\n templateUrl: 'app/components/carrito/carritoRemoveEncuesta-dialog.html',\r\n controller: 'CarritoRemoveEncuestaController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n encuesta: function () {\r\n return encuesta;\r\n }\r\n }\r\n });\r\n };\r\n\r\n // vm.comprarMembresia = function () {\r\n // $uibModal.open({\r\n // templateUrl: 'app/components/carrito/carritoCompra-dialog.html',\r\n // controller: 'CarritoCompraDialogController',\r\n // controllerAs: 'vm',\r\n // size: 'md',\r\n // resolve: {\r\n // encuestas: function () {\r\n // return vm.encuestas;\r\n // },\r\n // precioTotal: function () {\r\n // return vm.getTotalPrecio();\r\n // },\r\n // lastFactura: function () {\r\n // return CarritoService.getLastCompra();\r\n // },\r\n // membresia: function () {\r\n // return vm.membresiaCarrito;\r\n // }\r\n // }\r\n // }).closed.then(function () {\r\n // CotizadorService.reloadContactosLibres()\r\n // MembresiaService.getMembresiaCarrito().then(function (result) {\r\n // vm.membresiaCarrito = result;\r\n // });\r\n // });\r\n // };\r\n\r\n vm.processPurchase = function (precio) {\r\n for (var i=0;i= dateInicio)\r\n {\r\n encuesta.CantidadContactos = 0;\r\n return false;\r\n }\r\n if( encuesta.FechaVigencia === \"\" || vm.fechaVigenciaValida >= dateVigencia)\r\n {\r\n encuesta.CantidadContactos = 0;\r\n return false;\r\n }\r\n return true;\r\n }\r\n }\r\n window.scrollTo(0, 0);\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('CardFormController', CardFormController);\r\n\r\n CardFormController.$inject = ['$scope'];\r\n\r\n function CardFormController ($scope) {\r\n var vm = this;\r\n\r\n var visa = new RegExp(\"^4[0-9]{12}(?:[0-9]{3})?$\");\r\n var mastercard = new RegExp(\"^5[1-5][0-9]{14}$\");\r\n var amex = new RegExp(\"^3[47][0-9]{13}$\");\r\n\r\n $scope.$watch('vm.card.number', function (n) {\r\n if (n) {\r\n var cardNumber = n.replace(/\\D/g,'');\r\n\r\n if (cardNumber.length > 16) {\r\n cardNumber = cardNumber.substring(0, 16);\r\n }\r\n\r\n if (cardNumber.length == 16)\r\n vm.card.number = cardNumber.match(/.{1,4}/g).join(' ');\r\n if (cardNumber.length == 15)\r\n vm.card.number = cardNumber.substring(0, 4) + ' ' + cardNumber.substring(4, 10) + ' ' + cardNumber.substring(10, 15);\r\n\r\n vm.card.type = vm.cardBrand(vm.card.number);\r\n }\r\n });\r\n\r\n $scope.$watch('vm.card.expiredDate', function (d) {\r\n if (d) {\r\n var date = d.replace(/\\D/g,'');\r\n\r\n if (date.length > 4) {\r\n date = date.substring(0, 4);\r\n }\r\n\r\n vm.card.expiredDate = date.match(/.{1,2}/g).join('/');\r\n }\r\n });\r\n\r\n $scope.$watch('vm.card.CSV', function (c) {\r\n if (c) {\r\n var CSV = c.replace(/\\D/g,'');\r\n\r\n if (CSV.length > 4) {\r\n CSV = CSV.substring(0, 3);\r\n }\r\n\r\n vm.card.CSV = CSV;\r\n }\r\n });\r\n\r\n vm.isCardNumberValid = function(cardNumber) {\r\n if (cardNumber) {\r\n var cleanCardNumber = cardNumber.replace(/ /g, '');\r\n\r\n return visa.test(cleanCardNumber) || mastercard.test(cleanCardNumber) || amex.test(cleanCardNumber);\r\n }\r\n\r\n return false;\r\n };\r\n\r\n vm.cardBrand = function(cardNumber) {\r\n if (cardNumber) {\r\n var cleanCardNumber = cardNumber.replace(/ /g, '');\r\n\r\n if(visa.test(cleanCardNumber)) {\r\n return 'VISA';\r\n }\r\n\r\n if(mastercard.test(cleanCardNumber)) {\r\n return 'MASTERCARD';\r\n }\r\n\r\n if(amex.test(cleanCardNumber)) {\r\n return 'AMEX';\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('cardForm', {\r\n templateUrl: 'app/components/cardForm/cardForm.html',\r\n controller: 'CardFormController',\r\n controllerAs: 'vm',\r\n bindings: {\r\n card: '='\r\n }\r\n });\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n var jhiAlertError = {\r\n template: '
' +\r\n '
' +\r\n '
{{ alert.msg }}
' +\r\n '
' +\r\n '
',\r\n controller: jhiAlertErrorController\r\n };\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('jhiAlertError', jhiAlertError);\r\n\r\n jhiAlertErrorController.$inject = ['$scope', 'AlertService', '$rootScope'];\r\n\r\n function jhiAlertErrorController ($scope, AlertService, $rootScope) {\r\n var vm = this;\r\n\r\n vm.alerts = [];\r\n\r\n function addErrorAlert (message, key, data) {\r\n vm.alerts.push(\r\n AlertService.add(\r\n {\r\n type: 'danger',\r\n msg: message,\r\n timeout: 5000,\r\n toast: AlertService.isToast(),\r\n scoped: true\r\n },\r\n vm.alerts\r\n )\r\n );\r\n }\r\n\r\n var cleanHttpErrorListener = $rootScope.$on('smarteyesjhApp.httpError', function (event, httpResponse) {\r\n var i;\r\n event.stopPropagation();\r\n switch (httpResponse.status) {\r\n // connection refused, server not reachable\r\n case 0:\r\n addErrorAlert('Server not reachable','error.server.not.reachable');\r\n break;\r\n\r\n case 400:\r\n var headers = Object.keys(httpResponse.headers()).filter(function (header) {\r\n return header.indexOf('app-error', header.length - 'app-error'.length) !== -1 || header.indexOf('app-params', header.length - 'app-params'.length) !== -1;\r\n }).sort();\r\n var errorHeader = httpResponse.headers(headers[0]);\r\n var entityKey = httpResponse.headers(headers[1]);\r\n if (angular.isString(errorHeader)) {\r\n var entityName = entityKey;\r\n addErrorAlert(errorHeader, errorHeader, {entityName: entityName});\r\n } else if (httpResponse.data && httpResponse.data.fieldErrors) {\r\n for (i = 0; i < httpResponse.data.fieldErrors.length; i++) {\r\n var fieldError = httpResponse.data.fieldErrors[i];\r\n // convert 'something[14].other[4].id' to 'something[].other[].id' so translations can be written to it\r\n var convertedField = fieldError.field.replace(/\\[\\d*\\]/g, '[]');\r\n var fieldName = convertedField.charAt(0).toUpperCase() + convertedField.slice(1);\r\n addErrorAlert('Field ' + fieldName + ' cannot be empty', 'error.' + fieldError.message, {fieldName: fieldName});\r\n }\r\n } else if (httpResponse.data && httpResponse.data.message) {\r\n addErrorAlert(httpResponse.data.message, httpResponse.data.message, httpResponse.data);\r\n } else {\r\n addErrorAlert(httpResponse.data);\r\n }\r\n break;\r\n\r\n case 404:\r\n addErrorAlert('Not found','error.url.not.found');\r\n break;\r\n\r\n default:\r\n if (httpResponse.data && httpResponse.data.message) {\r\n addErrorAlert(httpResponse.data.message);\r\n } else {\r\n addErrorAlert(angular.toJson(httpResponse));\r\n }\r\n }\r\n });\r\n\r\n $scope.$on('$destroy', function () {\r\n if(angular.isDefined(cleanHttpErrorListener) && cleanHttpErrorListener !== null){\r\n cleanHttpErrorListener();\r\n vm.alerts = [];\r\n }\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .provider('AlertService', AlertService);\r\n\r\n function AlertService () {\r\n this.toast = false;\r\n /*jshint validthis: true */\r\n this.$get = getService;\r\n\r\n this.showAsToast = function(isToast) {\r\n this.toast = isToast;\r\n };\r\n\r\n getService.$inject = ['$timeout', '$sce'];\r\n\r\n function getService ($timeout, $sce) {\r\n var toast = this.toast,\r\n alertId = 0, // unique id for each alert. Starts from 0.\r\n alerts = [],\r\n timeout = 5000; // default timeout\r\n\r\n return {\r\n factory: factory,\r\n isToast: isToast,\r\n add: addAlert,\r\n closeAlert: closeAlert,\r\n closeAlertByIndex: closeAlertByIndex,\r\n clear: clear,\r\n get: get,\r\n success: success,\r\n error: error,\r\n info: info,\r\n warning : warning\r\n };\r\n\r\n function isToast() {\r\n return toast;\r\n }\r\n\r\n function clear() {\r\n alerts = [];\r\n }\r\n\r\n function get() {\r\n return alerts;\r\n }\r\n\r\n function success(msg, params, position) {\r\n return this.add({\r\n type: 'success',\r\n msg: msg,\r\n params: params,\r\n timeout: timeout,\r\n toast: toast,\r\n position: position\r\n });\r\n }\r\n\r\n function error(msg, params, position) {\r\n return this.add({\r\n type: 'danger',\r\n msg: msg,\r\n params: params,\r\n timeout: timeout,\r\n toast: toast,\r\n position: position\r\n });\r\n }\r\n\r\n function warning(msg, params, position) {\r\n return this.add({\r\n type: 'warning',\r\n msg: msg,\r\n params: params,\r\n timeout: timeout,\r\n toast: toast,\r\n position: position\r\n });\r\n }\r\n\r\n function info(msg, params, position) {\r\n return this.add({\r\n type: 'info',\r\n msg: msg,\r\n params: params,\r\n timeout: timeout,\r\n toast: toast,\r\n position: position\r\n });\r\n }\r\n\r\n function factory(alertOptions) {\r\n var alert = {\r\n type: alertOptions.type,\r\n msg: $sce.trustAsHtml(alertOptions.msg),\r\n id: alertOptions.alertId,\r\n timeout: alertOptions.timeout,\r\n toast: alertOptions.toast,\r\n position: alertOptions.position ? alertOptions.position : 'top right',\r\n scoped: alertOptions.scoped,\r\n close: function (alerts) {\r\n return closeAlert(this.id, alerts);\r\n }\r\n };\r\n if(!alert.scoped) {\r\n alerts.push(alert);\r\n }\r\n return alert;\r\n }\r\n\r\n function addAlert(alertOptions, extAlerts) {\r\n alertOptions.alertId = alertId++;\r\n var that = this;\r\n var alert = this.factory(alertOptions);\r\n if (alertOptions.timeout && alertOptions.timeout > 0) {\r\n $timeout(function () {\r\n that.closeAlert(alertOptions.alertId, extAlerts);\r\n }, alertOptions.timeout);\r\n }\r\n return alert;\r\n }\r\n\r\n function closeAlert(id, extAlerts) {\r\n var thisAlerts = extAlerts ? extAlerts : alerts;\r\n return closeAlertByIndex(thisAlerts.map(function(e) { return e.id; }).indexOf(id), thisAlerts);\r\n }\r\n\r\n function closeAlertByIndex(index, thisAlerts) {\r\n return thisAlerts.splice(index, 1);\r\n }\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n var jhiAlert = {\r\n template: '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
',\r\n controller: jhiAlertController\r\n };\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('jhiAlert', jhiAlert);\r\n\r\n jhiAlertController.$inject = ['$scope', 'AlertService'];\r\n\r\n function jhiAlertController($scope, AlertService) {\r\n var vm = this;\r\n\r\n vm.alerts = AlertService.get();\r\n $scope.$on('$destroy', function () {\r\n vm.alerts = [];\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('notificationInterceptor', notificationInterceptor);\r\n\r\n notificationInterceptor.$inject = ['$q', 'AlertService'];\r\n\r\n function notificationInterceptor ($q, AlertService) {\r\n var service = {\r\n response: response\r\n };\r\n\r\n return service;\r\n\r\n function response (response) {\r\n var headers = Object.keys(response.headers()).filter(function (header) {\r\n return header.indexOf('app-alert', header.length - 'app-alert'.length) !== -1 || header.indexOf('app-params', header.length - 'app-params'.length) !== -1;\r\n }).sort();\r\n var alertKey = response.headers(headers[0]);\r\n if (angular.isString(alertKey)) {\r\n AlertService.success(alertKey, { param : response.headers(headers[1])});\r\n }\r\n return response;\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('errorHandlerInterceptor', errorHandlerInterceptor);\r\n\r\n errorHandlerInterceptor.$inject = ['$q', '$rootScope'];\r\n\r\n function errorHandlerInterceptor ($q, $rootScope) {\r\n var service = {\r\n responseError: responseError\r\n };\r\n\r\n return service;\r\n\r\n function responseError (response) {\r\n if (!(response.status === 401 && (response.data === '' || (response.data.path && response.data.path.indexOf('/api/account') === 0 )))) {\r\n $rootScope.$emit('smarteyesjhApp.httpError', response);\r\n }\r\n return $q.reject(response);\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('authExpiredInterceptor', authExpiredInterceptor);\r\n\r\n authExpiredInterceptor.$inject = ['$rootScope', '$q', '$injector', '$localStorage', '$sessionStorage'];\r\n\r\n function authExpiredInterceptor($rootScope, $q, $injector, $localStorage, $sessionStorage) {\r\n var service = {\r\n responseError: responseError\r\n };\r\n\r\n return service;\r\n\r\n function responseError(response) {\r\n if (response.status === 401) {\r\n delete $localStorage.authenticationToken;\r\n delete $sessionStorage.authenticationToken;\r\n var Principal = $injector.get('Principal');\r\n if (Principal.isAuthenticated()) {\r\n var Auth = $injector.get('Auth');\r\n Auth.authorize(true);\r\n }\r\n }\r\n return $q.reject(response);\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('authInterceptor', authInterceptor);\r\n\r\n authInterceptor.$inject = ['$rootScope', '$q', '$location', '$localStorage', '$sessionStorage'];\r\n\r\n function authInterceptor ($rootScope, $q, $location, $localStorage, $sessionStorage) {\r\n var service = {\r\n request: request\r\n };\r\n\r\n return service;\r\n\r\n function request (config) {\r\n if (!config || !config.url || /^http/.test(config.url)) return config;\r\n\r\n /*jshint camelcase: false */\r\n config.headers = config.headers || {};\r\n var token = $localStorage.authenticationToken || $sessionStorage.authenticationToken;\r\n if (token) {\r\n config.headers.Authorization = 'Bearer ' + token;\r\n }\r\n return config;\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('apiInterceptor', apiInterceptor);\r\n\r\n apiInterceptor.$inject = ['API_URL'];\r\n\r\n function apiInterceptor (API_URL) {\r\n var service = {\r\n request: request\r\n };\r\n\r\n return service;\r\n\r\n function request (config) {\r\n if (config && config.url && (/^api/.test(config.url) || /^token/.test(config.url))) {\r\n config.url = API_URL + '/' + config.url;\r\n }\r\n\r\n return config;\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('stateHandler', stateHandler);\r\n\r\n stateHandler.$inject = ['$rootScope', '$state', '$sessionStorage', '$window',\r\n 'Auth', 'Principal', 'VERSION'];\r\n\r\n function stateHandler($rootScope, $state, $sessionStorage, $window,\r\n Auth, Principal, VERSION) {\r\n return {\r\n initialize: initialize\r\n };\r\n\r\n function initialize() {\r\n $rootScope.VERSION = VERSION;\r\n\r\n var stateChangeStart = $rootScope.$on('$stateChangeStart', function (event, toState, toStateParams, fromState) {\r\n $rootScope.toState = toState;\r\n $rootScope.toStateParams = toStateParams;\r\n $rootScope.fromState = fromState;\r\n\r\n // Redirect to a state with an external URL (http://stackoverflow.com/a/30221248/1098564)\r\n if (toState.external) {\r\n event.preventDefault();\r\n $window.open(toState.url, '_self');\r\n }\r\n\r\n if (Principal.isIdentityResolved()) {\r\n Auth.authorize();\r\n }\r\n\r\n });\r\n\r\n var stateChangeSuccess = $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {\r\n var titleKey = 'SmartEyes' ;\r\n\r\n // Set the page title key to the one configured in state or use default one\r\n if (toState.data.pageTitle) {\r\n titleKey = toState.data.pageTitle;\r\n }\r\n $window.document.title = titleKey;\r\n });\r\n\r\n $rootScope.$on('$destroy', function () {\r\n if(angular.isDefined(stateChangeStart) && stateChangeStart !== null){\r\n stateChangeStart();\r\n }\r\n if(angular.isDefined(stateChangeSuccess) && stateChangeSuccess !== null){\r\n stateChangeSuccess();\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(paginationConfig);\r\n\r\n paginationConfig.$inject = ['uibPaginationConfig', 'paginationConstants'];\r\n\r\n function paginationConfig(uibPaginationConfig, paginationConstants) {\r\n uibPaginationConfig.itemsPerPage = paginationConstants.itemsPerPage;\r\n uibPaginationConfig.maxSize = 5;\r\n uibPaginationConfig.boundaryLinks = true;\r\n uibPaginationConfig.firstText = '«';\r\n uibPaginationConfig.previousText = '‹';\r\n uibPaginationConfig.nextText = '›';\r\n uibPaginationConfig.lastText = '»';\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(pagerConfig);\r\n\r\n pagerConfig.$inject = ['uibPagerConfig', 'paginationConstants'];\r\n\r\n function pagerConfig(uibPagerConfig, paginationConstants) {\r\n uibPagerConfig.itemsPerPage = paginationConstants.itemsPerPage;\r\n uibPagerConfig.previousText = '«';\r\n uibPagerConfig.nextText = '»';\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(localStorageConfig);\r\n\r\n localStorageConfig.$inject = ['$localStorageProvider', '$sessionStorageProvider'];\r\n\r\n function localStorageConfig($localStorageProvider, $sessionStorageProvider) {\r\n $localStorageProvider.setKeyPrefix('jhi-');\r\n $sessionStorageProvider.setKeyPrefix('jhi-');\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(httpConfig);\r\n\r\n httpConfig.$inject = ['$urlRouterProvider', '$httpProvider', 'httpRequestInterceptorCacheBusterProvider', '$urlMatcherFactoryProvider'];\r\n\r\n function httpConfig($urlRouterProvider, $httpProvider, httpRequestInterceptorCacheBusterProvider, $urlMatcherFactoryProvider) {\r\n //Cache everything except rest api requests\r\n httpRequestInterceptorCacheBusterProvider.setMatchlist([/.*api.*/, /.*protected.*/], true);\r\n\r\n $urlRouterProvider.otherwise('/');\r\n\r\n $httpProvider.interceptors.push('errorHandlerInterceptor');\r\n $httpProvider.interceptors.push('authExpiredInterceptor');\r\n $httpProvider.interceptors.push('authInterceptor');\r\n $httpProvider.interceptors.push('apiInterceptor');\r\n $httpProvider.interceptors.push('notificationInterceptor');\r\n // jhipster-needle-angularjs-add-interceptor JHipster will add new application http interceptor here\r\n\r\n $urlMatcherFactoryProvider.type('boolean', {\r\n name : 'boolean',\r\n decode: function(val) { return val === true || val === 'true'; },\r\n encode: function(val) { return val ? 1 : 0; },\r\n equals: function(a, b) { return this.is(a) && a === b; },\r\n is: function(val) { return [true,false,0,1].indexOf(val) >= 0; },\r\n pattern: /bool|true|0|1/\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(compileServiceConfig);\r\n\r\n compileServiceConfig.$inject = ['$compileProvider','DEBUG_INFO_ENABLED'];\r\n\r\n function compileServiceConfig($compileProvider,DEBUG_INFO_ENABLED) {\r\n // disable debug data on prod profile to improve performance\r\n $compileProvider.debugInfoEnabled(DEBUG_INFO_ENABLED);\r\n\r\n /*\r\n If you wish to debug an application with this information\r\n then you should open up a debug console in the browser\r\n then call this method directly in this console:\r\n\r\n\t\tangular.reloadWithDebugInfo();\r\n\t\t*/\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(alertServiceConfig);\r\n\r\n alertServiceConfig.$inject = ['AlertServiceProvider'];\r\n\r\n function alertServiceConfig(AlertServiceProvider) {\r\n // set below to true to make alerts look like toast\r\n AlertServiceProvider.showAsToast(false);\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('app', {\r\n abstract: true,\r\n views: {\r\n 'navbar@': {\r\n templateUrl: 'app/layouts/navbar/navbar.html',\r\n controller: 'NavbarController',\r\n controllerAs: 'vm'\r\n },\r\n 'footer@': {\r\n templateUrl: 'app/layouts/footer/footer.html',\r\n controller: 'NavbarController',\r\n controllerAs: 'vm'\r\n },\r\n 'cotizadorFlotante@': {\r\n templateUrl: 'app/layouts/cotizadorFlotante/cotizadorFlotante.html',\r\n controller: 'CotizadorFlotanteController',\r\n controllerAs: 'vm'\r\n },\r\n 'whatsappLink@': {\r\n templateUrl: 'app/layouts/whatsappLink/whatsappLink.html',\r\n controller: 'WhatsappLinkController',\r\n controllerAs: 'vm'\r\n }\r\n },\r\n resolve: {\r\n authorize: ['Auth',\r\n function (Auth) {\r\n return Auth.authorize();\r\n }\r\n ]\r\n }\r\n });\r\n }\r\n})();\r\n","(function () {\n 'use strict';\n // DO NOT EDIT THIS FILE, EDIT THE GULP TASK NGCONSTANT SETTINGS INSTEAD WHICH GENERATES THIS FILE\n angular\n .module('smarteyesjhApp')\n .constant('VERSION', \"0.0.1-SNAPSHOT\")\n .constant('DEBUG_INFO_ENABLED', false)\n .constant('BUILD_TIMESTAMP', 1730377922096)\n .constant('API_URL', \"\")\n .constant('BACKOFFICE_API_URL', \"http://hcoffice.sytes.net:9001\")\n;\n})();\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UserManagementDialogController',UserManagementDialogController);\r\n\r\n UserManagementDialogController.$inject = ['$stateParams', '$uibModalInstance', 'entity', 'User'];\r\n\r\n function UserManagementDialogController ($stateParams, $uibModalInstance, entity, User) {\r\n var vm = this;\r\n\r\n vm.authorities = ['ROLE_USER', 'ROLE_ADMIN'];\r\n vm.clear = clear;\r\n vm.languages = null;\r\n vm.save = save;\r\n vm.user = entity;\r\n\r\n\r\n\r\n function clear () {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function onSaveSuccess (result) {\r\n vm.isSaving = false;\r\n $uibModalInstance.close(result);\r\n }\r\n\r\n function onSaveError () {\r\n vm.isSaving = false;\r\n }\r\n\r\n function save () {\r\n vm.isSaving = true;\r\n if (vm.user.id !== null) {\r\n User.update(vm.user, onSaveSuccess, onSaveError);\r\n } else {\r\n vm.user.langKey = 'en';\r\n User.save(vm.user, onSaveSuccess, onSaveError);\r\n }\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UserManagementDetailController', UserManagementDetailController);\r\n\r\n UserManagementDetailController.$inject = ['$stateParams', 'User'];\r\n\r\n function UserManagementDetailController($stateParams, User) {\r\n var vm = this;\r\n\r\n vm.load = load;\r\n vm.user = {};\r\n\r\n vm.load($stateParams.login);\r\n\r\n function load(login) {\r\n User.get({login: login}, function(result) {\r\n vm.user = result;\r\n });\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UserManagementDeleteController', UserManagementDeleteController);\r\n\r\n UserManagementDeleteController.$inject = ['$uibModalInstance', 'entity', 'User'];\r\n\r\n function UserManagementDeleteController ($uibModalInstance, entity, User) {\r\n var vm = this;\r\n\r\n vm.user = entity;\r\n vm.clear = clear;\r\n vm.confirmDelete = confirmDelete;\r\n\r\n function clear () {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function confirmDelete (login) {\r\n User.delete({login: login},\r\n function () {\r\n $uibModalInstance.close(true);\r\n });\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UserManagementAssignClienteDialogController',UserManagementAssignClienteDialogController);\r\n\r\n UserManagementAssignClienteDialogController.$inject = ['$stateParams', '$uibModalInstance', 'entity', 'User', 'paginationConstants', 'Cliente'];\r\n\r\n function UserManagementAssignClienteDialogController ($stateParams, $uibModalInstance, entity, User, paginationConstants, Cliente) {\r\n var vm = this;\r\n\r\n function init() {\r\n vm.user = entity;\r\n vm.page = 1;\r\n vm.itemsPerPage = paginationConstants.itemsPerPage;\r\n vm.loadAll();\r\n }\r\n\r\n vm.loadAll = function() {\r\n window.scrollTo(0, 0);\r\n\r\n Cliente.query({\r\n Number: vm.page - 1,\r\n TotalElements: vm.itemsPerPage\r\n }, onSuccess, onError);\r\n };\r\n\r\n function onSuccess (data) {\r\n vm.totalItems = data.TotalElements;\r\n vm.queryCount = vm.totalItems;\r\n vm.page = data.Number + 1;\r\n vm.clientes = data.Content;\r\n }\r\n\r\n function onError (error) {\r\n AlertService.error(error.data.message);\r\n }\r\n\r\n vm.clear = function () {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n function onSaveSuccess (result) {\r\n vm.isSaving = false;\r\n $uibModalInstance.close(result);\r\n }\r\n\r\n function onSaveError () {\r\n vm.isSaving = false;\r\n }\r\n\r\n vm.save = function () {\r\n vm.user.Cliente = vm.clientes.find(function (cliente) {\r\n return cliente.Id === parseInt(vm.user.Cliente.Id);\r\n });\r\n User.update({id:vm.user.Id},vm.user, onSaveSuccess, onSaveError);\r\n };\r\n\r\n init();\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('user-management', {\r\n parent: 'admin',\r\n url: '/user-management',\r\n data: {\r\n authorities: ['ROLE_ADMIN'],\r\n pageTitle: 'Users'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/user-management/user-management.html',\r\n controller: 'UserManagementController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n })\r\n .state('user-management.new', {\r\n url: '/new',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/user-management/user-management-dialog.html',\r\n controller: 'UserManagementDialogController',\r\n controllerAs: 'vm',\r\n backdrop: 'static',\r\n size: 'lg',\r\n resolve: {\r\n entity: function () {\r\n return {\r\n id: null, login: null, firstName: null, lastName: null, email: null,\r\n activated: true, langKey: null, createdBy: null, createdDate: null,\r\n lastModifiedBy: null, lastModifiedDate: null, resetDate: null,\r\n resetKey: null, authorities: null\r\n };\r\n }\r\n }\r\n }).result.then(function() {\r\n $state.go('user-management', null, { reload: true });\r\n }, function() {\r\n $state.go('user-management');\r\n });\r\n }]\r\n })\r\n .state('user-management.edit', {\r\n url: '/{login}/edit',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/user-management/user-management-dialog.html',\r\n controller: 'UserManagementDialogController',\r\n controllerAs: 'vm',\r\n backdrop: 'static',\r\n size: 'lg',\r\n resolve: {\r\n entity: ['User', function(User) {\r\n return User.get({login : $stateParams.login}).$promise;\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('user-management', null, { reload: true });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n })\r\n .state('user-management.assignCliente', {\r\n url: '/{id}/assignCliente',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/user-management/user-management-assign-cliente-dialog.html',\r\n controller: 'UserManagementAssignClienteDialogController',\r\n controllerAs: 'vm',\r\n backdrop: 'static',\r\n size: 'lg',\r\n resolve: {\r\n entity: ['User', function(User) {\r\n return User.get({id : $stateParams.id}).$promise;\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('user-management', null, { reload: true });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n })\r\n .state('user-management-detail', {\r\n parent: 'user-management',\r\n url: '/{login}',\r\n data: {\r\n authorities: ['ROLE_ADMIN'],\r\n pageTitle: 'smarteyesjh'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/user-management/user-management-detail.html',\r\n controller: 'UserManagementDetailController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n })\r\n .state('user-management.delete', {\r\n url: '/{login}/delete',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/user-management/user-management-delete-dialog.html',\r\n controller: 'UserManagementDeleteController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n entity: ['User', function(User) {\r\n return User.get({login : $stateParams.login}).$promise;\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('user-management', null, { reload: true });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UserManagementController', UserManagementController);\r\n\r\n UserManagementController.$inject = ['Principal', 'User', 'ParseLinks', 'AlertService', '$state', 'paginationConstants'];\r\n\r\n function UserManagementController(Principal, User, ParseLinks, AlertService, $state, paginationConstants) {\r\n var vm = this;\r\n\r\n function init () {\r\n vm.page = 1;\r\n vm.itemsPerPage = paginationConstants.itemsPerPage;\r\n vm.loadAll();\r\n }\r\n\r\n vm.loadAll = function () {\r\n var page ={};\r\n page.number = vm.page - 1;\r\n page.size = vm.itemsPerPage;\r\n\r\n User.query(page, onSuccess, onError);\r\n };\r\n\r\n function onSuccess(data) {\r\n vm.totalItems = data.TotalElements;\r\n vm.queryCount = vm.totalItems;\r\n vm.page = data.Number + 1;\r\n vm.users = data.Content;\r\n }\r\n\r\n function onError(error) {\r\n AlertService.error(error.data.message);\r\n }\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('RespuestasEditController', RespuestasEditController);\r\n\r\n RespuestasEditController.$inject = ['$uibModalInstance', 'nroInstancia', 'encuestaAccionId', 'RespuestasService'];\r\n\r\n function RespuestasEditController ($uibModalInstance, nroInstancia, encuestaAccionId, RespuestasService) {\r\n var vm = this;\r\n vm.loading = true;\r\n vm.min = 1;\r\n vm.max = 10;\r\n vm.multipleChoiceArray = [];\r\n\r\n function init () {\r\n RespuestasService.getRespuesta(encuestaAccionId, nroInstancia).then(function (respuesta) {\r\n vm.respuesta = respuesta.data;\r\n if (vm.respuesta.EncuestaAccion.AccionType == 5) {\r\n vm.respuesta.EncuestaAccion.MultipleChoice.forEach(function(element) {\r\n vm.multipleChoiceArray[element.Id] = false;\r\n });\r\n var respuestasMC = vm.respuesta.Valor.split(',');\r\n respuestasMC.forEach(function(element) {\r\n vm.multipleChoiceArray[parseInt(element)] = true;\r\n });\r\n }\r\n vm.loading = false;\r\n })\r\n }\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.save = function(respuesta) {\r\n if (respuesta.EncuestaAccion.AccionType == 5) {\r\n respuesta.Valor = \"\";\r\n respuesta.EncuestaAccion.MultipleChoice.forEach(function(element) {\r\n if(vm.multipleChoiceArray[element.Id]) {\r\n respuesta.Valor = respuesta.Valor + element.Id + \",\";\r\n }\r\n });\r\n respuesta.Valor = respuesta.Valor.substring(0, respuesta.Valor.length - 1);\r\n if (respuesta.Valor != \"\") {\r\n RespuestasService.save(respuesta).then(function () {\r\n $uibModalInstance.close(true);\r\n });\r\n }\r\n } else {\r\n RespuestasService.save(respuesta).then(function () {\r\n $uibModalInstance.close(true);\r\n });\r\n }\r\n };\r\n\r\n vm.change = function(Id) {\r\n if (vm.respuesta.EncuestaAccion.PermitirMultiples == false) {\r\n vm.respuesta.EncuestaAccion.MultipleChoice.forEach(function(element) {\r\n if(element.Id != Id) {\r\n vm.multipleChoiceArray[element.Id] = false;\r\n }\r\n });\r\n }\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('RespuestasDeleteController', RespuestasDeleteController);\r\n\r\n RespuestasDeleteController.$inject = ['$uibModalInstance', 'respuesta', 'RespuestasService'];\r\n\r\n function RespuestasDeleteController ($uibModalInstance, respuesta, RespuestasService) {\r\n var vm = this;\r\n\r\n function init () {\r\n vm.respuesta = respuesta;\r\n }\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.confirmDelete = function(respuesta) {\r\n RespuestasService.deleteRespuesta({encuestaAccionid: respuesta.EncuestaAccionId, nroInstancia: respuesta.Instancia},\r\n function () {\r\n $uibModalInstance.close(true);\r\n });\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('respuestas', {\r\n parent: 'app',\r\n url: '/respuestas',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/respuestas/respuestas.html',\r\n controller: 'RespuestasController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('RespuestasService', RespuestasService);\r\n\r\n RespuestasService.$inject = ['$q', '$http', 'API_URL', '$window'];\r\n\r\n function RespuestasService ($q, $http, API_URL, $window) {\r\n return {\r\n get: get,\r\n save: save,\r\n deleteRespuesta: deleteRespuesta,\r\n getRespuesta: getRespuesta\r\n };\r\n\r\n function deleteRespuesta (datos) {\r\n var deferred = $q.defer();\r\n $http.delete('api/respuestas/delete?nroInstancia=' + datos.nroInstancia + \"&encuestaAccionId=\" + datos.encuestaAccionid).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getRespuesta (encuestaAccionId, nroInstancia) {\r\n var deferred = $q.defer();\r\n $http.get('api/respuestas/getByEncuestaAccionAndNroInstancia?nroInstancia=' + nroInstancia + \"&encuestaAccionId=\" + encuestaAccionId).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function save(respuesta) {\r\n var deferred = $q.defer();\r\n \r\n $http.post('api/respuestas/save', respuesta).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function get(page, idEncuesta, fechaDesde, fechaHasta, nroInstancia) {\r\n var deferred = $q.defer();\r\n\r\n var pageData = {\r\n \"Size\" : 20,\r\n \"Number\" : page,\r\n };\r\n \r\n $http.post('api/respuestas/get?encuestaId=' +\r\n idEncuesta + '&fechaDesde=' + (!fechaDesde ? 'null' : fechaDesde.getTime()) \r\n + '&fechaHasta=' + (!fechaHasta ? 'null' : fechaHasta.getTime()) \r\n + '&nroInstancia=' + (nroInstancia ? nroInstancia.toString() : null), pageData).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('RespuestasController', RespuestasController);\r\n\r\n RespuestasController.$inject = ['$uibModal', '$state', 'RespuestasService'];\r\n\r\n function RespuestasController ($uibModal, $state, RespuestasService) {\r\n var vm = this;\r\n\r\n vm.respuestas = [];\r\n vm.fechaDesde = null;\r\n vm.fechaHasta = null;\r\n vm.nroInstancia = null;\r\n vm.encuestaId = null;\r\n vm.totalPages = 0;\r\n vm.page = 0;\r\n vm.loadingTabla=false;\r\n\r\n function init () \r\n {\r\n }\r\n\r\n vm.getRespuestas = function(page) {\r\n vm.dataIsReady = false;\r\n vm.loadingTabla=true;\r\n\r\n RespuestasService.get(page, vm.encuestaId, vm.fechaDesde, vm.fechaHasta, vm.nroInstancia)\r\n .then(function(result) {\r\n \r\n vm.totalPages = result.data.TotalPages;\r\n \r\n if(result.data.Content)\r\n vm.respuestas = result.data.Content;\r\n vm.dataIsReady = true;\r\n vm.loadingTabla=false;\r\n });\r\n };\r\n\r\n vm.removeRespuesta = function(respuesta) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/respuestas/respuestas-delete-dialog.html',\r\n controller: 'RespuestasDeleteController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n respuesta: function () {\r\n return respuesta;\r\n }\r\n }\r\n }).result.then(function (result) {\r\n vm.getRespuestas(vm.page);\r\n });\r\n };\r\n\r\n vm.editRespuesta = function(respuesta) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/respuestas/respuestas-edit-dialog.html',\r\n controller: 'RespuestasEditController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n encuestaAccionId: function() { return respuesta.EncuestaAccionId; },\r\n nroInstancia: function() { return respuesta.Instancia; }\r\n }\r\n }).result.then(function (result) {\r\n vm.getRespuestas(vm.page);\r\n });\r\n };\r\n\r\n vm.changePage = function (page) {\r\n vm.page = page;\r\n vm.getRespuestas(page);\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('jhi-metrics', {\r\n parent: 'admin',\r\n url: '/metrics',\r\n data: {\r\n authorities: ['ROLE_ADMIN'],\r\n pageTitle: 'Application Metrics'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/metrics/metrics.html',\r\n controller: 'JhiMetricsMonitoringController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('JhiMetricsService', JhiMetricsService);\r\n\r\n JhiMetricsService.$inject = ['$rootScope', '$http'];\r\n\r\n function JhiMetricsService ($rootScope, $http) {\r\n var service = {\r\n getMetrics: getMetrics,\r\n threadDump: threadDump\r\n };\r\n\r\n return service;\r\n\r\n function getMetrics () {\r\n return $http.get('management/metrics').then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function threadDump () {\r\n return $http.get('management/dump').then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('JhiMetricsMonitoringModalController', JhiMetricsMonitoringModalController);\r\n\r\n JhiMetricsMonitoringModalController.$inject = ['$uibModalInstance', 'threadDump'];\r\n\r\n function JhiMetricsMonitoringModalController ($uibModalInstance, threadDump) {\r\n var vm = this;\r\n\r\n vm.cancel = cancel;\r\n vm.getLabelClass = getLabelClass;\r\n vm.threadDump = threadDump;\r\n vm.threadDumpAll = 0;\r\n vm.threadDumpBlocked = 0;\r\n vm.threadDumpRunnable = 0;\r\n vm.threadDumpTimedWaiting = 0;\r\n vm.threadDumpWaiting = 0;\r\n\r\n angular.forEach(threadDump, function(value) {\r\n if (value.threadState === 'RUNNABLE') {\r\n vm.threadDumpRunnable += 1;\r\n } else if (value.threadState === 'WAITING') {\r\n vm.threadDumpWaiting += 1;\r\n } else if (value.threadState === 'TIMED_WAITING') {\r\n vm.threadDumpTimedWaiting += 1;\r\n } else if (value.threadState === 'BLOCKED') {\r\n vm.threadDumpBlocked += 1;\r\n }\r\n });\r\n\r\n vm.threadDumpAll = vm.threadDumpRunnable + vm.threadDumpWaiting +\r\n vm.threadDumpTimedWaiting + vm.threadDumpBlocked;\r\n\r\n function cancel () {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function getLabelClass (threadState) {\r\n if (threadState === 'RUNNABLE') {\r\n return 'label-success';\r\n } else if (threadState === 'WAITING') {\r\n return 'label-info';\r\n } else if (threadState === 'TIMED_WAITING') {\r\n return 'label-warning';\r\n } else if (threadState === 'BLOCKED') {\r\n return 'label-danger';\r\n }\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('JhiMetricsMonitoringController', JhiMetricsMonitoringController);\r\n\r\n JhiMetricsMonitoringController.$inject = ['$scope','JhiMetricsService', '$uibModal'];\r\n\r\n function JhiMetricsMonitoringController ($scope, JhiMetricsService, $uibModal) {\r\n var vm = this;\r\n\r\n vm.metrics = {};\r\n vm.refresh = refresh;\r\n vm.refreshThreadDumpData = refreshThreadDumpData;\r\n vm.servicesStats = {};\r\n vm.updatingMetrics = true;\r\n\r\n vm.refresh();\r\n\r\n $scope.$watch('vm.metrics', function (newValue) {\r\n vm.servicesStats = {};\r\n angular.forEach(newValue.timers, function (value, key) {\r\n if (key.includes('web.rest') || key.includes('service')) {\r\n vm.servicesStats[key] = value;\r\n }\r\n });\r\n\r\n });\r\n\r\n function refresh () {\r\n vm.updatingMetrics = true;\r\n JhiMetricsService.getMetrics().then(function (promise) {\r\n vm.metrics = promise;\r\n vm.updatingMetrics = false;\r\n }, function (promise) {\r\n vm.metrics = promise.data;\r\n vm.updatingMetrics = false;\r\n });\r\n }\r\n\r\n function refreshThreadDumpData () {\r\n JhiMetricsService.threadDump().then(function(data) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/metrics/metrics.modal.html',\r\n controller: 'JhiMetricsMonitoringModalController',\r\n controllerAs: 'vm',\r\n size: 'lg',\r\n resolve: {\r\n threadDump: function() {\r\n return data;\r\n }\r\n\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('AdminMembresiaEditMembershipController', AdminMembresiaEditMembershipController);\r\n\r\n AdminMembresiaEditMembershipController.$inject = ['membership', 'items', '$uibModalInstance'];\r\n\r\n function AdminMembresiaEditMembershipController(membership, items, $uibModalInstance) {\r\n var vm = this;\r\n\r\n function init () {\r\n vm.membership = Object.assign({}, membership);\r\n vm.selected = Object.assign({}, vm.membership.items);\r\n\r\n vm.items = items;\r\n }\r\n\r\n vm.select = function (item) {\r\n vm.selected[item.Nombre] = !vm.selected[item.Nombre];\r\n };\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.save = function() {\r\n vm.membership.Items = [];\r\n\r\n for (var i=0;i maxValue)\r\n maxValue = x[x.length - 1].ValorSKU;\r\n }\r\n });\r\n\r\n if ((minValue % 10) > 5)\r\n minValue = minValue + 5 - (minValue % 10);\r\n else\r\n minValue = minValue - (minValue % 10)\r\n if ((maxValue % 10) > 5)\r\n maxValue = maxValue + 5 - (maxValue % 10);\r\n else\r\n maxValue = maxValue - (maxValue % 10);\r\n for (var minValueAux = minValue; minValueAux <= maxValue; minValueAux += 5)\r\n vm.barChartLabels.push(minValueAux);\r\n\r\n vm.valoresSKUList = data;\r\n var pos = 0;\r\n vm.valoresSKUList.forEach(function(valoresSKU) {\r\n if (valoresSKU.length != 0) {\r\n vm.barChartSeries.push(\"\");\r\n vm.barChartData.push([]);\r\n vm.barChartColors.push(vm.colors[pos]);\r\n vm.encuestaDataList.push({ Data: null, Media: null, Moda: null, Sd: null, Max: null, Min: null });\r\n var encuestaData = vm.encuestaDataList[pos];\r\n vm.getEncuestaData(pos);\r\n\r\n var valorActual = valoresSKU[0].ValorSKU;\r\n var cantidadActual = 0;\r\n var valorAux;\r\n var cantidadAux = 0;\r\n valoresSKU.forEach(function(x) {\r\n if (x.ValorSKU == valorActual) {\r\n cantidadActual++;\r\n } else if (x.ValorSKU == valorAux) {\r\n cantidadAux++;\r\n } else {\r\n if (cantidadAux > cantidadActual) {\r\n valorActual = valorAux;\r\n cantidadActual = cantidadAux;\r\n }\r\n valorAux = x.ValorSKU;\r\n cantidadAux = 0;\r\n }\r\n });\r\n encuestaData.Media = valoresSKU[Math.round(valoresSKU.length / 2)].ValorSKU;\r\n\r\n var sum = 0;\r\n valoresSKU.forEach(function(x) {\r\n sum += Math.pow(x.ValorSKU - encuestaData.Media, 2);\r\n });\r\n\r\n encuestaData.Moda = valorActual;\r\n encuestaData.Min = valoresSKU[0].ValorSKU;\r\n encuestaData.Max = valoresSKU[valoresSKU.length - 1].ValorSKU;\r\n encuestaData.Sd = Math.round(Math.sqrt(sum / valoresSKU.length), 2);\r\n \r\n for (minValueAux = minValue; minValueAux <= maxValue; minValueAux+=5)\r\n vm.barChartData[pos].push(0);\r\n\r\n valoresSKU.forEach(function(x) {\r\n var elemPos = Math.floor((x.ValorSKU - minValue) / 5);\r\n vm.barChartData[pos][elemPos]++;\r\n });\r\n }\r\n pos++;\r\n });\r\n });\r\n };\r\n\r\n vm.updateByProyecto = function(index) {\r\n updateEncuestas(index);\r\n updateCanales(index);\r\n updateEstados(index);\r\n updateSKUs(index);\r\n }\r\n\r\n function updateEncuestas(index) {\r\n vm.controlInputFiltersList[index].Encuestas = [];\r\n vm.controlInputFiltersList[index].Encuestadores = [];\r\n vm.controlInputList[index].EncuestaId = 0;\r\n vm.controlInputList[index].Encuestadores = [];\r\n ControlInputsService.getEncuestasByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Encuestas = response;\r\n });\r\n }\r\n\r\n function updateCanales(index) {\r\n vm.controlInputFiltersList[index].Canales = [];\r\n vm.controlInputList[index].Canal = null;\r\n ControlInputsService.getCanalesByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Canales = response;\r\n });\r\n }\r\n\r\n function updateEstados(index) {\r\n vm.controlInputFiltersList[index].Estados = [];\r\n vm.controlInputFiltersList[index].Municipios = [];\r\n vm.controlInputList[index].Estado = null;\r\n vm.controlInputList[index].Municipio = null;\r\n ControlInputsService.getEstadosByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Estados = response;\r\n });\r\n }\r\n\r\n function updateSKUs(index) {\r\n vm.controlInputFiltersList[index].SKUs = [];\r\n ControlInputsService.getSKUsByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].SKUs = response;\r\n var skusAux = [];\r\n vm.controlInputList[index].SKUs.forEach(function(x) {\r\n vm.controlInputFiltersList[index].SKUs.forEach(function(y) {\r\n if (y.SKU == x)\r\n skusAux.push(x);\r\n });\r\n });\r\n vm.controlInputList[index].SKUs = skusAux;\r\n });\r\n }\r\n\r\n vm.updateMunicipios = function(index) {\r\n vm.controlInputFiltersList[index].Municipios = [];\r\n vm.controlInputList[index].Municipio = null;\r\n ControlInputsService.getMunicipiosByProyectoAndEstado(vm.controlInputList[index].ProyectoId, vm.controlInputList[index].Estado).then(function (response) {\r\n vm.controlInputFiltersList[index].Municipios = response;\r\n });\r\n }\r\n\r\n vm.updateEncuestadores = function (index) {\r\n vm.controlInputFiltersList[index].Encuestadores = [];\r\n ControlInputsService.getEncuestadoresByEncuesta(vm.controlInputList[index].EncuestaId).then(function (response) {\r\n vm.controlInputFiltersList[index].Encuestadores = response;\r\n var encuestadoresAux = [];\r\n vm.controlInputList[index].Encuestadores.forEach(function(x) {\r\n vm.controlInputFiltersList[index].Encuestadores.forEach(function(y) {\r\n if (y.Id == x)\r\n encuestadoresAux.push(x);\r\n });\r\n });\r\n vm.controlInputList[index].Encuestadores = encuestadoresAux;\r\n });\r\n }\r\n\r\n vm.changeTab = function(route) {\r\n $state.go(route, {controlInputList: vm.controlInputList, fechaDesde: vm.fechaDesde, fechaHasta: vm.fechaHasta}, {reload: true});\r\n }\r\n\r\n vm.getEncuestaData = function (index) {\r\n ControlInputsService.getEncuestaDataByEncuesta(vm.controlInputList[index].ProyectoId, vm.controlInputList[index].EncuestaId).then(function (response) {\r\n vm.encuestaDataList[index].Data = response;\r\n });\r\n }\r\n\r\n vm.exportToCSV = function(encuestador) {\r\n vm.controlInputList.forEach(function(controlInput) {\r\n controlInput.FechaDesde = vm.fechaDesde;\r\n controlInput.FechaHasta = vm.fechaHasta;\r\n });\r\n\r\n ControlInputsService.exportValoresSKUToCSV(vm.controlInputList.filter(function(x) {return x.ProyectoId != 0 && x.SKUs.length != 0;})).then(function (result) {\r\n let p = $interval(vm.checkearZip, 5000, 0, true, result);\r\n let fileName = 'ValoresSKU';\r\n fileName += '_' + vm.fechaDesde + '_' + vm.fechaHasta;\r\n vm.zipsEnProgreso.push({dictId: result, nombre: fileName, check: p, status: 'Comenzando', link: '', csv: true});\r\n });\r\n }\r\n\r\n vm.checkearZip = function(dictId) {\r\n EncuestasClienteService.checkForFile(dictId).then(function(result) {\r\n let item = vm.zipsEnProgreso.find(function(x) {return x.dictId === dictId;});\r\n switch (result) {\r\n case 'Empty':\r\n item.status = 'Vacio';\r\n break;\r\n case 'Running':\r\n item.status = 'Procesando';\r\n break;\r\n case 'RanToCompletion':\r\n item.status = 'Completado';\r\n break;\r\n default:\r\n item.status = 'Error';\r\n break;\r\n }\r\n $scope.$evalAsync();\r\n if(result === 'RanToCompletion' || result === 'Faulted' || result == 'Canceled' || result === 'Empty') {\r\n $interval.cancel(item.check);\r\n item.link = result === 'RanToCompletion' ? EncuestasClienteService.getLinkForFile(item.dictId, item.csv) : '';\r\n }\r\n })\r\n }\r\n\r\n vm.descargarOReintentar = function(item) {\r\n if (item.status === 'Completado' || item.status === 'Vacio') {\r\n vm.quitarDeLista(item);\r\n }\r\n }\r\n\r\n vm.quitarDeLista = function(item) {\r\n let index = vm.zipsEnProgreso.indexOf(item);\r\n if(index !== -1) { \r\n vm.zipsEnProgreso.splice(index, 1);\r\n if (vm.zipsEnProgreso.length == 0) {\r\n vm.progressCheckAbierto = false;\r\n }\r\n }\r\n }\r\n\r\n init();\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('tiempoEjecucionUsuario', {\r\n parent: 'app',\r\n url: '/admin/tiempo-ejecucion-usuario',\r\n params: {\r\n controlInputList: null,\r\n fechaDesde: null, \r\n fechaHasta: null\r\n },\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/controlInputs/tiempoEjecucionUsuario/tiempoEjecucionUsuario.html',\r\n controller: 'TiempoEjecucionUsuarioController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n controlInputFilters: ['ControlInputsService', function (ControlInputsService) {\r\n return ControlInputsService.getControlInputFilters();\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('TiempoEjecucionUsuarioController', TiempoEjecucionUsuarioController);\r\n\r\n TiempoEjecucionUsuarioController.$inject = ['controlInputFilters', '$state', '$stateParams', '$interval', '$scope', 'ControlInputsService', 'EncuestasClienteService'];\r\n\r\n function TiempoEjecucionUsuarioController (controlInputFilters, $state, $stateParams, $interval, $scope, ControlInputsService, EncuestasClienteService) {\r\n var vm = this;\r\n\r\n vm.barChartData = [];\r\n vm.barChartLabels = [];\r\n vm.barChartSeries = [];\r\n vm.barChartColors = [];\r\n\r\n vm.colors = [{\r\n // blue\r\n backgroundColor: 'rgba(93,139,230,1)',\r\n borderColor: 'rgba(93,139,230,1)',\r\n pointBackgroundColor: 'rgba(93,139,230,1)',\r\n pointBorderColor: '#fff',\r\n pointHoverBackgroundColor: '#fff',\r\n pointHoverBorderColor: 'rgba(42,80,156,0.8)'\r\n }, {\r\n // orange\r\n backgroundColor: 'rgba(255,140,0,1)',\r\n borderColor: 'rgba(255,140,0,1)',\r\n pointBackgroundColor: 'rgba(255,140,0,1)',\r\n pointBorderColor: '#fff',\r\n pointHoverBackgroundColor: '#fff',\r\n pointHoverBorderColor: 'rgba(42,80,156,0.8)'\r\n }];\r\n\r\n vm.barChartOptions = {\r\n scales: {\r\n xAxes: [{\r\n scaleLabel: {\r\n display: true,\r\n fontSize: 14,\r\n labelString: 'Tiempo Encuesta'\r\n }\r\n }],\r\n yAxes: [{\r\n scaleLabel: {\r\n display: true,\r\n fontSize: 14,\r\n labelString: 'Cantidad Instancias'\r\n }\r\n }],\r\n y: {\r\n beginAtZero: false\r\n }\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: function(tooltipItem, data) {\r\n var minutos = data.labels[tooltipItem.index].split(\":\")[0];\r\n var segundos = parseInt(data.labels[tooltipItem.index].split(\":\")[1]) + parseInt(minutos * 60);\r\n var cantidadRespuestas = 0;\r\n var sumaRespuestas = 0;\r\n vm.tiempoEjecucionList[tooltipItem.datasetIndex].filter(function(x) {\r\n if (x.TiempoEjecucion >= segundos && x.TiempoEjecucion < (segundos + vm.sum)) {\r\n cantidadRespuestas++;\r\n sumaRespuestas+=x.CantidadRespuestas;\r\n }\r\n });\r\n return tooltipItem.value + (cantidadRespuestas != 0 ? ' - #' + Math.round(sumaRespuestas / cantidadRespuestas, 2) : \"\");\r\n }\r\n }\r\n }\r\n };\r\n\r\n vm.maxDate = null;\r\n\r\n vm.minDate = null;\r\n\r\n vm.tiempoEjecucionList = [];\r\n\r\n vm.encuestaDataList = [];\r\n\r\n vm.sum = 0;\r\n\r\n vm.fechaDesde = null;\r\n vm.fechaHasta = null;\r\n\r\n vm.controlInputFiltersList = [];\r\n\r\n vm.controlInputList = [];\r\n\r\n vm.cantidadFiltros = 2;\r\n\r\n vm.progressCheckAbierto = false;\r\n\r\n vm.zipsEnProgreso = [];\r\n vm.path = '';\r\n\r\n function init () {\r\n for (let i = 0; i < vm.cantidadFiltros; ++i) {\r\n vm.controlInputFiltersList.push(Object.create(controlInputFilters));\r\n vm.controlInputList.push({ ProyectoId: 0, EncuestaId: 0, Canal: null, Encuestadores: [], Estado: null, Municipio: null });\r\n }\r\n\r\n var pos = 0;\r\n if ($stateParams.controlInputList != null && $stateParams.controlInputList.length <= vm.cantidadFiltros) {\r\n $stateParams.controlInputList.forEach(function(controlInputList) {\r\n if (controlInputList.ProyectoId != 0) {\r\n vm.controlInputList[pos].ProyectoId = controlInputList.ProyectoId;\r\n vm.updateByProyecto(pos);\r\n if (controlInputList.EncuestaId != 0) {\r\n vm.controlInputList[pos].EncuestaId = controlInputList.EncuestaId;\r\n vm.updateEncuestadores(pos);\r\n }\r\n vm.controlInputList[pos] = controlInputList;\r\n }\r\n pos++;\r\n });\r\n }\r\n vm.fechaDesde = $stateParams.fechaDesde;\r\n vm.fechaHasta = $stateParams.fechaHasta;\r\n }\r\n\r\n vm.requestTiempoEjecucionUsuario = function () {\r\n vm.sum = 0;\r\n vm.barChartLabels = [];\r\n vm.barChartData = [];\r\n vm.barChartColors = [];\r\n vm.barChartSeries = [];\r\n vm.tiempoEjecucionList = [];\r\n vm.encuestaDataList = [];\r\n vm.controlInputList.forEach(function(controlInput) {\r\n controlInput.FechaDesde = vm.fechaDesde;\r\n controlInput.FechaHasta = vm.fechaHasta;\r\n });\r\n ControlInputsService.getAllData(vm.controlInputList, ControlInputsService.getTiempoEjecucionUsuario).then(function(data) {\r\n var dataAux = [];\r\n var maxValue = 0;\r\n data.forEach(function(x) {\r\n if (x.length != 0 && x[x.length - 1].TiempoEjecucion > maxValue) {\r\n maxValue = x[x.length - 1].TiempoEjecucion;\r\n dataAux = x;\r\n }\r\n });\r\n \r\n var media = dataAux[Math.round(dataAux.length / 2)].TiempoEjecucion;\r\n dataAux.forEach(function(x) {\r\n vm.sum += Math.pow(x.TiempoEjecucion - media, 2);\r\n });\r\n var sumAux = vm.sum;\r\n\r\n vm.sum = Math.round(Math.sqrt(vm.sum / dataAux.length) / 5);\r\n var divisions = Math.ceil((dataAux[dataAux.length - 1].TiempoEjecucion - dataAux[0].TiempoEjecucion) / vm.sum);\r\n\r\n var inicialValue = dataAux[0].TiempoEjecucion;\r\n for (var i = 0, j = inicialValue; i <= divisions; ++i, j += vm.sum) {\r\n vm.barChartLabels.push(Math.floor(j/60) + \":\" + (j%60 < 10 ? \"0\" : \"\") + j%60);\r\n }\r\n if (((dataAux[dataAux.length - 1].TiempoEjecucion - dataAux[0].TiempoEjecucion) % vm.sum) != 0) {\r\n vm.barChartLabels.pop();\r\n }\r\n\r\n vm.tiempoEjecucionList = data;\r\n var pos = 0;\r\n vm.tiempoEjecucionList.forEach(function(tiempoEjecucion) {\r\n if (tiempoEjecucion.length != 0) {\r\n vm.barChartSeries.push(\"\");\r\n vm.barChartData.push([]);\r\n vm.barChartColors.push(vm.colors[pos]);\r\n vm.encuestaDataList.push({ Data: null, Media: null, Moda: null, Sd: null, Max: null, Min: null });\r\n var encuestaData = vm.encuestaDataList[pos];\r\n vm.getEncuestaData(pos);\r\n var tiempoActual = tiempoEjecucion[0].TiempoEjecucion;\r\n var cantidadActual = 0;\r\n var tiempoAux;\r\n var cantidadAux = 0;\r\n tiempoEjecucion.forEach(function(x) {\r\n if (x.TiempoEjecucion == tiempoActual) {\r\n cantidadActual++;\r\n } else if (x.TiempoEjecucion == tiempoAux) {\r\n cantidadAux++;\r\n } else {\r\n if (cantidadAux > cantidadActual) {\r\n tiempoActual = tiempoAux;\r\n cantidadActual = cantidadAux;\r\n }\r\n tiempoAux = x.TiempoEjecucion;\r\n cantidadAux = 0;\r\n }\r\n });\r\n var aux = tiempoEjecucion[Math.round(tiempoEjecucion.length / 2)].TiempoEjecucion;\r\n encuestaData.Media = Math.floor(aux/60) + \":\" + (aux%60 < 10 ? \"0\" : \"\") + aux%60;\r\n aux = tiempoActual;\r\n encuestaData.Moda = Math.floor(aux/60) + \":\" + (aux%60 < 10 ? \"0\" : \"\") + aux%60;\r\n aux = tiempoEjecucion[0].TiempoEjecucion;\r\n encuestaData.Min = Math.floor(aux/60) + \":\" + (aux%60 < 10 ? \"0\" : \"\") + aux%60;\r\n aux = tiempoEjecucion[tiempoEjecucion.length - 1].TiempoEjecucion;\r\n encuestaData.Max = Math.floor(aux/60) + \":\" + (aux%60 < 10 ? \"0\" : \"\") + aux%60;\r\n encuestaData.Sd = Math.round(Math.sqrt(sumAux / tiempoEjecucion.length), 2);\r\n \r\n for (var i = 0, j = inicialValue; i <= divisions; ++i, j += vm.sum) {\r\n vm.barChartData[pos].push(0);\r\n }\r\n if (((tiempoEjecucion[tiempoEjecucion.length - 1].TiempoEjecucion - tiempoEjecucion[0].TiempoEjecucion) % vm.sum) != 0) {\r\n vm.barChartData[pos].pop();\r\n }\r\n tiempoEjecucion.forEach(function(x) {\r\n var posElem = Math.floor((x.TiempoEjecucion - inicialValue) / vm.sum);\r\n vm.barChartData[pos][posElem]++;\r\n });\r\n }\r\n pos++;\r\n });\r\n });\r\n };\r\n\r\n vm.updateByProyecto = function(index) {\r\n updateEncuestas(index);\r\n updateCanales(index);\r\n updateEstados(index);\r\n }\r\n\r\n function updateEncuestas(index) {\r\n vm.controlInputFiltersList[index].Encuestas = [];\r\n vm.controlInputFiltersList[index].Encuestadores = [];\r\n vm.controlInputList[index].EncuestaId = 0;\r\n vm.controlInputList[index].Encuestadores = [];\r\n ControlInputsService.getEncuestasByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Encuestas = response;\r\n });\r\n }\r\n\r\n function updateCanales(index) {\r\n vm.controlInputFiltersList[index].Canales = [];\r\n vm.controlInputList[index].Canal = null;\r\n ControlInputsService.getCanalesByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Canales = response;\r\n });\r\n }\r\n\r\n function updateEstados(index) {\r\n vm.controlInputFiltersList[index].Estados = [];\r\n vm.controlInputFiltersList[index].Municipios = [];\r\n vm.controlInputList[index].Estado = null;\r\n vm.controlInputList[index].Municipio = null;\r\n ControlInputsService.getEstadosByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Estados = response;\r\n });\r\n }\r\n\r\n vm.updateMunicipios = function(index) {\r\n vm.controlInputFiltersList[index].Municipios = [];\r\n vm.controlInputList[index].Municipio = null;\r\n ControlInputsService.getMunicipiosByProyectoAndEstado(vm.controlInputList[index].ProyectoId, vm.controlInputList[index].Estado).then(function (response) {\r\n vm.controlInputFiltersList[index].Municipios = response;\r\n });\r\n }\r\n\r\n vm.updateEncuestadores = function (index) {\r\n vm.controlInputFiltersList[index].Encuestadores = [];\r\n ControlInputsService.getEncuestadoresByEncuesta(vm.controlInputList[index].EncuestaId).then(function (response) {\r\n vm.controlInputFiltersList[index].Encuestadores = response;\r\n var encuestadoresAux = [];\r\n vm.controlInputList[index].Encuestadores.forEach(function(x) {\r\n vm.controlInputFiltersList[index].Encuestadores.forEach(function(y) {\r\n if (y.Id == x)\r\n encuestadoresAux.push(x);\r\n });\r\n });\r\n vm.controlInputList[index].Encuestadores = encuestadoresAux;\r\n });\r\n }\r\n\r\n vm.changeTab = function(route) {\r\n $state.go(route, {controlInputList: vm.controlInputList, fechaDesde: vm.fechaDesde, fechaHasta: vm.fechaHasta}, {reload: true});\r\n }\r\n\r\n vm.getEncuestaData = function (index) {\r\n ControlInputsService.getEncuestaDataByEncuesta(vm.controlInputList[index].ProyectoId, vm.controlInputList[index].EncuestaId).then(function (response) {\r\n vm.encuestaDataList[index].Data = response;\r\n });\r\n }\r\n\r\n vm.exportToCSV = function(encuestador) {\r\n vm.controlInputList.forEach(function(controlInput) {\r\n controlInput.FechaDesde = vm.fechaDesde;\r\n controlInput.FechaHasta = vm.fechaHasta;\r\n });\r\n\r\n ControlInputsService.exportControlInputToCSV(vm.controlInputList.filter(function(x) {return x.ProyectoId != 0;})).then(function (result) {\r\n let p = $interval(vm.checkearZip, 5000, 0, true, result);\r\n let fileName = 'TiempoEjecucionUsuario';\r\n fileName += '_' + vm.fechaDesde + '_' + vm.fechaHasta;\r\n vm.zipsEnProgreso.push({dictId: result, nombre: fileName, check: p, status: 'Comenzando', link: '', csv: true});\r\n });\r\n }\r\n\r\n vm.checkearZip = function(dictId) {\r\n EncuestasClienteService.checkForFile(dictId).then(function(result) {\r\n let item = vm.zipsEnProgreso.find(function(x) {return x.dictId === dictId;});\r\n switch (result) {\r\n case 'Empty':\r\n item.status = 'Vacio';\r\n break;\r\n case 'Running':\r\n item.status = 'Procesando';\r\n break;\r\n case 'RanToCompletion':\r\n item.status = 'Completado';\r\n break;\r\n default:\r\n item.status = 'Error';\r\n break;\r\n }\r\n $scope.$evalAsync();\r\n if(result === 'RanToCompletion' || result === 'Faulted' || result == 'Canceled' || result === 'Empty') {\r\n $interval.cancel(item.check);\r\n item.link = result === 'RanToCompletion' ? EncuestasClienteService.getLinkForFile(item.dictId, item.csv) : '';\r\n }\r\n })\r\n }\r\n\r\n vm.descargarOReintentar = function(item) {\r\n if (item.status === 'Completado' || item.status === 'Vacio') {\r\n vm.quitarDeLista(item);\r\n }\r\n }\r\n\r\n vm.quitarDeLista = function(item) {\r\n let index = vm.zipsEnProgreso.indexOf(item);\r\n if(index !== -1) { \r\n vm.zipsEnProgreso.splice(index, 1);\r\n if (vm.zipsEnProgreso.length == 0) {\r\n vm.progressCheckAbierto = false;\r\n }\r\n }\r\n }\r\n\r\n init();\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('ControlInputsService', ControlInputsService);\r\n\r\n ControlInputsService.$inject = ['$q', '$http'];\r\n\r\n function ControlInputsService($q, $http) {\r\n return {\r\n getControlInputFilters: getControlInputFilters,\r\n getAllData: getAllData,\r\n getTiempoEjecucionUsuario: getTiempoEjecucionUsuario,\r\n getCantidadRespuestas: getCantidadRespuestas,\r\n getValoresSKU: getValoresSKU,\r\n getEncuestasByProyecto: getEncuestasByProyecto,\r\n getCanalesByProyecto: getCanalesByProyecto,\r\n getEstadosByProyecto: getEstadosByProyecto,\r\n getMunicipiosByProyectoAndEstado: getMunicipiosByProyectoAndEstado,\r\n getEncuestadoresByEncuesta: getEncuestadoresByEncuesta,\r\n getSKUsByProyecto: getSKUsByProyecto,\r\n getEncuestaDataByEncuesta: getEncuestaDataByEncuesta,\r\n exportControlInputToCSV: exportControlInputToCSV,\r\n exportValoresSKUToCSV: exportValoresSKUToCSV\r\n };\r\n\r\n function getControlInputFilters() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/controlInputFilters').then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getAllData(controlInputList, dataFunction) {\r\n var deferred = $q.defer();\r\n\r\n $q.all(controlInputList.map(function(x) {\r\n return dataFunction(x);\r\n })).then(function(data) {\r\n deferred.resolve(data);\r\n }).catch(function(error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getTiempoEjecucionUsuario(controlInput) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/control-input/tiempoEjecucionUsuario', controlInput).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getCantidadRespuestas(controlInput) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/control-input/cantidadRespuestas', controlInput).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getValoresSKU(controlInput) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/control-input/valoresSKU', controlInput).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEncuestasByProyecto(proyectoId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/getEncuestasByProyecto?proyectoId=' + proyectoId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getCanalesByProyecto(proyectoId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/getCanalesByProyecto?proyectoId=' + proyectoId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEstadosByProyecto(proyectoId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/getEstadosByProyecto?proyectoId=' + proyectoId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getMunicipiosByProyectoAndEstado(proyectoId, estadoNombre) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/GetMunicipiosByProyectoAndEstado?proyectoId=' + proyectoId + '&estadoNombre=' + estadoNombre).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEncuestadoresByEncuesta(encuestaId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/getEncuestadoresByEncuesta?encuestaId=' + encuestaId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getSKUsByProyecto(proyectoId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/getSKUsByProyecto?proyectoId=' + proyectoId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEncuestaDataByEncuesta(proyectoId, encuestaId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/getEncuestaDataByEncuesta?proyectoId=' + proyectoId + '&encuestaId=' + encuestaId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function exportControlInputToCSV(controlInputList) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/control-input/results/control-input/csv', controlInputList).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function exportValoresSKUToCSV(controlInputList) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/control-input/results/valores-sku/csv', controlInputList).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('cantidadRespuestas', {\r\n parent: 'app',\r\n url: '/admin/cantidad-respuestas',\r\n params: {\r\n controlInputList: null,\r\n fechaDesde: null, \r\n fechaHasta: null\r\n },\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/controlInputs/cantidadRespuestas/cantidadRespuestas.html',\r\n controller: 'CantidadRespuestasController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n controlInputFilters: ['ControlInputsService', function (ControlInputsService) {\r\n return ControlInputsService.getControlInputFilters();\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n }\r\n})();","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('CantidadRespuestasController', CantidadRespuestasController);\r\n\r\n CantidadRespuestasController.$inject = ['controlInputFilters', '$state', '$stateParams', '$interval', '$scope', 'ControlInputsService'];\r\n\r\n function CantidadRespuestasController (controlInputFilters, $state, $stateParams, $interval, $scope, ControlInputsService, EncuestasClienteService) {\r\n var vm = this;\r\n\r\n vm.barChartData = [];\r\n vm.barChartLabels = [];\r\n vm.barChartSeries = [];\r\n vm.barChartColors = [];\r\n\r\n vm.colors = [{\r\n // blue\r\n backgroundColor: 'rgba(93,139,230,1)',\r\n borderColor: 'rgba(93,139,230,1)',\r\n pointBackgroundColor: 'rgba(93,139,230,1)',\r\n pointBorderColor: '#fff',\r\n pointHoverBackgroundColor: '#fff',\r\n pointHoverBorderColor: 'rgba(42,80,156,0.8)'\r\n }, {\r\n // orange\r\n backgroundColor: 'rgba(255,140,0,1)',\r\n borderColor: 'rgba(255,140,0,1)',\r\n pointBackgroundColor: 'rgba(255,140,0,1)',\r\n pointBorderColor: '#fff',\r\n pointHoverBackgroundColor: '#fff',\r\n pointHoverBorderColor: 'rgba(42,80,156,0.8)'\r\n }];\r\n\r\n vm.barChartOptions = {\r\n scales: {\r\n xAxes: [{\r\n scaleLabel: {\r\n display: true,\r\n fontSize: 14,\r\n labelString: 'Respuestas'\r\n }\r\n }],\r\n yAxes: [{\r\n scaleLabel: {\r\n display: true,\r\n fontSize: 14,\r\n labelString: 'Cantidad Instancias'\r\n }\r\n }],\r\n y: {\r\n beginAtZero: false\r\n }\r\n }\r\n };\r\n\r\n vm.maxDate = null;\r\n\r\n vm.minDate = null;\r\n\r\n vm.cantidadRespuestasList = [];\r\n\r\n vm.encuestaDataList = [];\r\n\r\n vm.fechaDesde = null;\r\n vm.fechaHasta = null;\r\n\r\n vm.controlInputFiltersList = [];\r\n\r\n vm.controlInputList = [];\r\n\r\n vm.cantidadFiltros = 2;\r\n\r\n vm.progressCheckAbierto = false;\r\n\r\n vm.zipsEnProgreso = [];\r\n vm.path = '';\r\n\r\n function init () {\r\n for (let i = 0; i < vm.cantidadFiltros; ++i) {\r\n vm.controlInputFiltersList.push(Object.create(controlInputFilters));\r\n vm.controlInputList.push({ ProyectoId: 0, EncuestaId: 0, Canal: null, Encuestadores: [], Estado: null, Municipio: null });\r\n }\r\n\r\n var pos = 0;\r\n if ($stateParams.controlInputList != null && $stateParams.controlInputList.length <= vm.cantidadFiltros) {\r\n $stateParams.controlInputList.forEach(function(controlInputList) {\r\n if (controlInputList.ProyectoId != 0) {\r\n vm.controlInputList[pos].ProyectoId = controlInputList.ProyectoId;\r\n vm.updateByProyecto(pos);\r\n if (controlInputList.EncuestaId != 0) {\r\n vm.controlInputList[pos].EncuestaId = controlInputList.EncuestaId;\r\n vm.updateEncuestadores(pos);\r\n }\r\n vm.controlInputList[pos] = controlInputList;\r\n }\r\n pos++;\r\n });\r\n }\r\n vm.fechaDesde = $stateParams.fechaDesde;\r\n vm.fechaHasta = $stateParams.fechaHasta;\r\n }\r\n\r\n vm.requestCantidadRespuestas = function () {\r\n vm.barChartData = [];\r\n vm.barChartLabels = [];\r\n vm.barChartColors = [];\r\n vm.barChartSeries = [];\r\n vm.cantidadRespuestasList = [];\r\n vm.encuestaDataList = [];\r\n vm.controlInputList.forEach(function(controlInput) {\r\n controlInput.FechaDesde = vm.fechaDesde;\r\n controlInput.FechaHasta = vm.fechaHasta;\r\n });\r\n ControlInputsService.getAllData(vm.controlInputList, ControlInputsService.getCantidadRespuestas).then(function(data) {\r\n var dataAux = [];\r\n var maxValue = 0;\r\n data.forEach(function(x) {\r\n if (x.length != 0 && x[x.length - 1].CantidadRespuestas > maxValue) {\r\n maxValue = x[x.length - 1].CantidadRespuestas;\r\n dataAux = x;\r\n }\r\n });\r\n \r\n for (var i = 1; i <= maxValue; ++i) {\r\n vm.barChartLabels.push(i);\r\n }\r\n\r\n vm.cantidadRespuestasList = data;\r\n var pos = 0;\r\n vm.cantidadRespuestasList.forEach(function(cantidadRespuestas) {\r\n if (cantidadRespuestas.length != 0) {\r\n vm.barChartSeries.push(\"\");\r\n vm.barChartData.push([]);\r\n vm.barChartColors.push(vm.colors[pos]);\r\n vm.encuestaDataList.push({ Data: null, Media: null, Moda: null, Sd: null, Max: null, Min: null });\r\n var encuestaData = vm.encuestaDataList[pos];\r\n vm.getEncuestaData(pos);\r\n\r\n var respuestasActual = cantidadRespuestas[0].CantidadRespuestas;\r\n var cantidadActual = 0;\r\n var respuestasAux;\r\n var cantidadAux = 0;\r\n cantidadRespuestas.forEach(function(x) {\r\n if (x.CantidadRespuestas == respuestasActual) {\r\n cantidadActual++;\r\n } else if (x.CantidadRespuestas == respuestasAux) {\r\n cantidadAux++;\r\n } else {\r\n if (cantidadAux > cantidadActual) {\r\n respuestasActual = respuestasAux;\r\n cantidadActual = cantidadAux;\r\n }\r\n respuestasAux = x.CantidadRespuestas;\r\n cantidadAux = 0;\r\n }\r\n });\r\n encuestaData.Media = cantidadRespuestas[Math.round(cantidadRespuestas.length / 2)].CantidadRespuestas;\r\n\r\n var sum = 0;\r\n cantidadRespuestas.forEach(function(x) {\r\n sum += Math.pow(x.CantidadRespuestas - encuestaData.Media, 2);\r\n });\r\n\r\n encuestaData.Moda = respuestasActual;\r\n encuestaData.Min = cantidadRespuestas[0].CantidadRespuestas;\r\n encuestaData.Max = cantidadRespuestas[cantidadRespuestas.length - 1].CantidadRespuestas;\r\n encuestaData.Sd = Math.round(Math.sqrt(sum / cantidadRespuestas.length), 2);\r\n \r\n for (var i = 1; i <= encuestaData.Max; ++i) {\r\n vm.barChartData[pos].push(0);\r\n }\r\n cantidadRespuestas.forEach(function(x) {\r\n vm.barChartData[pos][x.CantidadRespuestas - 1]++;\r\n });\r\n }\r\n pos++;\r\n });\r\n });\r\n };\r\n\r\n vm.updateByProyecto = function(index) {\r\n updateEncuestas(index);\r\n updateCanales(index);\r\n updateEstados(index);\r\n }\r\n\r\n function updateEncuestas(index) {\r\n vm.controlInputFiltersList[index].Encuestas = [];\r\n vm.controlInputFiltersList[index].Encuestadores = [];\r\n vm.controlInputList[index].EncuestaId = 0;\r\n vm.controlInputList[index].Encuestadores = [];\r\n ControlInputsService.getEncuestasByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Encuestas = response;\r\n });\r\n }\r\n\r\n function updateCanales(index) {\r\n vm.controlInputFiltersList[index].Canales = [];\r\n vm.controlInputList[index].Canal = null;\r\n ControlInputsService.getCanalesByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Canales = response;\r\n });\r\n }\r\n\r\n function updateEstados(index) {\r\n vm.controlInputFiltersList[index].Estados = [];\r\n vm.controlInputFiltersList[index].Municipios = [];\r\n vm.controlInputList[index].Estado = null;\r\n vm.controlInputList[index].Municipio = null;\r\n ControlInputsService.getEstadosByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Estados = response;\r\n });\r\n }\r\n\r\n vm.updateMunicipios = function(index) {\r\n vm.controlInputFiltersList[index].Municipios = [];\r\n vm.controlInputList[index].Municipio = null;\r\n ControlInputsService.getMunicipiosByProyectoAndEstado(vm.controlInputList[index].ProyectoId, vm.controlInputList[index].Estado).then(function (response) {\r\n vm.controlInputFiltersList[index].Municipios = response;\r\n });\r\n }\r\n\r\n vm.updateEncuestadores = function (index) {\r\n vm.controlInputFiltersList[index].Encuestadores = [];\r\n ControlInputsService.getEncuestadoresByEncuesta(vm.controlInputList[index].EncuestaId).then(function (response) {\r\n vm.controlInputFiltersList[index].Encuestadores = response;\r\n var encuestadoresAux = [];\r\n vm.controlInputList[index].Encuestadores.forEach(function(x) {\r\n vm.controlInputFiltersList[index].Encuestadores.forEach(function(y) {\r\n if (y.Id == x)\r\n encuestadoresAux.push(x);\r\n });\r\n });\r\n vm.controlInputList[index].Encuestadores = encuestadoresAux;\r\n });\r\n }\r\n\r\n vm.changeTab = function(route) {\r\n $state.go(route, {controlInputList: vm.controlInputList, fechaDesde: vm.fechaDesde, fechaHasta: vm.fechaHasta}, {reload: true});\r\n }\r\n\r\n vm.getEncuestaData = function (index) {\r\n ControlInputsService.getEncuestaDataByEncuesta(vm.controlInputList[index].ProyectoId, vm.controlInputList[index].EncuestaId).then(function (response) {\r\n vm.encuestaDataList[index].Data = response;\r\n });\r\n }\r\n\r\n vm.exportToCSV = function(encuestador) {\r\n vm.controlInputList.forEach(function(controlInput) {\r\n controlInput.FechaDesde = vm.fechaDesde;\r\n controlInput.FechaHasta = vm.fechaHasta;\r\n });\r\n\r\n ControlInputsService.exportControlInputToCSV(vm.controlInputList.filter(function(x) {return x.ProyectoId != 0;})).then(function (result) {\r\n let p = $interval(vm.checkearZip, 5000, 0, true, result);\r\n let fileName = 'TiempoEjecucionUsuario';\r\n fileName += '_' + vm.fechaDesde + '_' + vm.fechaHasta;\r\n vm.zipsEnProgreso.push({dictId: result, nombre: fileName, check: p, status: 'Comenzando', link: '', csv: true});\r\n });\r\n }\r\n\r\n vm.checkearZip = function(dictId) {\r\n EncuestasClienteService.checkForFile(dictId).then(function(result) {\r\n let item = vm.zipsEnProgreso.find(function(x) {return x.dictId === dictId;});\r\n switch (result) {\r\n case 'Empty':\r\n item.status = 'Vacio';\r\n break;\r\n case 'Running':\r\n item.status = 'Procesando';\r\n break;\r\n case 'RanToCompletion':\r\n item.status = 'Completado';\r\n break;\r\n default:\r\n item.status = 'Error';\r\n break;\r\n }\r\n $scope.$evalAsync();\r\n if(result === 'RanToCompletion' || result === 'Faulted' || result == 'Canceled' || result === 'Empty') {\r\n $interval.cancel(item.check);\r\n item.link = result === 'RanToCompletion' ? EncuestasClienteService.getLinkForFile(item.dictId, item.csv) : '';\r\n }\r\n })\r\n }\r\n\r\n vm.descargarOReintentar = function(item) {\r\n if (item.status === 'Completado' || item.status === 'Vacio') {\r\n vm.quitarDeLista(item);\r\n }\r\n }\r\n\r\n vm.quitarDeLista = function(item) {\r\n let index = vm.zipsEnProgreso.indexOf(item);\r\n if(index !== -1) { \r\n vm.zipsEnProgreso.splice(index, 1);\r\n if (vm.zipsEnProgreso.length == 0) {\r\n vm.progressCheckAbierto = false;\r\n }\r\n }\r\n }\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('jhi-configuration', {\r\n parent: 'admin',\r\n url: '/configuration',\r\n data: {\r\n authorities: ['ROLE_ADMIN'],\r\n pageTitle: 'Configuration'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/configuration/configuration.html',\r\n controller: 'JhiConfigurationController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('JhiConfigurationService', JhiConfigurationService);\r\n\r\n JhiConfigurationService.$inject = ['$filter', '$http'];\r\n\r\n function JhiConfigurationService ($filter, $http) {\r\n var service = {\r\n get: get,\r\n getEnv: getEnv\r\n };\r\n\r\n return service;\r\n\r\n function get () {\r\n return $http.get('management/configprops').then(getConfigPropsComplete);\r\n\r\n function getConfigPropsComplete (response) {\r\n var properties = [];\r\n angular.forEach(response.data, function (data) {\r\n properties.push(data);\r\n });\r\n var orderBy = $filter('orderBy');\r\n return orderBy(properties, 'prefix');\r\n }\r\n }\r\n\r\n function getEnv () {\r\n return $http.get('management/env').then(getEnvComplete);\r\n\r\n function getEnvComplete (response) {\r\n var properties = {};\r\n angular.forEach(response.data, function (val,key) {\r\n var vals = [];\r\n angular.forEach(val, function (v,k) {\r\n vals.push({ key:k, val:v });\r\n });\r\n properties[key] = vals;\r\n });\r\n return properties;\r\n }\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('JhiConfigurationController', JhiConfigurationController);\r\n\r\n JhiConfigurationController.$inject = ['$filter','JhiConfigurationService'];\r\n\r\n function JhiConfigurationController (filter,JhiConfigurationService) {\r\n var vm = this;\r\n\r\n vm.allConfiguration = null;\r\n vm.configuration = null;\r\n\r\n JhiConfigurationService.get().then(function(configuration) {\r\n vm.configuration = configuration;\r\n });\r\n JhiConfigurationService.getEnv().then(function (configuration) {\r\n vm.allConfiguration = configuration;\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ClienteManagementDialogController',ClienteManagementDialogController);\r\n\r\n ClienteManagementDialogController.$inject = ['$stateParams', '$uibModalInstance', 'entity', 'Cliente', 'DataUtils', '$scope'];\r\n\r\n function ClienteManagementDialogController ($stateParams, $uibModalInstance, entity, Cliente, DataUtils, $scope) {\r\n var vm = this;\r\n\r\n function init () {\r\n vm.cliente = entity;\r\n if(vm.cliente.Id == null){\r\n vm.cliente.DisplayOnlyAuditedContacts = true;\r\n }\r\n }\r\n\r\n vm.clear = function () {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n function onSaveSuccess (result) {\r\n vm.isSaving = false;\r\n $uibModalInstance.close(result);\r\n }\r\n\r\n function onSaveError () {\r\n vm.isSaving = false;\r\n }\r\n\r\n vm.save = function () {\r\n vm.isSaving = true;\r\n if (vm.cliente.Id !== null) {\r\n Cliente.update(vm.cliente, onSaveSuccess, onSaveError);\r\n } else {\r\n Cliente.save(vm.cliente, onSaveSuccess, onSaveError);\r\n }\r\n };\r\n\r\n vm.abbreviate = DataUtils.abbreviate;\r\n\r\n vm.byteSize = DataUtils.byteSize;\r\n\r\n vm.setImagen = function ($file, imagen) {\r\n if ($file && $file.$error == 'pattern') {\r\n return;\r\n }\r\n\r\n if ($file) {\r\n var fileReader = new FileReader();\r\n fileReader.readAsDataURL($file);\r\n fileReader.onload = function (e) {\r\n var base64Data = e.target.result.substr(e.target.result.indexOf('base64,') + 'base64,'.length);\r\n $scope.$apply(function() {\r\n vm.cliente.Logo = base64Data;\r\n vm.cliente.LogoContentType = $file.type;\r\n });\r\n };\r\n }\r\n };\r\n\r\n vm.clearImage = function() {\r\n vm.cliente.Logo = null;\r\n vm.cliente.LogoContentType = null;\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ClienteManagementDeleteController', ClienteManagementDeleteController);\r\n\r\n ClienteManagementDeleteController.$inject = ['$uibModalInstance', 'entity', 'Cliente'];\r\n\r\n function ClienteManagementDeleteController ($uibModalInstance, entity, Cliente) {\r\n var vm = this;\r\n\r\n function init () {\r\n vm.cliente = entity;\r\n }\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.confirmDelete = function(id) {\r\n Cliente.delete({id: id},\r\n function () {\r\n $uibModalInstance.close(true);\r\n });\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('cliente-management', {\r\n parent: 'admin',\r\n url: '/cliente-management',\r\n data: {\r\n authorities: ['ROLE_ADMIN'],\r\n pageTitle: 'Clientes'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/cliente-management/cliente-management.html',\r\n controller: 'ClienteManagementController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n })\r\n .state('cliente-management.new', {\r\n url: '/new',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/cliente-management/cliente-management-dialog.html',\r\n controller: 'ClienteManagementDialogController',\r\n controllerAs: 'vm',\r\n backdrop: 'static',\r\n size: 'lg',\r\n resolve: {\r\n entity: function () {\r\n return {\r\n Id: null,\r\n Nombre: null,\r\n Email: null,\r\n Logo: null,\r\n LogoContentType: null\r\n };\r\n }\r\n }\r\n }).result.then(function() {\r\n $state.go('cliente-management', null, { reload: true });\r\n }, function() {\r\n $state.go('cliente-management');\r\n });\r\n }]\r\n })\r\n .state('cliente-management.edit', {\r\n url: '/{id}/edit',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/cliente-management/cliente-management-dialog.html',\r\n controller: 'ClienteManagementDialogController',\r\n controllerAs: 'vm',\r\n backdrop: 'static',\r\n size: 'lg',\r\n resolve: {\r\n entity: ['Cliente', function(Cliente) {\r\n return Cliente.get({id : $stateParams.id}).$promise;\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('cliente-management', null, { reload: true });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n })\r\n .state('cliente-management.delete', {\r\n url: '/{id}/delete',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/cliente-management/cliente-management-delete-dialog.html',\r\n controller: 'ClienteManagementDeleteController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n entity: ['Cliente', function(Cliente) {\r\n return Cliente.get({id : $stateParams.id}).$promise;\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('cliente-management', null, { reload: true });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ClienteManagementController', ClienteManagementController);\r\n\r\n ClienteManagementController.$inject = ['Cliente', 'ParseLinks', 'AlertService', '$state', 'paginationConstants'];\r\n\r\n function ClienteManagementController(Cliente, ParseLinks, AlertService, $state, paginationConstants) {\r\n var vm = this;\r\n\r\n function init() {\r\n vm.page = 1;\r\n vm.itemsPerPage = paginationConstants.itemsPerPage;\r\n vm.loadAll();\r\n }\r\n\r\n vm.loadAll = function() {\r\n window.scrollTo(0, 0);\r\n\r\n Cliente.query({\r\n Number: vm.page - 1,\r\n TotalElements: vm.itemsPerPage\r\n }, onSuccess, onError);\r\n };\r\n\r\n function onSuccess (data) {\r\n vm.totalItems = data.TotalElements;\r\n vm.queryCount = vm.totalItems;\r\n vm.page = data.Number + 1;\r\n vm.clientes = data.Content;\r\n }\r\n\r\n function onError (error) {\r\n AlertService.error(error.data.message);\r\n }\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('audits', {\r\n parent: 'admin',\r\n url: '/audits',\r\n data: {\r\n authorities: ['ROLE_ADMIN'],\r\n pageTitle: 'Audits'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/audits/audits.html',\r\n controller: 'AuditsController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('AuditsService', AuditsService);\r\n\r\n AuditsService.$inject = ['$resource'];\r\n\r\n function AuditsService ($resource) {\r\n var service = $resource('management/audits/:id', {}, {\r\n 'get': {\r\n method: 'GET',\r\n isArray: true\r\n },\r\n 'query': {\r\n method: 'GET',\r\n isArray: true,\r\n params: {fromDate: null, toDate: null}\r\n }\r\n });\r\n\r\n return service;\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('AuditsController', AuditsController);\r\n\r\n AuditsController.$inject = ['$filter', 'AuditsService', 'ParseLinks'];\r\n\r\n function AuditsController ($filter, AuditsService, ParseLinks) {\r\n var vm = this;\r\n\r\n vm.audits = null;\r\n vm.fromDate = null;\r\n vm.links = null;\r\n vm.loadPage = loadPage;\r\n vm.onChangeDate = onChangeDate;\r\n vm.page = 1;\r\n vm.previousMonth = previousMonth;\r\n vm.toDate = null;\r\n vm.today = today;\r\n vm.totalItems = null;\r\n\r\n vm.today();\r\n vm.previousMonth();\r\n vm.onChangeDate();\r\n\r\n function onChangeDate () {\r\n var dateFormat = 'yyyy-MM-dd';\r\n var fromDate = $filter('date')(vm.fromDate, dateFormat);\r\n var toDate = $filter('date')(vm.toDate, dateFormat);\r\n\r\n AuditsService.query({page: vm.page -1, size: 20, fromDate: fromDate, toDate: toDate}, function(result, headers){\r\n vm.audits = result;\r\n vm.links = ParseLinks.parse(headers('link'));\r\n vm.totalItems = headers('X-Total-Count');\r\n });\r\n }\r\n\r\n // Date picker configuration\r\n function today () {\r\n // Today + 1 day - needed if the current day must be included\r\n var today = new Date();\r\n vm.toDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);\r\n }\r\n\r\n function previousMonth () {\r\n var fromDate = new Date();\r\n if (fromDate.getMonth() === 0) {\r\n fromDate = new Date(fromDate.getFullYear() - 1, 11, fromDate.getDate());\r\n } else {\r\n fromDate = new Date(fromDate.getFullYear(), fromDate.getMonth() - 1, fromDate.getDate());\r\n }\r\n\r\n vm.fromDate = fromDate;\r\n }\r\n\r\n function loadPage (page) {\r\n vm.page = page;\r\n vm.onChangeDate();\r\n }\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig ($stateProvider) {\r\n $stateProvider.state('admin', {\r\n abstract: true,\r\n parent: 'app'\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(function () {\r\n Stripe.setPublishableKey('pk_test_6T0tyRv63V9pxTvJmiJnCGZQ');\r\n })\r\n .controller('SettingsAddCardController', SettingsAddCardController);\r\n\r\n SettingsAddCardController.$inject = ['$uibModalInstance', '$http'];\r\n\r\n function SettingsAddCardController ($uibModalInstance, $http) {\r\n var vm = this;\r\n\r\n vm.card = {\r\n name: \"APPROVED\",\r\n number: \"4268 0700 0000 0002\",\r\n expiredDate: \"01/20\",\r\n CSV: \"123\"\r\n };\r\n\r\n function init () {\r\n\r\n }\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.addCard = function() {\r\n var card = {\r\n Number: vm.card.number.replace(/\\D/g,''),\r\n ExpMonth: vm.card.expiredDate.split('/')[0],\r\n ExpYear: '20' + vm.card.expiredDate.split('/')[1],\r\n Cvc: vm.card.CSV,\r\n Name: vm.card.name,\r\n Type: vm.card.type\r\n };\r\n\r\n $http.post('api/payments/addCard', card).then(function(response){\r\n $uibModalInstance.close(response.data);\r\n }).catch(function (error) {\r\n console.log(error);\r\n $uibModalInstance.close(null);\r\n });\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('settings', {\r\n parent: 'account',\r\n url: '/settings',\r\n data: {\r\n authorities: ['ROLE_USER', 'ROLE_ADMIN'],\r\n pageTitle: 'Configuración'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/account/settings/settings.html',\r\n controller: 'SettingsController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n userMembership: ['MembresiaService', function (MembresiaService) {\r\n return MembresiaService.getUserMembership();\r\n }],\r\n userCard: ['CarritoService', function (CarritoService) {\r\n return CarritoService.getCard();\r\n }],\r\n userCards: ['CarritoService', function (CarritoService) {\r\n return CarritoService.getCards();\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('SettingsController', SettingsController);\r\n\r\n SettingsController.$inject = ['Principal', 'Auth', 'DataUtils', '$scope', '$uibModal', 'MembresiaService', 'userMembership', '$http', 'userCard', 'userCards', '$state'];\r\n\r\n function SettingsController (Principal, Auth, DataUtils, $scope, $uibModal, MembresiaService, userMembership, $http, userCard, userCards, $state) {\r\n var vm = this;\r\n\r\n function init() {\r\n vm.error = null;\r\n vm.settingsAccount = null;\r\n vm.success = null;\r\n vm.userMembership = userMembership;\r\n vm.userCard = userCard.data;\r\n vm.userCards = userCards.data;\r\n\r\n Principal.identity().then(function(account) {\r\n vm.settingsAccount = copyAccount(account);\r\n });\r\n }\r\n\r\n function copyAccount(account) {\r\n return angular.copy(account);\r\n }\r\n\r\n vm.save = function() {\r\n Auth.updateAccount(vm.settingsAccount).then(function() {\r\n vm.error = null;\r\n vm.success = 'OK';\r\n\r\n Principal.identity(true).then(function(account) {\r\n vm.settingsAccount = copyAccount(account);\r\n });\r\n }).catch(function() {\r\n vm.success = null;\r\n vm.error = 'ERROR';\r\n });\r\n };\r\n\r\n vm.abbreviate = DataUtils.abbreviate;\r\n\r\n vm.byteSize = DataUtils.byteSize;\r\n\r\n vm.setImagen = function ($file, imagen) {\r\n if ($file && $file.$error == 'pattern') {\r\n return;\r\n }\r\n\r\n if ($file) {\r\n var fileReader = new FileReader();\r\n fileReader.readAsDataURL($file);\r\n fileReader.onload = function (e) {\r\n var base64Data = e.target.result.substr(e.target.result.indexOf('base64,') + 'base64,'.length);\r\n $scope.$apply(function() {\r\n vm.settingsAccount.Imagen = base64Data;\r\n vm.settingsAccount.ImagenContentType = $file.type;\r\n });\r\n };\r\n }\r\n };\r\n\r\n vm.clearImage = function() {\r\n vm.settingsAccount.Imagen = null;\r\n vm.settingsAccount.ImagenContentType = null;\r\n };\r\n\r\n vm.cancelMembership = function() {\r\n MembresiaService.cancelMembership().then(function () {\r\n vm.userMembership = null;\r\n });\r\n };\r\n\r\n vm.deleteCard = function (id) {\r\n $http.delete('api/payments/deleteCard/'+id).then(function(response){\r\n var index = vm.userCards.findIndex(function (x) {\r\n return x.Id == id;\r\n });\r\n if (index > -1) {\r\n vm.userCards.splice(index, 1);\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n });\r\n };\r\n\r\n vm.setDefault = function (id) {\r\n $http.post('api/payments/updateDefaultCard', { Id : id}).then(function(response){\r\n vm.userCard = vm.userCards.find(function (x) {\r\n return x != null && x.Id == response.data.Id;\r\n });\r\n }).catch(function (error) {\r\n console.log(error);\r\n });\r\n };\r\n\r\n\r\n vm.cardModal = function() {\r\n $uibModal.open({\r\n templateUrl: 'app/account/settings/settingsAddCard-dialog.html',\r\n controller: 'SettingsAddCardController',\r\n controllerAs: 'vm',\r\n size: 'md'\r\n }).result.then(function(response) {\r\n if (response != null) {\r\n vm.userCards.push(response);\r\n }\r\n }, function() {\r\n\r\n });\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('requestReset', {\r\n parent: 'account',\r\n url: '/reset/request',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/account/reset/request/reset.request.html',\r\n controller: 'RequestResetController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('RequestResetController', RequestResetController);\r\n\r\n RequestResetController.$inject = ['$timeout', 'PasswordResetInit'];\r\n\r\n function RequestResetController ($timeout, PasswordResetInit) {\r\n var vm = this;\r\n\r\n vm.error = null;\r\n vm.errorEmailNotExists = null;\r\n vm.requestReset = requestReset;\r\n vm.resetAccount = {};\r\n vm.success = null;\r\n\r\n $timeout(function (){angular.element('#email').focus();});\r\n\r\n function requestReset () {\r\n\r\n vm.error = null;\r\n vm.errorEmailNotExists = null;\r\n\r\n PasswordResetInit.getResetToken({ UserName : vm.resetAccount.email }).then(function (response) {\r\n console.log(response);\r\n vm.success = 'OK';\r\n }).catch(function (response) {\r\n vm.success = null;\r\n if (response.status === 400) {\r\n vm.errorEmailNotExists = 'ERROR';\r\n } else {\r\n vm.error = 'ERROR';\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('finishReset', {\r\n parent: 'account',\r\n url: '/reset/finish?user&key',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/account/reset/finish/reset.finish.html',\r\n controller: 'ResetFinishController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ResetFinishController', ResetFinishController);\r\n\r\n ResetFinishController.$inject = ['$stateParams', '$timeout', 'PasswordResetFinish'];\r\n\r\n function ResetFinishController ($stateParams, $timeout, PasswordResetFinish) {\r\n var vm = this;\r\n\r\n vm.keyMissing = angular.isUndefined($stateParams.key);\r\n vm.confirmPassword = null;\r\n vm.doNotMatch = null;\r\n vm.error = null;\r\n vm.finishReset = finishReset;\r\n vm.resetAccount = {};\r\n vm.success = null;\r\n\r\n $timeout(function (){angular.element('#password').focus();});\r\n\r\n function finishReset() {\r\n vm.doNotMatch = null;\r\n vm.error = null;\r\n if (vm.resetAccount.password !== vm.confirmPassword) {\r\n vm.doNotMatch = 'ERROR';\r\n } else {\r\n PasswordResetFinish.resetPassword({Token: $stateParams.key, Username: $stateParams.user, NewPassword: vm.resetAccount.password}).then(function () {\r\n vm.success = 'OK';\r\n }).catch(function () {\r\n vm.success = null;\r\n vm.error = 'ERROR';\r\n });\r\n }\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('register', {\r\n parent: 'account',\r\n url: '/register',\r\n data: {\r\n authorities: [],\r\n pageTitle: 'Registration'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/account/register/register.html',\r\n controller: 'RegisterController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('RegisterController', RegisterController);\r\n\r\n\r\n RegisterController.$inject = [ '$timeout', 'Auth', 'LoginService', 'errorConstants'];\r\n\r\n function RegisterController ($timeout, Auth, LoginService, errorConstants) {\r\n var vm = this;\r\n\r\n vm.doNotMatch = null;\r\n vm.error = null;\r\n vm.errorUserExists = null;\r\n vm.login = LoginService.open;\r\n vm.register = register;\r\n vm.registerAccount = {};\r\n vm.success = null;\r\n\r\n $timeout(function (){angular.element('#login').focus();});\r\n\r\n function register () {\r\n if (vm.registerAccount.Password !== vm.ConfirmPassword) {\r\n vm.doNotMatch = 'ERROR';\r\n } else {\r\n vm.registerAccount.LangKey = 'en' ;\r\n vm.doNotMatch = null;\r\n vm.error = null;\r\n vm.errorUserExists = null;\r\n vm.errorEmailExists = null;\r\n\r\n vm.registerAccount.UserName = vm.registerAccount.Email;\r\n\r\n Auth.createAccount(vm.registerAccount).then(function () {\r\n vm.success = 'OK';\r\n }).catch(function (response) {\r\n vm.success = null;\r\n if (response.status === 400 && angular.fromJson(response.data).type === errorConstants.LOGIN_ALREADY_USED_TYPE) {\r\n vm.errorUserExists = 'ERROR';\r\n } else if (response.status === 400 && angular.fromJson(response.data).type === errorConstants.EMAIL_ALREADY_USED_TYPE) {\r\n vm.errorEmailExists = 'ERROR';\r\n } else {\r\n vm.error = 'ERROR';\r\n }\r\n });\r\n }\r\n }\r\n }\r\n})();\r\n","/* globals $ */\r\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('passwordStrengthBar', passwordStrengthBar);\r\n\r\n function passwordStrengthBar () {\r\n var directive = {\r\n replace: true,\r\n restrict: 'E',\r\n template: '
' +\r\n 'Password strength:' +\r\n '
    ' +\r\n '
  • ' +\r\n '
' +\r\n '
',\r\n scope: {\r\n passwordToCheck: '='\r\n },\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n /* private helper methods*/\r\n\r\n function linkFunc(scope, iElement) {\r\n var strength = {\r\n colors: ['#F00', '#F90', '#FF0', '#9F0', '#0F0'],\r\n mesureStrength: function (p) {\r\n\r\n var _force = 0;\r\n var _regex = /[$-/:-?{-~!\"^_`\\[\\]]/g; // \"\r\n\r\n var _lowerLetters = /[a-z]+/.test(p);\r\n var _upperLetters = /[A-Z]+/.test(p);\r\n var _numbers = /[0-9]+/.test(p);\r\n var _symbols = _regex.test(p);\r\n\r\n var _flags = [_lowerLetters, _upperLetters, _numbers, _symbols];\r\n var _passedMatches = $.grep(_flags, function (el) {\r\n return el === true;\r\n }).length;\r\n\r\n _force += 2 * p.length + ((p.length >= 10) ? 1 : 0);\r\n _force += _passedMatches * 10;\r\n\r\n // penalty (short password)\r\n _force = (p.length <= 6) ? Math.min(_force, 10) : _force;\r\n\r\n // penalty (poor variety of characters)\r\n _force = (_passedMatches === 1) ? Math.min(_force, 10) : _force;\r\n _force = (_passedMatches === 2) ? Math.min(_force, 20) : _force;\r\n _force = (_passedMatches === 3) ? Math.min(_force, 40) : _force;\r\n\r\n return _force;\r\n\r\n },\r\n getColor: function (s) {\r\n\r\n var idx;\r\n if (s <= 10) {\r\n idx = 0;\r\n }\r\n else if (s <= 20) {\r\n idx = 1;\r\n }\r\n else if (s <= 30) {\r\n idx = 2;\r\n }\r\n else if (s <= 40) {\r\n idx = 3;\r\n }\r\n else {\r\n idx = 4;\r\n }\r\n\r\n return { idx: idx + 1, col: this.colors[idx] };\r\n }\r\n };\r\n scope.$watch('passwordToCheck', function (password) {\r\n if (password) {\r\n var c = strength.getColor(strength.mesureStrength(password));\r\n iElement.removeClass('ng-hide');\r\n iElement.find('ul').children('li')\r\n .css({ 'background-color': '#DDD' })\r\n .slice(0, c.idx)\r\n .css({ 'background-color': c.col });\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('password', {\r\n parent: 'account',\r\n url: '/password',\r\n data: {\r\n authorities: ['ROLE_USER', 'ROLE_ADMIN'],\r\n pageTitle: 'Contraseña'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/account/password/password.html',\r\n controller: 'PasswordController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('PasswordController', PasswordController);\r\n\r\n PasswordController.$inject = ['Auth', 'Principal'];\r\n\r\n function PasswordController (Auth, Principal) {\r\n var vm = this;\r\n\r\n function init() {\r\n vm.doNotMatch = null;\r\n vm.error = null;\r\n vm.success = null;\r\n\r\n Principal.identity().then(function(account) {\r\n vm.account = account;\r\n });\r\n }\r\n\r\n vm.changePassword = function() {\r\n if (vm.password.NewPassword !== vm.confirmPassword) {\r\n vm.error = null;\r\n vm.success = null;\r\n vm.doNotMatch = 'ERROR';\r\n } else {\r\n vm.doNotMatch = null;\r\n Auth.changePassword(vm.password).then(function () {\r\n vm.error = null;\r\n vm.success = 'OK';\r\n }).catch(function () {\r\n vm.success = null;\r\n vm.error = 'ERROR';\r\n });\r\n }\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('activate', {\r\n parent: 'account',\r\n url: '/activate?key',\r\n data: {\r\n authorities: [],\r\n pageTitle: 'Activation'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/account/activate/activate.html',\r\n controller: 'ActivationController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ActivationController', ActivationController);\r\n\r\n ActivationController.$inject = ['$stateParams', 'Auth', 'LoginService'];\r\n\r\n function ActivationController ($stateParams, Auth, LoginService) {\r\n var vm = this;\r\n\r\n Auth.activateAccount({key: $stateParams.key}).then(function () {\r\n vm.error = null;\r\n vm.success = 'OK';\r\n }).catch(function () {\r\n vm.success = null;\r\n vm.error = 'ERROR';\r\n });\r\n\r\n vm.login = LoginService.open;\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('account', {\r\n abstract: true,\r\n parent: 'app'\r\n });\r\n }\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp', [\r\n 'ngStorage',\r\n 'ngResource',\r\n 'ngCookies',\r\n 'ngAria',\r\n 'ngCacheBuster',\r\n 'ngFileUpload',\r\n 'ui.bootstrap',\r\n 'ui.bootstrap.datetimepicker',\r\n 'ui.router',\r\n 'infinite-scroll',\r\n // jhipster-needle-angularjs-add-module JHipster will add new module here\r\n 'angular-loading-bar',\r\n 'ngMaterial',\r\n 'ngAnimate',\r\n 'rzModule',\r\n 'rx',\r\n 'chart.js',\r\n 'ngMap',\r\n 'angularSpinner',\r\n 'ui.carousel'\r\n ])\r\n .run(run);\r\n\r\n run.$inject = ['stateHandler'];\r\n\r\n function run(stateHandler) {\r\n stateHandler.initialize();\r\n }\r\n})();\r\n\n// TODO: hacer como los demas services (estaba apurado por la demo)\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('User', User)\r\n .factory('UserByFacebook', UserByFacebook);\r\n\r\n User.$inject = ['$resource'];\r\n UserByFacebook.$inject = ['$resource'];\r\n\r\n function User ($resource) {\r\n var service = $resource('api/users/:id', {}, {\r\n 'query': { method: 'GET' },\r\n 'get': {\r\n method: 'GET',\r\n transformResponse: function (data) {\r\n data = angular.fromJson(data);\r\n return data;\r\n }\r\n },\r\n 'save': { method:'POST' },\r\n 'update': { method:'PUT' },\r\n 'delete':{ method:'DELETE'}\r\n });\r\n\r\n return service;\r\n }\r\n\r\n function UserByFacebook ($resource) {\r\n var service = $resource('api/users/facebook/:facebookId', {}, {\r\n 'get': {\r\n method: 'GET',\r\n transformResponse: function (data) {\r\n data = angular.fromJson(data);\r\n return data;\r\n }\r\n }\r\n });\r\n\r\n return service;\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('ProfileService', ProfileService);\r\n\r\n ProfileService.$inject = ['$http'];\r\n\r\n function ProfileService($http) {\r\n\r\n var dataPromise;\r\n\r\n var service = {\r\n getProfileInfo : getProfileInfo\r\n };\r\n\r\n return service;\r\n\r\n function getProfileInfo() {\r\n if (angular.isUndefined(dataPromise)) {\r\n dataPromise = $http.get('api/profile-info').then(function(result) {\r\n if (result.data.activeProfiles) {\r\n var response = {};\r\n response.activeProfiles = result.data.activeProfiles;\r\n response.ribbonEnv = result.data.ribbonEnv;\r\n response.inProduction = result.data.activeProfiles.indexOf(\"prod\") !== -1;\r\n response.swaggerEnabled = result.data.activeProfiles.indexOf(\"swagger\") !== -1;\r\n return response;\r\n }\r\n });\r\n }\r\n return dataPromise;\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('pageRibbon', pageRibbon);\r\n\r\n pageRibbon.$inject = ['ProfileService', '$rootScope'];\r\n\r\n function pageRibbon(ProfileService, $rootScope) {\r\n var directive = {\r\n replace : true,\r\n restrict : 'AE',\r\n template : '',\r\n link : linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc(scope, element, attrs) {\r\n ProfileService.getProfileInfo().then(function(response) {\r\n if (response.ribbonEnv) {\r\n scope.ribbonEnv = response.ribbonEnv;\r\n element.addClass(response.ribbonEnv);\r\n element.removeClass('hidden');\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n\n// TODO: hacer como los demas services (estaba apurado por la demo)\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Cliente', Cliente);\r\n\r\n Cliente.$inject = ['$resource'];\r\n\r\n function Cliente ($resource) {\r\n var service = $resource('api/clientes/:id', {}, {\r\n 'query': { method: 'GET' },\r\n 'get': {\r\n method: 'GET',\r\n transformResponse: function (data) {\r\n data = angular.fromJson(data);\r\n return data;\r\n }\r\n },\r\n 'save': { method:'POST' },\r\n 'update': { method:'PUT' },\r\n 'delete':{ method:'DELETE'}\r\n });\r\n\r\n return service;\r\n }\r\n})();\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Register', Register);\r\n\r\n Register.$inject = ['$resource'];\r\n\r\n function Register ($resource) {\r\n return $resource('api/account/register', {}, {});\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Principal', Principal);\r\n\r\n Principal.$inject = ['$q', 'Account'];\r\n\r\n function Principal ($q, Account) {\r\n var _identitySubject = new Rx.BehaviorSubject(undefined),\r\n _authenticated = false;\r\n\r\n var service = {\r\n authenticate: authenticate,\r\n getIdentitySubject: getIdentitySubject,\r\n hasAnyAuthority: hasAnyAuthority,\r\n hasAuthority: hasAuthority,\r\n identity: identity,\r\n isAuthenticated: isAuthenticated,\r\n isIdentityResolved: isIdentityResolved\r\n };\r\n\r\n return service;\r\n\r\n function authenticate (identity) {\r\n _identitySubject.onNext(identity);\r\n _authenticated = _identitySubject.value !== null;\r\n }\r\n\r\n function getIdentitySubject() {\r\n return _identitySubject;\r\n }\r\n\r\n function hasAnyAuthority (authorities) {\r\n if (!_authenticated || !_identitySubject.value || !_identitySubject.value.Authorities) {\r\n return false;\r\n }\r\n\r\n for (var i = 0; i < authorities.length; i++) {\r\n if (_identitySubject.value.Authorities.indexOf(authorities[i]) !== -1) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function hasAuthority (authority) {\r\n if (!_authenticated) {\r\n return $q.when(false);\r\n }\r\n\r\n return this.identity().then(function(_id) {\r\n return _id.Authorities && _id.Authorities.indexOf(authority) !== -1;\r\n }, function(){\r\n return false;\r\n });\r\n }\r\n\r\n function identity (force) {\r\n var deferred = $q.defer();\r\n\r\n if (force === true || !angular.isDefined(_identitySubject.value)) {\r\n Account.get().$promise\r\n .then(getAccountThen)\r\n .catch(getAccountCatch);\r\n } else {\r\n deferred.resolve(_identitySubject.value);\r\n }\r\n\r\n return deferred.promise;\r\n\r\n function getAccountThen (account) {\r\n _identitySubject.onNext(account.data);\r\n _authenticated = true;\r\n deferred.resolve(_identitySubject.value);\r\n }\r\n\r\n function getAccountCatch () {\r\n _identitySubject.onNext(null);\r\n _authenticated = false;\r\n deferred.resolve(_identitySubject.value);\r\n }\r\n }\r\n\r\n function isAuthenticated () {\r\n return _authenticated;\r\n }\r\n\r\n function isIdentityResolved () {\r\n return angular.isDefined(_identitySubject.value);\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('PasswordResetInit', PasswordResetInit);\r\n\r\n PasswordResetInit.$inject = ['$http'];\r\n\r\n function PasswordResetInit($http) {\r\n return {\r\n getResetToken : getResetToken\r\n };\r\n\r\n function getResetToken(user) {\r\n return $http.post('api/account/reset-password/token', user);\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('PasswordResetFinish', PasswordResetFinish);\r\n\r\n PasswordResetFinish.$inject = ['$http'];\r\n\r\n function PasswordResetFinish($http) {\r\n return {\r\n resetPassword : resetPassword\r\n };\r\n\r\n function resetPassword(data) {\r\n return $http.post('api/account/reset-password', data);\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Password', Password);\r\n\r\n Password.$inject = ['$resource'];\r\n\r\n function Password($resource) {\r\n var service = $resource('api/account/change-password', {}, {});\r\n\r\n return service;\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('hasAuthority', hasAuthority);\r\n\r\n hasAuthority.$inject = ['Principal'];\r\n\r\n function hasAuthority(Principal) {\r\n var directive = {\r\n restrict: 'A',\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc(scope, element, attrs) {\r\n var authority = attrs.hasAuthority.replace(/\\s+/g, '');\r\n\r\n var setVisible = function () {\r\n element.removeClass('hidden');\r\n },\r\n setHidden = function () {\r\n element.addClass('hidden');\r\n },\r\n defineVisibility = function (reset) {\r\n\r\n if (reset) {\r\n setVisible();\r\n }\r\n\r\n Principal.hasAuthority(authority)\r\n .then(function (result) {\r\n if (result) {\r\n setVisible();\r\n } else {\r\n setHidden();\r\n }\r\n });\r\n };\r\n\r\n if (authority.length > 0) {\r\n defineVisibility(true);\r\n\r\n scope.$watch(function() {\r\n return Principal.isAuthenticated();\r\n }, function() {\r\n defineVisibility(true);\r\n });\r\n }\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('hasAnyAuthority', hasAnyAuthority);\r\n\r\n hasAnyAuthority.$inject = ['Principal'];\r\n\r\n function hasAnyAuthority(Principal) {\r\n var directive = {\r\n restrict: 'A',\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc(scope, element, attrs) {\r\n var authorities = attrs.hasAnyAuthority.replace(/\\s+/g, '').split(',');\r\n\r\n var setVisible = function () {\r\n element.removeClass('hidden');\r\n },\r\n setHidden = function () {\r\n element.addClass('hidden');\r\n },\r\n defineVisibility = function (reset) {\r\n var result;\r\n if (reset) {\r\n setVisible();\r\n }\r\n\r\n result = Principal.hasAnyAuthority(authorities);\r\n if (result) {\r\n setVisible();\r\n } else {\r\n setHidden();\r\n }\r\n };\r\n\r\n if (authorities.length > 0) {\r\n defineVisibility(true);\r\n\r\n scope.$watch(function() {\r\n return Principal.isAuthenticated();\r\n }, function() {\r\n defineVisibility(true);\r\n });\r\n }\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Auth', Auth);\r\n\r\n Auth.$inject = ['$rootScope', '$state', '$sessionStorage', '$q', 'Principal', 'AuthServerProvider', 'Account', 'LoginService', 'Register', 'Activate', 'Password', 'PasswordResetInit', 'PasswordResetFinish'];\r\n\r\n function Auth ($rootScope, $state, $sessionStorage, $q, Principal, AuthServerProvider, Account, LoginService, Register, Activate, Password, PasswordResetInit, PasswordResetFinish) {\r\n var service = {\r\n activateAccount: activateAccount,\r\n authorize: authorize,\r\n changePassword: changePassword,\r\n createAccount: createAccount,\r\n getPreviousState: getPreviousState,\r\n login: login,\r\n logout: logout,\r\n loginWithToken: loginWithToken,\r\n resetPasswordFinish: resetPasswordFinish,\r\n resetPasswordInit: resetPasswordInit,\r\n resetPreviousState: resetPreviousState,\r\n storePreviousState: storePreviousState,\r\n updateAccount: updateAccount\r\n };\r\n\r\n return service;\r\n\r\n function activateAccount (key, callback) {\r\n var cb = callback || angular.noop;\r\n\r\n return Activate.get(key,\r\n function (response) {\r\n return cb(response);\r\n },\r\n function (err) {\r\n return cb(err);\r\n }.bind(this)).$promise;\r\n }\r\n\r\n function authorize (force) {\r\n var authReturn = Principal.identity(force).then(authThen);\r\n\r\n return authReturn;\r\n\r\n function authThen () {\r\n var isAuthenticated = Principal.isAuthenticated();\r\n\r\n // an authenticated user can't access to login and register pages\r\n if (isAuthenticated && $rootScope.toState.parent === 'account' && ($rootScope.toState.name === 'login' || $rootScope.toState.name === 'register' || $rootScope.toState.name === 'social-auth')) {\r\n $state.go('home');\r\n }\r\n\r\n // recover and clear previousState after external login redirect (e.g. oauth2)\r\n if (isAuthenticated && !$rootScope.fromState.name && getPreviousState()) {\r\n var previousState = getPreviousState();\r\n resetPreviousState();\r\n $state.go(previousState.name, previousState.params);\r\n }\r\n\r\n if ($rootScope.toState.data.authorities && $rootScope.toState.data.authorities.length > 0 && !Principal.hasAnyAuthority($rootScope.toState.data.authorities)) {\r\n if (isAuthenticated) {\r\n // user is signed in but not authorized for desired state\r\n $state.go('accessdenied');\r\n }\r\n else {\r\n // user is not authenticated. stow the state they wanted before you\r\n // send them to the login service, so you can return them when you're done\r\n storePreviousState($rootScope.toState.name, $rootScope.toStateParams);\r\n\r\n // now, send them to the signin state so they can log in\r\n $state.go('accessdenied').then(function() {\r\n LoginService.open();\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n function changePassword (newPassword, callback) {\r\n var cb = callback || angular.noop;\r\n\r\n return Password.save(newPassword, function () {\r\n return cb();\r\n }, function (err) {\r\n return cb(err);\r\n }).$promise;\r\n }\r\n\r\n function createAccount (account, callback) {\r\n var cb = callback || angular.noop;\r\n\r\n return Register.save(account,\r\n function () {\r\n return cb(account);\r\n },\r\n function (err) {\r\n this.logout();\r\n return cb(err);\r\n }.bind(this)).$promise;\r\n }\r\n\r\n function login (credentials, callback) {\r\n var cb = callback || angular.noop;\r\n var deferred = $q.defer();\r\n\r\n AuthServerProvider.login(credentials)\r\n .then(loginThen)\r\n .catch(function (err) {\r\n this.logout();\r\n deferred.reject(err);\r\n return cb(err);\r\n }.bind(this));\r\n\r\n function loginThen (data) {\r\n Principal.identity(true).then(function(account) {\r\n deferred.resolve(data);\r\n });\r\n return cb();\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function loginWithToken(jwt, rememberMe) {\r\n return AuthServerProvider.loginWithToken(jwt, rememberMe);\r\n }\r\n\r\n function logout () {\r\n AuthServerProvider.logout();\r\n Principal.authenticate(null);\r\n }\r\n\r\n function resetPasswordFinish (keyAndPassword, callback) {\r\n var cb = callback || angular.noop;\r\n\r\n return PasswordResetFinish.save(keyAndPassword, function () {\r\n return cb();\r\n }, function (err) {\r\n return cb(err);\r\n }).$promise;\r\n }\r\n\r\n function resetPasswordInit (mail, callback) {\r\n var cb = callback || angular.noop;\r\n\r\n return PasswordResetInit.save(mail, function() {\r\n return cb();\r\n }, function (err) {\r\n return cb(err);\r\n }).$promise;\r\n }\r\n\r\n function updateAccount (account, callback) {\r\n var cb = callback || angular.noop;\r\n\r\n return Account.save(account,\r\n function () {\r\n return cb(account);\r\n },\r\n function (err) {\r\n return cb(err);\r\n }.bind(this)).$promise;\r\n }\r\n\r\n function getPreviousState() {\r\n var previousState = $sessionStorage.previousState;\r\n return previousState;\r\n }\r\n\r\n function resetPreviousState() {\r\n delete $sessionStorage.previousState;\r\n }\r\n\r\n function storePreviousState(previousStateName, previousStateParams) {\r\n var previousState = { \"name\": previousStateName, \"params\": previousStateParams };\r\n $sessionStorage.previousState = previousState;\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('AuthServerProvider', AuthServerProvider);\r\n\r\n AuthServerProvider.$inject = ['$http', '$localStorage', '$sessionStorage', '$q'];\r\n\r\n function AuthServerProvider ($http, $localStorage, $sessionStorage, $q) {\r\n var service = {\r\n getToken: getToken,\r\n login: login,\r\n loginWithToken: loginWithToken,\r\n storeAuthenticationToken: storeAuthenticationToken,\r\n logout: logout\r\n };\r\n\r\n return service;\r\n\r\n function getToken () {\r\n return $localStorage.authenticationToken || $sessionStorage.authenticationToken;\r\n }\r\n\r\n function toParams(obj) {\r\n var params = [];\r\n\r\n for (var key in obj) {\r\n params.push(key + '=' + encodeURIComponent(obj[key]));\r\n }\r\n\r\n return params.join('&');\r\n }\r\n\r\n function login (credentials) {\r\n var data = {\r\n username: credentials.username,\r\n password: credentials.password,\r\n grant_type: credentials.grant_type\r\n };\r\n\r\n return $http.post('token', toParams(data)).success(authenticateSuccess);\r\n\r\n function authenticateSuccess (data) {\r\n if (angular.isDefined(data.access_token) && data.token_type === 'bearer') {\r\n service.storeAuthenticationToken(data.access_token, credentials.rememberMe);\r\n\r\n return data.access_token;\r\n }\r\n }\r\n }\r\n\r\n function loginWithToken(jwt, rememberMe) {\r\n var deferred = $q.defer();\r\n\r\n if (angular.isDefined(jwt)) {\r\n this.storeAuthenticationToken(jwt, rememberMe);\r\n deferred.resolve(jwt);\r\n } else {\r\n deferred.reject();\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function storeAuthenticationToken(jwt, rememberMe) {\r\n if(rememberMe){\r\n $localStorage.authenticationToken = jwt;\r\n } else {\r\n $sessionStorage.authenticationToken = jwt;\r\n }\r\n }\r\n\r\n function logout () {\r\n delete $localStorage.authenticationToken;\r\n delete $sessionStorage.authenticationToken;\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Activate', Activate);\r\n\r\n Activate.$inject = ['$resource'];\r\n\r\n function Activate ($resource) {\r\n var service = $resource('api/activate', {}, {\r\n 'get': { method: 'GET', params: {}, isArray: false}\r\n });\r\n\r\n return service;\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Account', Account);\r\n\r\n Account.$inject = ['$resource'];\r\n\r\n function Account ($resource) {\r\n var service = $resource('api/account', {}, {\r\n 'get': { method: 'GET', params: {}, isArray: false,\r\n interceptor: {\r\n response: function(response) {\r\n // expose response\r\n return response;\r\n }\r\n }\r\n }\r\n });\r\n\r\n return service;\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('whatsappLink', {\r\n templateUrl: 'app/layouts/whatsappLink/whatsappLink.html',\r\n controllerAs: 'vm',\r\n bindings: {\r\n number: '@',\r\n open: '='\r\n }\r\n });\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('NavbarController', NavbarController);\r\n\r\n NavbarController.$inject = ['$state', 'Auth', 'Principal', 'ProfileService', 'LoginService', '$window', 'CarritoProvider', '$timeout', 'SQLExportDataService'];\r\n\r\n function NavbarController ($state, Auth, Principal, ProfileService, LoginService, $window, CarritoProvider, $timeout, SQLExportDataService) {\r\n var vm = this,\r\n _identitySubscription,\r\n _carritoSubscription;\r\n\r\n function init() {\r\n vm.isNavbarCollapsed = true;\r\n vm.isAuthenticated = Principal.isAuthenticated;\r\n vm.isAdmin = Principal.identity();\r\n vm.pending = 0;\r\n vm.$state = $state;\r\n vm.isAdmin = false;\r\n vm.hasQueries = false;\r\n Principal.identity().then(function (result) {\r\n if(result){\r\n angular.forEach(result.Authorities, function(auth){\r\n if(auth == 'ROLE_ADMIN'){\r\n vm.isAdmin = true;\r\n }\r\n });\r\n }\r\n });\r\n\r\n SQLExportDataService.getHasAnyQuery().then( function (result) {\r\n if (result) {\r\n vm.hasQueries = true;\r\n }\r\n });\r\n\r\n angular.element($window).bind(\"scroll\", function() {\r\n var principalMenuLi = $(\".principal-menu-li\"),\r\n principalMenu = $(\".principal-menu\");\r\n\r\n if (this.pageYOffset >= 52) {\r\n principalMenuLi.addClass('scrolled');\r\n principalMenu.addClass('scrolled');\r\n } else {\r\n principalMenuLi.removeClass('scrolled');\r\n principalMenu.removeClass('scrolled');\r\n }\r\n });\r\n\r\n _identitySubscription = Principal.getIdentitySubject().subscribe(function (value) {\r\n vm.user = value;\r\n });\r\n\r\n _carritoSubscription = CarritoProvider.getCarritoSubject().subscribe(function (value) {\r\n if (vm.pending < value.length) {\r\n $('#carritoNotification').removeClass('bounce');\r\n\r\n $timeout(function () {\r\n $('#carritoNotification').addClass('bounce');\r\n }, 400);\r\n }\r\n\r\n vm.pending = value.length;\r\n });\r\n }\r\n\r\n vm.login = function() {\r\n vm.collapseNavbar();\r\n LoginService.open();\r\n };\r\n\r\n vm.logout = function() {\r\n vm.collapseNavbar();\r\n Auth.logout();\r\n $state.go('home', {},{reload:true});\r\n };\r\n\r\n vm.toggleNavbar = function() {\r\n vm.isNavbarCollapsed = !vm.isNavbarCollapsed;\r\n if(!vm.isNavbarCollapsed) {\r\n document.getElementById('navbar-collapse').style.marginBottom = \"100vh\";\r\n }\r\n else {\r\n document.getElementById('navbar-collapse').style.marginBottom = \"0\";\r\n }\r\n };\r\n\r\n vm.collapseNavbar = function() {\r\n vm.isNavbarCollapsed = true;\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('error', {\r\n parent: 'app',\r\n url: '/error',\r\n data: {\r\n authorities: [],\r\n pageTitle: 'Error page!'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/layouts/error/error.html'\r\n }\r\n }\r\n })\r\n .state('accessdenied', {\r\n parent: 'app',\r\n url: '/accessdenied',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/layouts/error/accessdenied.html'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('CotizadorFlotanteController', CotizadorFlotanteController);\r\n\r\n CotizadorFlotanteController.$inject = [];\r\n\r\n function CotizadorFlotanteController () {\r\n var vm = this;\r\n vm.floatCotizador = true;\r\n\r\n vm.openCotizadorFlotante = function () {\r\n vm.showCotizador = !vm.showCotizador;\r\n \r\n if (vm.showCotizador) {\r\n $(\"body\").addClass(\"modal-open\");\r\n }\r\n else {\r\n $(\"body\").removeClass(\"modal-open\");\r\n }\r\n };\r\n\r\n\r\n function init() {\r\n vm.showCotizador = false;\r\n }\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('home', {\r\n parent: 'app',\r\n url: '/',\r\n params: {\r\n openLogin: false\r\n },\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/home/home.html',\r\n controller: 'HomeController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n auditoresActivos: ['HomeService', function (HomeService) {\r\n return HomeService.queryAuditores();\r\n }],\r\n clientes: ['HomeService', function (HomeService) {\r\n return HomeService.queryClientes();\r\n }],\r\n encuestaContactos: ['HomeService', function (HomeService) {\r\n return HomeService.queryEncuestaContactos();\r\n }],\r\n chartVariables: ['HomeService', function (HomeService) {\r\n return HomeService.queryDashboardVariables(14);\r\n }]\r\n }\r\n },\r\n }\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('HomeService', HomeService);\r\n\r\n HomeService.$inject = ['$q', '$http', 'BACKOFFICE_API_URL'];\r\n\r\n function HomeService ($q, $http, BACKOFFICE_API_URL) {\r\n return {\r\n queryAuditores: queryAuditores,\r\n queryClientes: queryClientes,\r\n queryEncuestaContactos: queryEncuestaContactos,\r\n queryDashboardVariables: queryDashboardVariables\r\n };\r\n\r\n function queryAuditores() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/getAuditoresActivos').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryEncuestaContactos () {\r\n // var deferred = $q.defer();\r\n\r\n // $http.get(BACKOFFICE_API_URL + '/newapi/getestadisticas?limite=60').then(function (response) {\r\n // deferred.resolve(response.data);\r\n // }).catch(function (error) {\r\n // deferred.reject(error);\r\n // });\r\n\r\n // return deferred.promise;\r\n }\r\n\r\n function queryClientes() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/getClientes').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryDashboardVariables(count) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/getChart/'+count).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('HomeController', HomeController);\r\n\r\n HomeController.$inject = ['$scope', 'Principal', 'LoginService', '$state', '$mdDialog', '$interval',\r\n 'auditoresActivos', 'clientes', 'encuestaContactos', 'chartVariables'];\r\n\r\n function HomeController ($scope, Principal, LoginService, $state, $mdDialog, $interval,\r\n auditoresActivos, clientes, encuestaContactos, chartVariables) {\r\n var vm = this;\r\n\r\n // Asingacion de variables\r\n vm.account = null;\r\n vm.isAuthenticated = null;\r\n vm.login = LoginService.open;\r\n vm.login = login;\r\n vm.auditoresActivos = auditoresActivos;\r\n vm.clientes = clientes;\r\n vm.encuestaContactos = encuestaContactos;\r\n vm.resenas;\r\n\r\n vm.fechas = [];\r\n vm.contactos = [];\r\n\r\n angular.forEach(vm.encuestaContactos, function(contacto){\r\n contacto.formatDate = moment(contacto.Fecha).format('D/MMM');\r\n vm.fechas.push(contacto.formatDate);\r\n vm.contactos.push(contacto.Cantidad);\r\n });\r\n\r\n // Asingacion de funciones\r\n vm.register = register;\r\n vm.changeVideo = changeVideo;\r\n\r\n\r\n // Lllamado de funciones\r\n init();\r\n getAccount();\r\n\r\n function login() {\r\n LoginService.open();\r\n }\r\n // Definicion de funciones\r\n function init() {\r\n $scope.$on('authenticationSuccess', function() {\r\n getAccount();\r\n });\r\n\r\n if($state.params.openLogin){\r\n vm.login();\r\n }\r\n\r\n $(document).ready(function () {\r\n $(\"#myModal\").on(\"hidden.bs.modal\", function () {\r\n $(\"#iframeYoutube\").attr(\"src\", \"#\");\r\n })\r\n });\r\n }\r\n\r\n //animation\r\n $interval(function(){\r\n $('#realtimeAuditors').fadeOut(1500);\r\n $('#realtimeClients').fadeOut(1500);\r\n\r\n $('#realtimeAuditors').fadeIn(1500);\r\n $('#realtimeClients').fadeIn(1500);\r\n }, 3000);\r\n\r\n vm.showVideo = function(ev) {\r\n $mdDialog.show({\r\n controller: ['$mdDialog', function DialogController($mdDialog) {\r\n var vm = this;\r\n vm.closeModal = function() {\r\n $mdDialog.hide();\r\n }\r\n }],\r\n template: '
' +\r\n '' +\r\n '' +\r\n '
',\r\n parent: angular.element(document.body),\r\n targetEvent: ev,\r\n clickOutsideToClose:true,\r\n controllerAs:'vm',\r\n });\r\n };\r\n\r\n vm.closeModal = function() {\r\n $mdDialog.hide();\r\n };\r\n\r\n function getAccount() {\r\n Principal.identity().then(function(account) {\r\n vm.account = account;\r\n vm.isAuthenticated = Principal.isAuthenticated();\r\n });\r\n }\r\n\r\n function register () {\r\n $state.go('register');\r\n }\r\n\r\n function changeVideo() {\r\n var iframe = document.getElementById(\"iframeYoutube\");\r\n iframe.src = \"https://www.youtube.com/embed/FN--MpnF1EY?rel=0&controls=0&showinfo=0?ecver=1\";\r\n\r\n $(\"#myModal\").modal(\"show\");\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('entity', {\r\n abstract: true,\r\n parent: 'app'\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .filter('words', words);\r\n\r\n function words() {\r\n return wordsFilter;\r\n\r\n function wordsFilter(input, words) {\r\n if (isNaN(words)) {\r\n return input;\r\n }\r\n if (words <= 0) {\r\n return '';\r\n }\r\n if (input) {\r\n var inputWords = input.split(/\\s+/);\r\n if (inputWords.length > words) {\r\n input = inputWords.slice(0, words).join(' ') + '...';\r\n }\r\n }\r\n return input;\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .filter('characters', characters);\r\n\r\n function characters () {\r\n return charactersFilter;\r\n\r\n function charactersFilter(input, chars, breakOnWord) {\r\n if (isNaN(chars)) {\r\n return input;\r\n }\r\n if (chars <= 0) {\r\n return '';\r\n }\r\n if (input && input.length > chars) {\r\n input = input.substring(0, chars);\r\n\r\n if (!breakOnWord) {\r\n var lastspace = input.lastIndexOf(' ');\r\n // Get last space\r\n if (lastspace !== -1) {\r\n input = input.substr(0, lastspace);\r\n }\r\n } else {\r\n while (input.charAt(input.length-1) === ' ') {\r\n input = input.substr(0, input.length - 1);\r\n }\r\n }\r\n return input + '...';\r\n }\r\n return input;\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('jhSortBy', jhSortBy);\r\n\r\n function jhSortBy() {\r\n var directive = {\r\n restrict: 'A',\r\n scope: false,\r\n require: '^jhSort',\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc(scope, element, attrs, parentCtrl) {\r\n element.bind('click', function () {\r\n parentCtrl.sort(attrs.jhSortBy);\r\n });\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('jhSort', jhSort);\r\n\r\n function jhSort () {\r\n var directive = {\r\n restrict: 'A',\r\n scope: {\r\n predicate: '=jhSort',\r\n ascending: '=',\r\n callback: '&'\r\n },\r\n controller: SortController,\r\n controllerAs: 'vm',\r\n bindToController: true\r\n };\r\n\r\n return directive;\r\n }\r\n\r\n SortController.$inject = ['$scope', '$element'];\r\n\r\n function SortController ($scope, $element) {\r\n var vm = this;\r\n\r\n vm.applyClass = applyClass;\r\n vm.resetClasses = resetClasses;\r\n vm.sort = sort;\r\n vm.triggerApply = triggerApply;\r\n\r\n $scope.$watchGroup(['vm.predicate', 'vm.ascending'], vm.triggerApply);\r\n vm.triggerApply();\r\n\r\n function applyClass (element) {\r\n var thisIcon = element.find('span.glyphicon'),\r\n sortIcon = 'glyphicon-sort',\r\n sortAsc = 'glyphicon-sort-by-attributes',\r\n sortDesc = 'glyphicon-sort-by-attributes-alt',\r\n remove = sortIcon + ' ' + sortDesc,\r\n add = sortAsc;\r\n if (!vm.ascending) {\r\n remove = sortIcon + ' ' + sortAsc;\r\n add = sortDesc;\r\n }\r\n vm.resetClasses();\r\n thisIcon.removeClass(remove);\r\n thisIcon.addClass(add);\r\n }\r\n\r\n function resetClasses () {\r\n var allThIcons = $element.find('span.glyphicon'),\r\n sortIcon = 'glyphicon-sort',\r\n sortAsc = 'glyphicon-sort-by-attributes',\r\n sortDesc = 'glyphicon-sort-by-attributes-alt';\r\n allThIcons.removeClass(sortAsc + ' ' + sortDesc);\r\n allThIcons.addClass(sortIcon);\r\n }\r\n\r\n function sort (field) {\r\n if (field !== vm.predicate) {\r\n vm.ascending = true;\r\n } else {\r\n vm.ascending = !vm.ascending;\r\n }\r\n vm.predicate = field;\r\n $scope.$apply();\r\n vm.callback();\r\n }\r\n\r\n function triggerApply (values) {\r\n vm.resetClasses();\r\n if (values && values[0] !== '_score') {\r\n vm.applyClass($element.find('th[jh-sort-by=\\'' + values[0] + '\\']'));\r\n }\r\n }\r\n }\r\n})();\r\n\n(function(){\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('ParseLinks', ParseLinks);\r\n\r\n function ParseLinks () {\r\n\r\n var service = {\r\n parse : parse\r\n };\r\n\r\n return service;\r\n\r\n function parse(header) {\r\n if (header.length === 0) {\r\n throw new Error('input must not be of zero length');\r\n }\r\n\r\n // Split parts by comma\r\n var parts = header.split(',');\r\n var links = {};\r\n // Parse each part into a named link\r\n angular.forEach(parts, function(p) {\r\n var section = p.split('>;');\r\n if (section.length !== 2) {\r\n throw new Error('section could not be split on \">;\"');\r\n }\r\n var url = section[0].replace(/<(.*)/, '$1').trim();\r\n var queryString = {};\r\n url.replace(\r\n new RegExp('([^?=&]+)(=([^&]*))?', 'g'),\r\n function($0, $1, $2, $3) { queryString[$1] = $3; }\r\n );\r\n var page = queryString.page;\r\n if (angular.isString(page)) {\r\n page = parseInt(page);\r\n }\r\n var name = section[1].replace(/rel=\"(.*)\"/, '$1').trim();\r\n links[name] = page;\r\n });\r\n return links;\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('PaginationUtil', PaginationUtil);\r\n\r\n function PaginationUtil () {\r\n\r\n var service = {\r\n parseAscending : parseAscending,\r\n parsePage : parsePage,\r\n parsePredicate : parsePredicate\r\n };\r\n\r\n return service;\r\n\r\n function parseAscending (sort) {\r\n var sortArray = sort.split(',');\r\n if (sortArray.length > 1){\r\n return sort.split(',').slice(-1)[0] === 'asc';\r\n } else {\r\n // default to true if no sort defined\r\n return true;\r\n }\r\n }\r\n\r\n // query params are strings, and need to be parsed\r\n function parsePage (page) {\r\n return parseInt(page);\r\n }\r\n\r\n // sort can be in the format `id,asc` or `id`\r\n function parsePredicate (sort) {\r\n var sortArray = sort.split(',');\r\n if (sortArray.length > 1){\r\n sortArray.pop();\r\n }\r\n return sortArray.join(',');\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n var jhiItemCount = {\r\n template: '
' +\r\n 'Showing {{(($ctrl.page - 1) * $ctrl.itemsPerPage) == 0 ? 1 : (($ctrl.page - 1) * $ctrl.itemsPerPage + 1)}} - ' +\r\n '{{($ctrl.page * $ctrl.itemsPerPage) < $ctrl.queryCount ? ($ctrl.page * $ctrl.itemsPerPage) : $ctrl.queryCount}} ' +\r\n 'of {{$ctrl.queryCount}} items.' +\r\n '
',\r\n bindings: {\r\n page: '<',\r\n queryCount: ''\r\n );\r\n }\r\n\r\n function toBase64 (file, cb) {\r\n var fileReader = new FileReader();\r\n fileReader.readAsDataURL(file);\r\n fileReader.onload = function (e) {\r\n var base64Data = e.target.result.substr(e.target.result.indexOf('base64,') + 'base64,'.length);\r\n cb(base64Data);\r\n };\r\n }\r\n }\r\n})();\r\n\n\r\n( function( window ) {\r\n\r\n'use strict';\r\n\r\nfunction classReg( className ) {\r\n return new RegExp(\"(^|\\\\s+)\" + className + \"(\\\\s+|$)\");\r\n}\r\nvar hasClass, addClass, removeClass;\r\n\r\nif ( 'classList' in document.documentElement ) {\r\n hasClass = function( elem, c ) {\r\n return elem.classList.contains( c );\r\n };\r\n addClass = function( elem, c ) {\r\n elem.classList.add( c );\r\n };\r\n removeClass = function( elem, c ) {\r\n elem.classList.remove( c );\r\n };\r\n}\r\nelse {\r\n hasClass = function( elem, c ) {\r\n return classReg( c ).test( elem.className );\r\n };\r\n addClass = function( elem, c ) {\r\n if ( !hasClass( elem, c ) ) {\r\n elem.className = elem.className + ' ' + c;\r\n }\r\n };\r\n removeClass = function( elem, c ) {\r\n elem.className = elem.className.replace( classReg( c ), ' ' );\r\n };\r\n}\r\n\r\nfunction toggleClass( elem, c ) {\r\n var fn = hasClass( elem, c ) ? removeClass : addClass;\r\n fn( elem, c );\r\n}\r\n\r\nvar classie = {\r\n\r\n hasClass: hasClass,\r\n addClass: addClass,\r\n removeClass: removeClass,\r\n toggleClass: toggleClass,\r\n\r\n has: hasClass,\r\n add: addClass,\r\n remove: removeClass,\r\n toggle: toggleClass\r\n};\r\n\r\n\r\nif ( typeof define === 'function' && define.amd ) {\r\n\r\n define( classie );\r\n} else {\r\n\r\n window.classie = classie;\r\n}\r\n\r\n})( window );\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .filter('capitalize', capitalize);\r\n\r\n function capitalize() {\r\n return capitalizeFilter;\r\n\r\n function capitalizeFilter (input) {\r\n if (input !== null) {\r\n input = input.toLowerCase();\r\n input = input.substring(0, 1).toUpperCase() + input.substring(1);\r\n }\r\n return input;\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n /*jshint bitwise: false*/\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('Base64', Base64);\r\n\r\n function Base64 () {\r\n var keyStr = 'ABCDEFGHIJKLMNOP' +\r\n 'QRSTUVWXYZabcdef' +\r\n 'ghijklmnopqrstuv' +\r\n 'wxyz0123456789+/' +\r\n '=';\r\n\r\n var service = {\r\n decode : decode,\r\n encode : encode\r\n };\r\n\r\n return service;\r\n\r\n function encode (input) {\r\n var output = '',\r\n chr1, chr2, chr3,\r\n enc1, enc2, enc3, enc4,\r\n i = 0;\r\n\r\n while (i < input.length) {\r\n chr1 = input.charCodeAt(i++);\r\n chr2 = input.charCodeAt(i++);\r\n chr3 = input.charCodeAt(i++);\r\n\r\n enc1 = chr1 >> 2;\r\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\r\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\r\n enc4 = chr3 & 63;\r\n\r\n if (isNaN(chr2)) {\r\n enc3 = enc4 = 64;\r\n } else if (isNaN(chr3)) {\r\n enc4 = 64;\r\n }\r\n\r\n output = output +\r\n keyStr.charAt(enc1) +\r\n keyStr.charAt(enc2) +\r\n keyStr.charAt(enc3) +\r\n keyStr.charAt(enc4);\r\n }\r\n\r\n return output;\r\n }\r\n\r\n function decode (input) {\r\n var output = '',\r\n chr1, chr2, chr3,\r\n enc1, enc2, enc3, enc4,\r\n i = 0;\r\n\r\n // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\r\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\r\n\r\n while (i < input.length) {\r\n enc1 = keyStr.indexOf(input.charAt(i++));\r\n enc2 = keyStr.indexOf(input.charAt(i++));\r\n enc3 = keyStr.indexOf(input.charAt(i++));\r\n enc4 = keyStr.indexOf(input.charAt(i++));\r\n\r\n chr1 = (enc1 << 2) | (enc2 >> 4);\r\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\r\n chr3 = ((enc3 & 3) << 6) | enc4;\r\n\r\n output = output + String.fromCharCode(chr1);\r\n\r\n if (enc3 !== 64) {\r\n output = output + String.fromCharCode(chr2);\r\n }\r\n if (enc4 !== 64) {\r\n output = output + String.fromCharCode(chr3);\r\n }\r\n }\r\n\r\n return output;\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UbicacionEncuestaClienteSaveLocationsDialogController', UbicacionEncuestaClienteSaveLocationsDialogController);\r\n\r\n UbicacionEncuestaClienteSaveLocationsDialogController.$inject = ['$uibModalInstance', 'ubicacions', '$http'];\r\n\r\n function UbicacionEncuestaClienteSaveLocationsDialogController ($uibModalInstance, ubicacions, $http) {\r\n var vm = this;\r\n\r\n vm.ubicacionLista = {}\r\n vm.ubicacionLista.Ubicacions = ubicacions\r\n\r\n vm.clear = function () {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.save = function () {\r\n angular.forEach(vm.ubicacionLista.Ubicacions, function(ubicacion){\r\n ubicacion.Latitud = ubicacion.Pos[0];\r\n ubicacion.Longitud = ubicacion.Pos[1];\r\n });\r\n \r\n $http.post('api/ubicacionListas', vm.ubicacionLista).then(function(response){\r\n $uibModalInstance.close('ok');\r\n }).catch(function (error) {\r\n console.log(error);\r\n });\r\n };\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('UbicacionEncuestaClienteLocationsService', UbicacionEncuestaClienteLocationsService);\r\n\r\n UbicacionEncuestaClienteLocationsService.$inject = ['$q', '$http'];\r\n\r\n function UbicacionEncuestaClienteLocationsService ($q, $http) {\r\n return {\r\n queryCadenasLists: queryCadenasLists,\r\n queryTiendasLists: queryTiendasLists,\r\n queryEstadosLists: queryEstadosLists,\r\n queryMunicipiosLists: queryMunicipiosLists,\r\n queryListsByFilter : queryListsByFilter\r\n };\r\n\r\n function queryCadenasLists() {\r\n var deferred = $q.defer();\r\n $http.get('api/ubicacion/filter/findAllCadenas').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function queryTiendasLists() {\r\n var deferred = $q.defer();\r\n $http.get('api/ubicacion/filter/findAllTiendas').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n function queryEstadosLists() {\r\n var deferred = $q.defer();\r\n $http.get('api/ubicacion/filter/findAllEstados').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n return deferred.promise;\r\n }\r\n function queryMunicipiosLists() {\r\n var deferred = $q.defer();\r\n $http.get('api/ubicacion/filter/findAllMinicipios').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n return deferred.promise;\r\n }\r\n function queryListsByFilter(filtros) {\r\n var deferred = $q.defer();\r\n console.log(filtros);\r\n $http.get('api/ubicacion/filter/findListsByFilter?Cadena='+filtros.Cadena+'&Tienda='+filtros.Tienda+'&Estado='+filtros.Estado+'&Municipio='+filtros.Municipio).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n return deferred.promise;\r\n }\r\n\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UbicacionEncuestaClienteLocationsController', UbicacionEncuestaClienteLocationsController);\r\n\r\n UbicacionEncuestaClienteLocationsController.$inject = ['$uibModalInstance', 'defaultList', 'CadenasList', 'TiendasList', 'EstadosList', 'MunicipiosList', 'UbicacionEncuestaClienteLocationsService', 'isDefault'];\r\n\r\n function UbicacionEncuestaClienteLocationsController($uibModalInstance, defaultList, CadenasList, TiendasList, EstadosList, MunicipiosList, UbicacionEncuestaClienteLocationsService, isDefault) {\r\n var vm = this;\r\n vm.clear = clear;\r\n vm.select = select;\r\n vm.selectUbicaciones = selectUbicaciones;\r\n\r\n vm.listVisible = true;\r\n vm.isPlaceholder = true;\r\n vm.selected = '';\r\n vm.isDefault = isDefault;\r\n\r\n vm.listaSelect = [];\r\n vm.ubicacionesSelect = [];\r\n vm.listaDefault = defaultList;\r\n vm.listasUbi = null;\r\n vm.selectedCadena = '';\r\n vm.selectedTiendas = '';\r\n vm.selectedEstados = '';\r\n vm.selectedMunicipios = '';\r\n\r\n\r\n vm.Cadenas = CadenasList.Cadenas;\r\n vm.Tiendas = TiendasList.Tiendas;\r\n vm.Estados = EstadosList.Estados;\r\n vm.Municipios = MunicipiosList.Municipios;\r\n\r\n console.log(CadenasList);\r\n console.log(TiendasList);\r\n console.log(EstadosList);\r\n console.log(MunicipiosList);\r\n\r\n if(isDefault) {\r\n if (vm.Cadenas.length === 0) {\r\n vm.Cadenas = [\"NO HAY CADENAS\"];\r\n }\r\n if (vm.Tiendas.length === 0) {\r\n vm.Tiendas = [\"NO HAY TIENDAS\"];\r\n }\r\n if (vm.Estados.length === 0) {\r\n vm.Estados = [\"NO HAY ESTADOS\"];\r\n }\r\n if (vm.Municipios.length === 0) {\r\n vm.Municipios = [\"NO HAY MUNICIPIOS\"];\r\n }\r\n }\r\n\r\n function select(){\r\n var filtros = {Cadena: vm.selectedCadena, Tienda: vm.selectedTiendas, Estado:vm.selectedEstados, Municipio: vm.selectedMunicipios};\r\n UbicacionEncuestaClienteLocationsService.queryListsByFilter(filtros).then(function (result) {\r\n vm.listasUbi = result;\r\n angular.forEach(vm.listasUbi, function(value, key){\r\n vm.listaSelect.push(false);\r\n });\r\n });\r\n }\r\n\r\n function selectUbicaciones(){\r\n vm.ubicacionesSelect = [];\r\n angular.forEach(vm.listaSelect, function(value, key){\r\n if(value === true){\r\n vm.ubicacionesSelect.push(vm.listasUbi[key]);\r\n }\r\n });\r\n var list = {\r\n Nombre: \"Lista Default\",\r\n Descripcion: null,\r\n Ubicacions: vm.ubicacionesSelect,\r\n Id: 0,\r\n $$hashKey: \"object:451\"};\r\n vm.selectList(list);\r\n }\r\n\r\n vm.selectList = function(list){\r\n console.log(list);\r\n $uibModalInstance.close(list)\r\n };\r\n\r\n function clear () {\r\n $uibModalInstance.dismiss();\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('UbicacionEncuestaService', UbicacionEncuestaService);\r\n\r\n UbicacionEncuestaService.$inject = ['$q', '$http'];\r\n\r\n function UbicacionEncuestaService ($q, $http) {\r\n return {\r\n queryDefaultLists: queryDefaultLists,\r\n queryUserLists: queryUserLists\r\n };\r\n\r\n function queryDefaultLists() {\r\n var deferred = $q.defer();\r\n $http.get('api/ubicacionListas/default').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n \r\n return deferred.promise;\r\n }\r\n\r\n function queryUserLists() {\r\n var deferred = $q.defer();\r\n $http.get('api/ubicacionListas').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('ubicacionEncuestaCliente', {\r\n templateUrl: 'app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente.html',\r\n controller: 'UbicacionEncuestaClienteController',\r\n controllerAs: 'vm',\r\n bindings: {\r\n encuesta: '=',\r\n changeTab: '&'\r\n }\r\n });\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UbicacionEncuestaClienteController', UbicacionEncuestaClienteController);\r\n\r\n UbicacionEncuestaClienteController.$inject = ['$rootScope', 'NgMap', '$timeout', '$uibModal',\r\n 'UbicacionEncuestaService','UbicacionEncuestaClienteLocationsService', '$mdDialog', '$scope', '$q'];\r\n\r\n function UbicacionEncuestaClienteController($rootScope, NgMap, $timeout, $uibModal,\r\n UbicacionEncuestaService, UbicacionEncuestaClienteLocationsService, $mdDialog, $scope, $q) {\r\n var vm = this;\r\n\r\n vm.validateForm = validateForm;\r\n vm.confirmEncuesta = confirmEncuesta;\r\n vm.exportTableToExcel = exportTableToExcel;\r\n vm.cargarTabla = cargarTabla;\r\n vm.descargarTabla = descargarTabla;\r\n vm.descargarTemplete = descargarTemplete;\r\n vm.topPage = topPage;\r\n\r\n vm.isLoading = false;\r\n vm.encuesta.Ubicaciones = [];\r\n vm.encuesta.CantidadContactos = 0;\r\n vm.mostrarTabla = false;\r\n //Setea la posicion del mapa al inciarlo, en Mexico.\r\n vm.center = [19.41, -99.14];\r\n\r\n vm.arregloExcel = [{\r\n Canal: '',\r\n Cadena: '',\r\n Formato: '',\r\n Tienda: '',\r\n CodigoTienda: '',\r\n Latitud: '',\r\n Longitud: '',\r\n Calle: '',\r\n Estado: '',\r\n Municipio: '',\r\n DescTRM: ''\r\n }];\r\n\r\n vm.templete = [{\r\n Canal: '',\r\n Cadena: '',\r\n Formato: '',\r\n Tienda: '',\r\n CodigoTienda: '',\r\n Latitud: '',\r\n Longitud: '',\r\n Calle: '',\r\n Estado: '',\r\n Municipio: '',\r\n DescTRM: ''\r\n }];\r\n\r\n $scope.$watch('vm.encuesta.Ubicaciones', function () {\r\n NgMap.getMap().then(function (map) {\r\n vm.map = map;\r\n });\r\n });\r\n\r\n NgMap.getMap().then(function (map) {\r\n vm.map = map;\r\n });\r\n\r\n vm.zoomOut = function () {\r\n if (window.matchMedia(\"(max-width: 767px)\").matches) {\r\n vm.map.setZoom(4);\r\n vm.map.setCenter(new google.maps.LatLng(19.41, -99.14));\r\n }\r\n else {\r\n vm.map.setZoom(5);\r\n vm.map.setCenter(new google.maps.LatLng(19.41, -99.14));\r\n }\r\n };\r\n\r\n vm.getpos = function (event) {\r\n vm.lat = event.latLng.lat();\r\n vm.lng = event.latLng.lng();\r\n vm.latlng = [event.latLng.lat(), event.latLng.lng()];\r\n };\r\n\r\n\r\n vm.addMarker = function (event) {\r\n var ll = event.latLng;\r\n var lat = ll.lat();\r\n var lng = ll.lng();\r\n\r\n vm.getReverseGeocodingData(lat, lng);\r\n };\r\n\r\n vm.placeChanged = function () {\r\n vm.place = this.getPlace();\r\n };\r\n\r\n vm.addLocationToList = function () {\r\n var isPlace = false;\r\n var nuevaUbicacion = {\r\n Pos: [vm.place.geometry.location.lat(), vm.place.geometry.location.lng()],\r\n Nombre: vm.address,\r\n RadioCobertura: 1\r\n }\r\n\r\n vm.center = nuevaUbicacion.Pos;\r\n angular.forEach(vm.place.types, function (type) {\r\n if (!isPlace) {\r\n if (type === 'locality' || type === 'political') {\r\n nuevaUbicacion.Tipo = 'state';\r\n nuevaUbicacion.CantidadContactos = 0;\r\n isPlace = true;\r\n } else {\r\n nuevaUbicacion.CantidadContactos = 1;\r\n nuevaUbicacion.Tipo = 'place';\r\n }\r\n }\r\n });\r\n if (nuevaUbicacion.Tipo === 'place') {\r\n vm.encuesta.CantidadContactos += 1;\r\n }\r\n\r\n vm.encuesta.Ubicaciones.push(nuevaUbicacion);\r\n vm.cargarTabla();\r\n NgMap.getMap().then(function (map) {\r\n vm.map = map;\r\n });\r\n vm.address = null;\r\n };\r\n\r\n //Funcion que regresa dirección cuando recibe como parámetros latitud y longitud\r\n vm.getReverseGeocodingData = function (lat, lng) {\r\n var exit = false;\r\n var markerData;\r\n var latlng = new google.maps.LatLng(lat, lng);\r\n var posString = [lat, lng];\r\n // Aca se obtiene la direccion.\r\n var geocoder = new google.maps.Geocoder();\r\n\r\n geocoder.geocode({'latLng': latlng}, function (results, status) {\r\n if (status !== google.maps.GeocoderStatus.OK) {\r\n console.log(\"ok\");\r\n $timeout(function () {\r\n vm.getReverseGeocodingData(lat, lng);\r\n }, 300);\r\n exit = true;\r\n }\r\n\r\n if (!exit) {\r\n var isPlace = false;\r\n // This is checking to see if the Geoeode Status is OK before proceeding\r\n if (status == google.maps.GeocoderStatus.OK) {\r\n results[0].formatted_address;\r\n var address = (results[0].formatted_address);\r\n markerData = {\r\n \"Nombre\": address,\r\n \"Pos\": posString,\r\n \"NombreLista\": '',\r\n \"Estado\": '',\r\n \"RadioCobertura\": 1\r\n }\r\n\r\n angular.forEach(results[0].types, function (type) {\r\n if (!isPlace) {\r\n if (type === 'locality' || type === 'political') {\r\n markerData.Tipo = 'state';\r\n isPlace = true;\r\n } else {\r\n markerData.Tipo = 'place';\r\n }\r\n }\r\n });\r\n if (markerData.Tipo === 'place') {\r\n markerData.CantidadContactos = 1;\r\n vm.encuesta.CantidadContactos += 1;\r\n }\r\n\r\n vm.encuesta.Ubicaciones.push(markerData);\r\n }\r\n\r\n if (vm.encuesta.Ubicaciones.length > 0) {\r\n vm.isAddressEmpty = false;\r\n }\r\n\r\n NgMap.getMap().then(function (map) {\r\n vm.map = map;\r\n });\r\n cargarTabla();\r\n }\r\n });\r\n };\r\n\r\n vm.showDeleteConfirmation = function (ev) {\r\n // Modal para borrar toda la lista.\r\n var confirm = $mdDialog.confirm()\r\n .title('¿Desea borrar todas las localidades de la lista?')\r\n .ok('Si')\r\n .cancel('Cancelar');\r\n\r\n $mdDialog.show(confirm).then(function () {\r\n vm.encuesta.Ubicaciones = [];\r\n }, function () {\r\n\r\n });\r\n };\r\n\r\n var isDefaultList = false;\r\n vm.showDefaultLists = function () {\r\n isDefaultList = true;\r\n showLocationLists();\r\n };\r\n\r\n vm.showUserLists = function () {\r\n isDefaultList = false;\r\n showLocationLists();\r\n };\r\n\r\n vm.setContacts = function () {\r\n vm.encuesta.CantidadContactos = 0;\r\n angular.forEach(vm.encuesta.Ubicaciones, function (ubicacion) {\r\n vm.encuesta.CantidadContactos += ubicacion.CantidadContactos;\r\n });\r\n };\r\n\r\n var showLocationLists = function () {\r\n $uibModal.open({\r\n templateUrl: 'app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente-locations.html',\r\n controller: 'UbicacionEncuestaClienteLocationsController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n isDefault: isDefaultList,\r\n defaultList: ['UbicacionEncuestaService', function (UbicacionEncuestaService) {\r\n var list;\r\n if (isDefaultList) {\r\n list = UbicacionEncuestaService.queryDefaultLists();\r\n } else {\r\n list = UbicacionEncuestaService.queryUserLists();\r\n }\r\n return list;\r\n }],\r\n CadenasList: ['UbicacionEncuestaClienteLocationsService', function (UbicacionEncuestaClienteLocationsService) {\r\n var deferred = $q.defer();\r\n isDefaultList = true;\r\n if (isDefaultList) {\r\n var lista = UbicacionEncuestaClienteLocationsService.queryCadenasLists();\r\n return lista;\r\n } else {\r\n deferred.resolve(null);\r\n return deferred;\r\n }\r\n }],\r\n TiendasList: ['UbicacionEncuestaClienteLocationsService', function (UbicacionEncuestaClienteLocationsService) {\r\n var deferred = $q.defer();\r\n if (isDefaultList) {\r\n var lista = UbicacionEncuestaClienteLocationsService.queryTiendasLists();\r\n return lista;\r\n } else {\r\n deferred.resolve(null);\r\n }\r\n return deferred;\r\n }],\r\n EstadosList: ['UbicacionEncuestaClienteLocationsService', function (UbicacionEncuestaClienteLocationsService) {\r\n var deferred = $q.defer();\r\n if (isDefaultList) {\r\n var lista = UbicacionEncuestaClienteLocationsService.queryEstadosLists();\r\n return lista;\r\n } else {\r\n deferred.resolve(null);\r\n }\r\n return deferred;\r\n\r\n }],\r\n MunicipiosList: ['UbicacionEncuestaClienteLocationsService', function (UbicacionEncuestaClienteLocationsService) {\r\n var deferred = $q.defer();\r\n if (isDefaultList) {\r\n var lista = UbicacionEncuestaClienteLocationsService.queryMunicipiosLists();\r\n return lista;\r\n } else {\r\n deferred.resolve(null);\r\n }\r\n return deferred;\r\n }]\r\n }\r\n }).result.then(function (result) {\r\n vm.encuesta.Ubicaciones.length = 0;\r\n if (Ubicaciones) {\r\n Ubicaciones.length = 0;\r\n }\r\n var Ubicaciones = result.Ubicacions;\r\n vm.encuesta.Ubicaciones.options = {\r\n floor: 0,\r\n ceil: Ubicaciones.length,\r\n showSelectionBar: true,\r\n selectionBarGradient: {\r\n from: '#b0b3d6',\r\n to: '#001b56'\r\n }\r\n };\r\n vm.maxUbicaciones = Ubicaciones.length;\r\n vm.isLoading = true;\r\n angular.forEach(Ubicaciones, function (ubicacion) {\r\n ubicacion.Pos = [];\r\n ubicacion.Pos[0] = ubicacion.Latitud;\r\n ubicacion.Pos[1] = ubicacion.Longitud;\r\n vm.getReverseGeocodingData(ubicacion.Latitud, ubicacion.Longitud);\r\n });\r\n $scope.$watch('vm.encuesta.Ubicaciones.length', function () {\r\n if (vm.encuesta.Ubicaciones.length === vm.maxUbicaciones) {\r\n vm.isLoading = false;\r\n }\r\n });\r\n });\r\n };\r\n\r\n vm.removeLocation = function (index) {\r\n vm.encuesta.Ubicaciones.splice(index, 1);\r\n cargarTabla();\r\n };\r\n\r\n vm.saveLocationLists = function () {\r\n $uibModal.open({\r\n templateUrl: 'app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente-save-locations-dialog.html',\r\n controller: 'UbicacionEncuestaClienteSaveLocationsDialogController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n ubicacions: [function () {\r\n return vm.encuesta.Ubicaciones;\r\n }]\r\n }\r\n });\r\n cargarTabla();\r\n };\r\n\r\n vm.setDefaultRadio = function () {\r\n angular.forEach(vm.encuesta.Ubicaciones, function (ubicacion) {\r\n ubicacion.RadioCobertura = vm.defaultRadioValue;\r\n });\r\n };\r\n\r\n vm.borrar = function () {\r\n if (vm.encuesta.Ubicaciones.length === 0) {\r\n vm.encuesta.Ubicaciones = [];\r\n }\r\n };\r\n\r\n function confirmEncuesta() {\r\n $('html, body').animate({scrollTop: 0}, 'slow');\r\n if (vm.validateForm()) {\r\n $rootScope.changeToFinal();\r\n }\r\n };\r\n\r\n function validateForm() {\r\n return true;\r\n };\r\n\r\n function exportTableToExcel(){\r\n vm.cargarTabla();\r\n vm.descargarTabla();\r\n }\r\n\r\n function descargarTemplete() {\r\n var downloadLink;\r\n var datatype = \"text/plain;charset=utf-8;\";\r\n var tableSelect = document.getElementById('downloadTemplete');\r\n var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');\r\n // Specify file name\r\n var filename = 'ubicaciones';\r\n filename = filename?filename+'.xls':'excel_data.xls';\r\n // Create download link element\r\n downloadLink = document.createElement(\"a\");\r\n document.body.appendChild(downloadLink);\r\n if(navigator.msSaveOrOpenBlob){\r\n var blob = new Blob(['\\ufeff', tableHTML], {\r\n type: datatype\r\n });\r\n navigator.msSaveOrOpenBlob( blob, filename);\r\n }else{\r\n // Create a link to the file\r\n downloadLink.href = 'data:' + datatype + ', ' + tableHTML;\r\n // Setting the file name\r\n downloadLink.download = filename;\r\n //triggering the function\r\n downloadLink.click();\r\n }\r\n }\r\n\r\n function descargarTabla(){\r\n var downloadLink;\r\n var dataType = 'application/vnd.ms-excel';\r\n var tableSelect = document.getElementById('exportable');\r\n\r\n var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');\r\n\r\n // Specify file name\r\n var filename = 'ubicaciones';\r\n filename = filename?filename+'.xls':'excel_data.xls';\r\n\r\n // Create download link element\r\n downloadLink = document.createElement(\"a\");\r\n\r\n document.body.appendChild(downloadLink);\r\n\r\n if(navigator.msSaveOrOpenBlob){\r\n var blob = new Blob(['\\ufeff', tableHTML], {\r\n type: dataType\r\n });\r\n navigator.msSaveOrOpenBlob( blob, filename);\r\n }else{\r\n // Create a link to the file\r\n downloadLink.href = 'data:' + dataType + ', ' + tableHTML;\r\n\r\n // Setting the file name\r\n downloadLink.download = filename;\r\n\r\n //triggering the function\r\n downloadLink.click();\r\n }\r\n }\r\n\r\n function cargarTabla() {\r\n vm.arregloExcel = [];\r\n angular.forEach(vm.encuesta.Ubicaciones, function(value, key){\r\n vm.arregloExcel.push({\r\n Canal: '',\r\n Cadena: '',\r\n Formato: '',\r\n Tienda: value.Nombre,\r\n CodigoTienda: '',\r\n Latitud: value.Pos[0],\r\n Longitud: value.Pos[1],\r\n Calle: '',\r\n Estado: '',\r\n Municipio: '',\r\n DescTRM: ''\r\n });\r\n });\r\n }\r\n\r\n function topPage() {\r\n document.body.scrollTop = document.documentElement.scrollTop = 0;\r\n }\r\n } \r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('sQLExportData', {\r\n parent: 'app',\r\n url: '/sql-export-data',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/sQLExportData/sQLExportData.html',\r\n controller: 'SQLExportDataController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n queries : ['SQLExportDataService', function (SQLExportDataService) {\r\n return SQLExportDataService.get();\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('SQLExportDataService', SQLExportDataService);\r\n\r\n SQLExportDataService.$inject = ['$q', '$http', 'API_URL', '$window'];\r\n\r\n function SQLExportDataService ($q, $http, API_URL, $window) {\r\n return {\r\n get: get,\r\n runQuery: runQuery,\r\n getHasAnyQuery: getHasAnyQuery\r\n };\r\n\r\n function get() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/sqlexportdata/').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getHasAnyQuery() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/sqlexportdata/hasAnyQuery').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function runQuery(queryId, tipo) {\r\n var d = $q.defer();\r\n $http.get('api/sqlexportdata/run/' + queryId + '/tipo/' + tipo).then(function (response) {\r\n d.resolve(response);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n return d.promise;\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('SQLExportDataController', SQLExportDataController);\r\n\r\n SQLExportDataController.$inject = ['queries', '$uibModal', '$state', 'SQLExportDataService'];\r\n\r\n function SQLExportDataController (queries, $uibModal, $state, SQLExportDataService) {\r\n var vm = this;\r\n\r\n vm.queries = [];\r\n\r\n function init () \r\n {\r\n vm.queries = queries;\r\n }\r\n\r\n vm.runQuery = function (id, tipo) {\r\n var a = document.createElement(\"a\");\r\n document.body.appendChild(a);\r\n SQLExportDataService.runQuery(id, tipo).then(function(response) {\r\n var headers = response.headers();\r\n var contentType = headers['content-type'];\r\n var contentDisposition = response.headers('Content-Disposition');\r\n var filename = contentDisposition.split(';')[1].split('filename')[1].split('=')[1].trim();\r\n var data = tipo == 0 ? JSON.stringify(response.data) : response.data;\r\n var file = new Blob([data], {\r\n type: contentType+ ';charset=utf-8'\r\n });\r\n var fileURL = window.URL.createObjectURL(file);\r\n a.href = fileURL;\r\n a.download = filename;\r\n a.click();\r\n });\r\n }\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('resultEncuestaCliente', {\r\n parent: 'app',\r\n url: '/results/{id}/{displayOnly}',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/resultEncuestaCliente/resultEncuestaCliente.html',\r\n controller: 'ResultsEncuestasClienteController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ResultsEncuestasClienteController', ResultsEncuestasClienteController);\r\n\r\n ResultsEncuestasClienteController.$inject = ['$scope', '$stateParams', '$sce',\r\n '$http', 'BACKOFFICE_API_URL', '$uibModal', 'EncuestasClienteService', 'Principal', '$timeout', 'NgMap', '$interval'];\r\n\r\n function ResultsEncuestasClienteController ($scope, $stateParams, $sce, $http,\r\n BACKOFFICE_API_URL, $uibModal, EncuestasClienteService, Principal, $timeout, NgMap, $interval) {\r\n //init variables\r\n var vm = this;\r\n vm.clear = clear;\r\n vm.page = 0;\r\n vm.firstLoad = true;\r\n vm.instance = 0;\r\n vm.encuestaResults = {};\r\n var aprobados = $stateParams.displayOnly;\r\n var encuestaId = $stateParams.id;\r\n vm.dataIsReady = false;\r\n vm.contactoDataIsReady = false;\r\n vm.estadisticasDataIsReady = false;\r\n vm.photoIsReady = false;\r\n vm.mediaDictionary = {};\r\n vm.redirect = redirect;\r\n vm.efectividad = '';\r\n vm.ventaTotal = '';\r\n vm.isLoadoingEstadisticas = false;\r\n vm.isLoadoingEstadisticasEfectividad = false;\r\n vm.showing = false;\r\n vm.progressCheckAbierto = false;\r\n\r\n vm.efectividadVerTodos = true;\r\n vm.firstLoadEfectividad = true;\r\n\r\n vm.fechaDesde = new Date();\r\n vm.fechaHasta = new Date();\r\n vm.isFiltered = false;\r\n\r\n vm.encuesta = null;\r\n vm.encuestadorNameFilter = '';\r\n\r\n vm.mostrarGeosTodos = false;\r\n vm.geosTodos = [];\r\n\r\n vm.zipsEnProgreso = [];\r\n vm.path = '';\r\n\r\n function redirect() {\r\n var containerEncuestasHeight = document.getElementById(\"container-encuestas\").clientHeight;\r\n var heightToTop = (containerEncuestasHeight + 300) + \"px\";\r\n\r\n document.getElementById(\"redirect\").style.top = heightToTop;\r\n document.getElementById(\"redirect\").scrollIntoView({block: \"start\"});\r\n }\r\n\r\n vm.getResultEstadisticas = function() {\r\n vm.estadisticasDataIsReady = false;\r\n vm.isLoadoingEstadisticas = true;\r\n\r\n var encuestadorId = 0;\r\n if(!vm.efectividadVerTodos){\r\n if(vm.encuestador != null){\r\n encuestadorId = vm.encuestador.Id;\r\n }\r\n }\r\n\r\n var instancia = 0;\r\n if(vm.NumeroInstancias != null && vm.instance != -1){\r\n instancia = vm.NumeroInstancias[vm.instance];\r\n }\r\n\r\n EncuestasClienteService.getEncuestaBySitiowebId(encuestaId).then(function(result) {\r\n vm.encuesta = result;\r\n });\r\n\r\n EncuestasClienteService.getResultEstadisticas(encuestaId, encuestadorId, aprobados, instancia,\r\n vm.fechaDesde, vm.fechaHasta).then(function(result) {\r\n vm.estadisticas = result.data.Estadisticas;\r\n vm.estadisticasDataIsReady = true;\r\n \r\n vm.RespuestasCount = result.data.RespuestasCount;\r\n vm.EncuestadoresCount = result.data.EncuestadoresCount;\r\n\r\n angular.forEach(vm.estadisticas, function(pregunta){\r\n pregunta.chartData = [];\r\n pregunta.labels = [];\r\n angular.forEach(pregunta.Opciones, function(opcion){\r\n pregunta.chartData.push(opcion.Cantidad / pregunta.Cantidad);\r\n pregunta.labels.push(opcion.Valor);\r\n\r\n });\r\n });\r\n\r\n vm.isLoadoingEstadisticas = false;\r\n\r\n\r\n vm.getResultEstadisticasEfectividad();\r\n\r\n });\r\n };\r\n\r\n vm.getResultEstadisticas();\r\n\r\n vm.getResultEstadisticasEfectividad = function(){\r\n vm.isLoadoingEstadisticasEfectividad = true;\r\n\r\n var encuestadorId = 0;\r\n if(!vm.efectividadVerTodos){\r\n if(vm.encuestador != null){\r\n encuestadorId = vm.encuestador.Id;\r\n }\r\n }\r\n\r\n var instancia = 0;\r\n if(vm.NumeroInstancias != null && vm.instance != -1){\r\n instancia = vm.NumeroInstancias[vm.instance];\r\n }\r\n\r\n\r\n EncuestasClienteService.getResultEstadisticasEfectividad(encuestaId, encuestadorId, instancia,\r\n vm.fechaDesde, vm.fechaHasta, aprobados)\r\n .then(function(result) {\r\n // Efectividad\r\n if(result.data.Efectividad != null){\r\n vm.efectividad = result.data.Efectividad.InstanciasVenta + '/' + result.data.Efectividad.TotalInstancias;\r\n\r\n vm.porcentajeEfectividad = parseFloat(parseFloat(result.data.Efectividad.InstanciasVenta) /\r\n parseFloat(result.data.Efectividad.TotalInstancias) * 100).toFixed(2);\r\n if(isNaN(vm.porcentajeEfectividad)){\r\n vm.efectividad = '';\r\n vm.porcentajeEfectividad = \"0.0%\";\r\n }else{\r\n vm.porcentajeEfectividad = vm.porcentajeEfectividad + \"%\";\r\n }\r\n }else{\r\n vm.efectividad = '';\r\n }\r\n\r\n // Venta Total\r\n if(result.data.VentaTotal != null){\r\n vm.ventaTotal = result.data.VentaTotal;\r\n vm.ventaTotalFormatted = result.data.VentaTotalFormatted;\r\n }else{\r\n vm.ventaTotal = 0;\r\n }\r\n\r\n if(result.data.Efectividad != null\r\n && result.data.Efectividad.InstanciasVenta != null\r\n && result.data.Efectividad.InstanciasVenta > 0\r\n && vm.ventaTotal != null){\r\n //venta promedio\r\n var ventaProm = parseFloat(vm.ventaTotal / result.data.Efectividad.InstanciasVenta).toFixed(2);\r\n vm.ventaPromedio = \"MXN $ \" + result.data.VentaPromedioFormatted;\r\n }\r\n\r\n\r\n vm.isLoadoingEstadisticasEfectividad = false;\r\n\r\n\r\n // if(vm.efectividad != '' && vm.ventaTotal != 0) {\r\n vm.showing = true;\r\n // }\r\n\r\n });\r\n\r\n };\r\n\r\n // vm.getResultEstadisticasEfectividad();\r\n\r\n vm.getEncuestadores = function(page) {\r\n vm.dataIsReady = false;\r\n vm.contactoDataIsReady = false;\r\n\r\n EncuestasClienteService.getEncuestadoresByEncuestaResults(page, encuestaId, aprobados, vm.fechaDesde, vm.fechaHasta, vm.encuestadorNameFilter)\r\n .then(function(result) {\r\n \r\n vm.totalPages = result.data.Total;\r\n \r\n if(result.data.Content)\r\n vm.encuestadores = result.data.Content.Contactos;\r\n\r\n if(vm.encuestadores[0]) {\r\n vm.encuestador = vm.encuestadores[0];\r\n //resultados: cargo el detalle\r\n var timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n vm.getResultsByEncuestadorId(vm.encuestador, true);\r\n } else {\r\n vm.encuestador = null;\r\n vm.contactoDataIsReady = true;\r\n }\r\n vm.dataIsReady = true;\r\n });\r\n };\r\n\r\n vm.getEncuestadores();\r\n\r\n\r\n vm.getResultsByEncuestadorId = function(encuestador, firstLoad, numeroInstancia){\r\n vm.contactoDataIsReady = false;\r\n vm.mostrarGeosTodos = false;\r\n vm.encuestador = encuestador;\r\n \r\n if(!numeroInstancia){\r\n numeroInstancia = null;\r\n vm.instance = -1;\r\n }\r\n\r\n if(!firstLoad){\r\n firstLoad = false;\r\n }\r\n\r\n var timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n\r\n if(vm.efectividadVerTodos){\r\n vm.instance = -1;\r\n }\r\n\r\n vm.getResultEstadisticas();\r\n\r\n EncuestasClienteService.getResultsByEncuestadorId(encuestaId, encuestador.Id, aprobados, vm.fechaDesde,\r\n vm.fechaHasta, numeroInstancia, timeZone)\r\n .then(function(result) {\r\n\r\n vm.idSelected = encuestaId;\r\n vm.contacto = result.data.Contactos[0];\r\n vm.preguntas = result.data.Preguntas;\r\n\r\n //REMOVE\r\n if (result.data.Geos != null) {\r\n vm.geos = result.data.Geos;\r\n } else {\r\n vm.geos = result.data.geos;\r\n }\r\n vm.NumeroInstancias = result.data.NumeroInstancias;\r\n\r\n //parse geos\r\n vm.geosJson = [];\r\n var geoId = 1;\r\n var geo;\r\n var indexGeo = 0;\r\n vm.geos.forEach(function (g, i) {\r\n //REMOVE\r\n if (result.data.Geos != null) {\r\n geo = JSON.parse(g.Geo);\r\n } else {\r\n geo = JSON.parse(g);\r\n }\r\n\r\n\r\n geo.id = geoId++;\r\n geo.latitude = parseFloat(geo.latitude);\r\n geo.longitude = parseFloat(geo.longitude);\r\n geo.NumeroInstancia = g.NumeroInstancia;\r\n\r\n if (g.VentaTotal != null) {\r\n geo.ventaTotal = 'VENTA: MXN $' + parseFloat(g.VentaTotal);\r\n geo.icon = 'content/images/markers/green-marker.png';\r\n } else {\r\n geo.ventaTotal = \"NO HUBO VENTAS\";\r\n geo.icon = 'content/images/markers/red-marker.png';\r\n }\r\n vm.geosJson.push(geo);\r\n\r\n });\r\n\r\n\r\n vm.catalogoTotal = 0;\r\n if(vm.contacto && vm.contacto.Resultados){\r\n angular.forEach(vm.contacto.Resultados, function(resultado) {\r\n //catalogo\r\n angular.forEach(resultado.Respuestas, function (respuesta) {\r\n if (respuesta.RespuestasCatalogo != null) {\r\n angular.forEach(respuesta.RespuestasCatalogo, function (r) {\r\n vm.catalogoTotal += r.Precio * r.ValorNumerico;\r\n });\r\n }\r\n });\r\n // vm.catalogoTotal = Math.round(vm.catalogoTotal);\r\n\r\n\r\n resultado.FechaSubida = new Date(resultado.FechaSubida);\r\n for (var i=0;i= cp.MaxAlerta);\r\n }\r\n\r\n vm.validateRangeCandado = function (cp) {\r\n return (cp.MinCandado != null && cp.MaxCandado != null && cp.MinCandado >= cp.MaxCandado);\r\n }\r\n\r\n vm.validateRanges = function (cp) {\r\n return (cp.MinAlerta != null && cp.MinCandado != null && cp.MinAlerta < cp.MinCandado) || (cp.MaxAlerta != null && cp.MaxCandado != null && cp.MaxAlerta > cp.MaxCandado);\r\n }\r\n\r\n vm.cambiarRequerido = function (numeroPregunta) {\r\n let pregunta = vm.encuesta.Preguntas[numeroPregunta - 1];\r\n if (pregunta.Requerida) {\r\n let preguntaAux, preguntaPadre = pregunta.PreguntaPadre;\r\n for (; preguntaPadre != 0 ; preguntaPadre = preguntaAux.PreguntaPadre) {\r\n preguntaAux = vm.encuesta.Preguntas[preguntaPadre - 1];\r\n preguntaAux.Requerida = true;\r\n }\r\n } else {\r\n pregunta.Requerida = false;\r\n vm.encuesta.Preguntas.forEach(function(x) {\r\n if (x.PreguntaPadre == numeroPregunta && x.Requerida)\r\n pregunta.Requerida = true;\r\n });\r\n }\r\n };\r\n\r\n vm.copyDown = function(pregunta){\r\n vm.encuesta.Preguntas.push(angular.copy(pregunta));\r\n };\r\n\r\n vm.moveUp = function (posicion) {\r\n vm.cambiar(posicion, posicion - 1);\r\n vm.encuesta.Preguntas.forEach(function(x){\r\n if(x.PreguntaPadre - 1 == posicion)\r\n x.PreguntaPadre = posicion;\r\n else if(x.PreguntaPadre - 1 == posicion - 1)\r\n x.PreguntaPadre = posicion + 1;\r\n })\r\n };\r\n\r\n vm.moveDown = function (posicion) {\r\n var ultimo = vm.encuesta.Preguntas.length - 1;\r\n vm.cambiar(posicion, posicion + 1);\r\n vm.encuesta.Preguntas.forEach(function(x){\r\n if(x.PreguntaPadre - 1 == posicion)\r\n x.PreguntaPadre = posicion + 2;\r\n else if(x.PreguntaPadre - 1 == posicion + 1)\r\n x.PreguntaPadre = posicion + 1;\r\n })\r\n };\r\n\r\n vm.sendToFirst = function (posicion) {\r\n var primero = 0;\r\n vm.cambiar(posicion, primero);\r\n vm.encuesta.Preguntas.forEach(function(x){\r\n if(x.PreguntaPadre - 1 == primero)\r\n x.PreguntaPadre = posicion + 1;\r\n else if(x.PreguntaPadre - 1 == posicion)\r\n x.PreguntaPadre = primero + 1;\r\n })\r\n };\r\n\r\n vm.sendToLast = function (posicion) {\r\n var ultimo = vm.encuesta.Preguntas.length - 1;\r\n vm.cambiar(posicion, ultimo);\r\n vm.encuesta.Preguntas.forEach(function(x){\r\n if(x.PreguntaPadre - 1 == ultimo)\r\n x.PreguntaPadre = posicion + 1;\r\n else if(x.PreguntaPadre - 1 == posicion)\r\n x.PreguntaPadre = ultimo + 1;\r\n })\r\n };\r\n\r\n vm.removePregunta = function(pregunta) {\r\n const indice = vm.encuesta.Preguntas.indexOf(pregunta);\r\n if(pregunta.TipoPregunta.ActionType === 7 || pregunta.TipoPregunta.ActionType === 8){\r\n vm.encuesta.audioVideoQuestions.cantidad -= 1;\r\n } else if (pregunta.TipoPregunta.ActionType === 4){\r\n vm.encuesta.imageQuestions.cantidad -= 1;\r\n }else {\r\n vm.encuesta.simpleQuestions.cantidad -= 1;\r\n }\r\n vm.encuesta.Preguntas.splice(indice, 1);\r\n vm.encuesta.totalQuestions.cantidad--;\r\n vm.encuesta.Preguntas.forEach(function(x){\r\n if(x.PreguntaPadre === indice + 1)\r\n x.PreguntaPadre = 0;\r\n else if (x.PreguntaPadre > indice + 1)\r\n x.PreguntaPadre--;\r\n })\r\n };\r\n\r\n var resetQuestionsAmounts = function () {\r\n if(!vm.encuesta.audioVideoQuestions){\r\n vm.encuesta.audioVideoQuestions = {};\r\n }\r\n if(!vm.encuesta.imageQuestions){\r\n vm.encuesta.imageQuestions = {};\r\n }\r\n if(!vm.encuesta.simpleQuestions){\r\n vm.encuesta.simpleQuestions = {};\r\n }\r\n if(!vm.encuesta.totalQuestions){\r\n vm.encuesta.totalQuestions = {};\r\n }\r\n\r\n vm.encuesta.audioVideoQuestions.cantidad = 0;\r\n vm.encuesta.imageQuestions.cantidad = 0;\r\n vm.encuesta.simpleQuestions.cantidad = 0;\r\n vm.encuesta.totalQuestions.cantidad = 0;\r\n };\r\n\r\n //Cuando se asigna un tipo de pregunta a una pregunta, configura las mismas en el cotizador.\r\n vm.setQuestionsType = function () {\r\n resetQuestionsAmounts();\r\n angular.forEach(vm.encuesta.Preguntas, function (pregunta) {\r\n if(pregunta.TipoPregunta.ActionType === 7 || pregunta.TipoPregunta.ActionType === 8){\r\n vm.encuesta.audioVideoQuestions.cantidad += 1;\r\n } else if (pregunta.TipoPregunta.ActionType === 4){\r\n vm.encuesta.imageQuestions.cantidad += 1;\r\n }else {\r\n vm.encuesta.simpleQuestions.cantidad += 1;\r\n }\r\n vm.encuesta.totalQuestions.cantidad++;\r\n });\r\n };\r\n\r\n vm.getVisibilityRequeridaPadre = function (padre) {\r\n return padre != 0 && (vm.encuesta.Preguntas[padre - 1].TipoPregunta.Nombre == 'SI/NO' || vm.encuesta.Preguntas[padre - 1].TipoPregunta.Nombre == 'OPCION_MULTIPLE');\r\n };\r\n\r\n vm.updatedPreventivo = function (index) {\r\n var pregunta = vm.encuesta.Preguntas[index];\r\n if (pregunta.ControlPreventivo == null)\r\n pregunta.ControlPreventivo = { PrecioObjetivo: null, \r\n MinAlerta: null, MaxAlerta: null, MinCandado: null, MaxCandado: null };\r\n };\r\n\r\n function topPage() {\r\n document.body.scrollTop = document.documentElement.scrollTop = 0;\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('nuevaEncuestaCliente', {\r\n parent: 'app',\r\n url: '/nueva-encuesta-cliente/{id}',\r\n data: {\r\n authorities: []\r\n },\r\n params: {\r\n isDuplicated: ''\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/nuevaEncuestaCliente/nuevaEncuestaCliente.html',\r\n controller: 'NuevaEncuestaClienteController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n questionsTypes: ['PreguntaEncuestaClienteService', function (PreguntaEncuestaClienteService) {\r\n return PreguntaEncuestaClienteService.queryQuestionsTypes();\r\n }],\r\n criteriosAceptacion: ['EncuestasClienteService', function(EncuestasClienteService) {\r\n return EncuestasClienteService.getCriteriosAceptacion();\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('NuevaEncuestaClienteController', NuevaEncuestaClienteController);\r\n\r\n NuevaEncuestaClienteController.$inject = ['$rootScope', '$state', '$location',\r\n '$scope', 'questionsTypes', '$stateParams', 'EncuestasClienteService', 'criteriosAceptacion'];\r\n\r\n function NuevaEncuestaClienteController ($rootScope, $state, $location, $scope,\r\n questionsTypes, $stateParams, EncuestasClienteService, criteriosAceptacion) {\r\n var vm = this;\r\n\r\n vm.questionsTypes = questionsTypes;\r\n\r\n vm.encuesta = {};\r\n\r\n vm.validacionGuardar = false;\r\n vm.validacionAgregar = false;\r\n vm.validateSave = validateSave;\r\n vm.validateAdd = validateAdd;\r\n vm.fechaInicioValida = new Date();\r\n vm.fechaVigenciaValida = new Date();\r\n vm.fechaInicioValida.setDate(vm.fechaInicioValida.getDate() + 2);\r\n vm.fechaVigenciaValida.setDate(vm.fechaInicioValida.getDate() + 5);\r\n vm.fechaVigencia = moment(vm.encuesta.FechaVigencia).format('L');\r\n vm.fechaInicio = moment(vm.encuesta.FechaInicio).format('L');\r\n vm.criteriosAceptacion = criteriosAceptacion;\r\n vm.labelDetallesEncuesta = \"1 Detalles de la Encuesta\";\r\n vm.labelPreguntasEncuesta = \"2 Preguntas Encuesta\";\r\n vm.labelUbicacionEncuesta = \"3 Ubicación Encuesta\";\r\n vm.labelCostoEncuesta = \"4 Costo de la encuesta\";\r\n\r\n document.body.scrollTop = document.documentElement.scrollTop = 0;\r\n\r\n if(!$stateParams.id){\r\n vm.encuesta.Preguntas = [{ Descripcion: '', AccionType:'', Orden: '', AccionTypeObject: null, \r\n Respuestas:[{ NumeroRespuesta: 1, Valor: '' }], Requerida: false,\r\n ControlPreventivo: { PrecioObjetivo: null, MinAlerta: null, MaxAlerta: null,\r\n MinCandado: null, MaxCandado: null }}];\r\n }\r\n if($stateParams.id){\r\n EncuestasClienteService.get($stateParams.id).then(function(result){\r\n vm.encuesta = result;\r\n angular.forEach(vm.encuesta.Preguntas, function(pregunta){\r\n if(!pregunta.TipoPregunta.NombreFE) {\r\n if(pregunta.TipoPregunta.Nombre == 'NUMERICO'){\r\n pregunta.TipoPregunta.NombreFE = 'Numérico';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'ALFANUMERICO'){\r\n pregunta.TipoPregunta.NombreFE = 'Alfanumérico';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'SI/NO'){\r\n pregunta.TipoPregunta.NombreFE = 'Sí/No';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'GEOLOCALIZACION'){\r\n pregunta.TipoPregunta.NombreFE = 'Geolocalización';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'IMAGEN'){\r\n pregunta.TipoPregunta.NombreFE = 'Imágen';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'OPCION_MULTIPLE'){\r\n pregunta.TipoPregunta.NombreFE = 'Opción múltiple';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'BARRA_DESPLAZABLE'){\r\n pregunta.TipoPregunta.NombreFE = 'Barra desplazable';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'AUDIO'){\r\n pregunta.TipoPregunta.NombreFE = 'Audio';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'VIDEO'){\r\n pregunta.TipoPregunta.NombreFE = 'Video';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'CODIGO_QR'){\r\n pregunta.TipoPregunta.NombreFE = 'Código QR';\r\n }\r\n if(pregunta.TipoPregunta.Nombre == 'PREGUNTA_CATALOGO'){\r\n pregunta.TipoPregunta.NombreFE = 'Pregunta catálogo';\r\n }\r\n };\r\n if($stateParams.isDuplicated){\r\n vm.encuesta.isDuplicated = true;\r\n }\r\n });\r\n vm.setQuestionsType();\r\n angular.forEach(vm.encuesta.Ubicaciones, function(ubicacion){\r\n ubicacion.Pos = [ubicacion.Latitud, ubicacion.Longitud];\r\n });\r\n });\r\n }\r\n\r\n (function(){\r\n if (window.matchMedia(\"(max-width: 767px)\").matches) {\r\n vm.labelDetallesEncuesta = \"1\";\r\n vm.labelPreguntasEncuesta = \"2\";\r\n vm.labelUbicacionEncuesta = \"3\";\r\n vm.labelCostoEncuesta = \"4\";\r\n }\r\n else {\r\n vm.labelDetallesEncuesta = \"1 Detalles de la Encuesta\";\r\n vm.labelPreguntasEncuesta = \"2 Preguntas Encuesta\";\r\n vm.labelUbicacionEncuesta = \"3 Ubicación Encuesta\";\r\n vm.labelCostoEncuesta = \"4 Costo de la encuesta\";\r\n }\r\n })();\r\n\r\n vm.setQuestionsType = function () {\r\n if(!vm.encuesta.audioVideoQuestions) {\r\n vm.encuesta.audioVideoQuestions = {};\r\n vm.encuesta.audioVideoQuestions.cantidad = 0;\r\n }\r\n if(!vm.encuesta.imageQuestions) {\r\n vm.encuesta.imageQuestions = {};\r\n vm.encuesta.imageQuestions.cantidad = 0;\r\n }\r\n if(!vm.encuesta.simpleQuestions) {\r\n vm.encuesta.simpleQuestions = {};\r\n vm.encuesta.simpleQuestions.cantidad = 0;\r\n }\r\n if(!vm.encuesta.totalQuestions) {\r\n vm.encuesta.totalQuestions = {};\r\n vm.encuesta.totalQuestions.cantidad = 0;\r\n }\r\n\r\n angular.forEach(vm.encuesta.Preguntas, function (pregunta) {\r\n if(pregunta.TipoPregunta.ActionType === 7 || pregunta.TipoPregunta.ActionType === 8){\r\n vm.encuesta.audioVideoQuestions.cantidad += 1;\r\n } else if (pregunta.TipoPregunta.ActionType === 4){\r\n vm.encuesta.imageQuestions.cantidad += 1;\r\n }else {\r\n vm.encuesta.simpleQuestions.cantidad += 1;\r\n }\r\n vm.encuesta.totalQuestions.cantidad++;\r\n });\r\n };\r\n\r\n vm.selectedIndex = 0;\r\n\r\n vm.changeTab = function () {\r\n vm.selectedIndex++;\r\n if(vm.selectedIndex === 3){\r\n vm.validacionGuardar = validateSave();\r\n vm.validacionAgregar = validateAdd();\r\n }\r\n };\r\n\r\n vm.validacion = function () {\r\n vm.validacionGuardar = validateSave();\r\n vm.validacionAgregar = validateAdd();\r\n };\r\n\r\n function validateSave() {\r\n if( vm.encuesta.Nombre === \"\" || vm.encuesta.Nombre === undefined)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.Descripcion === \"\" || vm.encuesta.Descripcion === undefined)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.FechaInicio === \"\" || vm.fechaInicioValida >= vm.encuesta.FechaInicio)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.FechaVigencia === \"\" || vm.fechaVigenciaValida >= vm.encuesta.FechaVigencia)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.TipoEncuesta === \"\" || vm.encuesta.TipoEncuesta === undefined)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.CriterioAceptacion === \"\" || vm.encuesta.CriterioAceptacion === undefined)\r\n {\r\n return false;\r\n }\r\n return true;\r\n\r\n }\r\n\r\n function validateAdd() {\r\n if( vm.encuesta.FechaInicio === \"\" || vm.fechaInicioValida >= vm.encuesta.FechaInicio)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.FechaVigencia === \"\" || vm.fechaVigenciaValida >= vm.encuesta.FechaVigencia)\r\n {\r\n return false;\r\n }\r\n if( vm.encuesta.Preguntas.length === 0){\r\n return false;\r\n }\r\n vm.valido = true;\r\n vm.encuesta.Preguntas.forEach(function(element) {\r\n if(element.TipoPregunta){\r\n if(element.TipoPregunta.Nombre === \"\"){\r\n vm.valido = false;\r\n return false;\r\n }\r\n if(element.Texto === \"\" || !element.Texto && element.TipoPregunta.Nombre != 'PREGUNTA_CATALOGO'){\r\n vm.valido = false;\r\n return false;\r\n }\r\n }\r\n else{\r\n vm.valido = false;\r\n return false;\r\n }\r\n });\r\n if(!vm.valido){\r\n return false;\r\n }\r\n if( vm.encuesta.Ubicaciones.length === 0){\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n vm.confirmEncuesta = function () {\r\n if (vm.validateForm() && vm.validateQuestion()) {\r\n vm.encuesta.Nombre = vm.nombre;\r\n vm.encuesta.Descripcion = vm.descripcion;\r\n vm.encuesta.CriteriosAceptacion = vm.criterios;\r\n vm.encuesta.FechaInicio = vm.fechaInicio;\r\n vm.encuesta.FechaVigencia = vm.fechaVigencia;\r\n vm.encuesta.Activo = 1;\r\n vm.encuesta.Exito = 50;\r\n vm.encuesta.Fracaso = 50;\r\n vm.encuesta.Auditores = vm.auditores;\r\n\r\n /*vm.listaMapItems = [];\r\n vm.listaMapName = [];\r\n\r\n vm.nombreListaMap = sharedProperties.getListName(); //Obtenemos el nombre de la lista desde map-controller\r\n\r\n vm.listaMapItems = sharedProperties.getItems();\r\n if (vm.nombreListaMap) {\r\n for (var i = 0; i < vm.listaMapItems.length; i++)\r\n {\r\n vm.listaMapItems[i].NombreLista = vm.nombreListaMap.toString();\r\n }\r\n var ListaNombre = vm.nombreListaMap.toString()\r\n }\r\n var nList = { ListaNombre }\r\n vm.listaMapName.push(nList);\r\n\r\n params = { Encuesta: $scope.encuesta, Preguntas: $scope.preguntas, Respuestas: $scope.respuestas, Ubicaciones: $scope.listaMapItems, Lista: $scope.listaMapName };\r\n vm.showAdvanced(params);*/\r\n }\r\n };\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('nuevaEncuestaCliente.modal', {\r\n parent: 'nuevaEncuestaCliente',\r\n url: '/modal',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'nuevaEncuestaView': {\r\n templateUrl: 'app/components/modalEncuesta/modalEncuesta.html',\r\n controller: 'ModalEncuestaController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ModalEncuestaController', ModalEncuestaController);\r\n\r\n ModalEncuestaController.$inject = [];\r\n\r\n function ModalEncuestaController () {\r\n var vm = this;\r\n\r\n vm.saveEncuesta = saveEncuesta;\r\n\r\n function saveEncuesta (data) {\r\n vm.isLoading = true;\r\n vm.encuesta.Localizacion = vm.positions;\r\n vm.encuesta.Aceptacion = data.Encuesta.Aceptacion;\r\n if (vm.encuesta.Aceptacion == 'undefined' || vm.encuesta.Aceptacion == null || vm.encuesta.Aceptacion == false) {\r\n vm.showAlert(\"Se deben aceptar los términos y condiciones\");\r\n }\r\n else {\r\n if (vm.encuesta.Aceptacion == true) {\r\n date = new Date();\r\n var dateAceptacion = moment(date, 'DD/MM/YYYY').format();\r\n data.Encuesta.Aceptacion = dateAceptacion;\r\n }\r\n\r\n EncuestasHttpServices.encuestaCreateRequest(data,\r\n function (data) {\r\n vm.isLoading = false;\r\n vm.dataResponse = data;\r\n var detalles = data.encuestaDetalles;\r\n var preguntas = data.preguntas;\r\n var status = data.status;\r\n if (status == 1) {\r\n vm.showModalTerms();\r\n }\r\n else {\r\n vm.isLoading = false;\r\n vm.showAlert('Ocurrio un error al registrar la encuesta');\r\n }\r\n },\r\n function (response) {\r\n vm.isLoading = false;\r\n alert(\"Ha ocurrido un error\");\r\n }\r\n );\r\n }\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('membresiaSaldo', {\r\n templateUrl: 'app/components/membresiaSaldo/membresiaSaldo.html',\r\n controller: ['MembresiaService', function (MembresiaService) {\r\n var vm = this;\r\n\r\n if(!vm.membership){\r\n vm.membership = {}\r\n vm.membership.CantidadContacto = 0;\r\n }\r\n\r\n vm.contactosChartData = [\r\n vm.contactosLibres,\r\n vm.membership.CantidadContacto - vm.contactosLibres\r\n ];\r\n\r\n vm.doughnutChartOptions = {\r\n aspectRatio: 1,\r\n hover: {\r\n mode: null\r\n },\r\n tooltips: {\r\n enabled: false\r\n }\r\n };\r\n\r\n vm.doughnutChartColors = [\r\n '#8bc24a',\r\n '#d9e4eb'\r\n ];\r\n\r\n }],\r\n controllerAs: 'vm',\r\n bindings: {\r\n membership: '<',\r\n contactosLibres: '<'\r\n }\r\n });\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('MembresiaContratarDialogController', MembresiaContratarDialogController);\r\n\r\n MembresiaContratarDialogController.$inject = ['$uibModalInstance', 'membership', '$http', 'userMembership', 'userCard'];\r\n\r\n function MembresiaContratarDialogController ($uibModalInstance, membership, $http, userMembership, userCard) {\r\n var vm = this;\r\n\r\n vm.membership = membership;\r\n vm.hasMembership = userMembership != null;\r\n vm.showdialogcard = false;\r\n\r\n vm.userCard = userCard.data;\r\n if(vm.userCard == null){\r\n vm.showdialogcard = true;\r\n }\r\n\r\n vm.clear = function () {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.modalAcept = function(){\r\n $uibModalInstance.dismiss('ok');\r\n };\r\n\r\n vm.suscribe = function () {\r\n $http.post('api/membresias/suscribe/'+membership.Id, {}).then(function(){\r\n $uibModalInstance.close('ok');\r\n }).catch(function (error) {\r\n console.log(error);\r\n });\r\n };\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('membresia', {\r\n parent: 'app',\r\n url: '/membresia',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/membresia/membresia.html',\r\n controller: 'MembresiaController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n memberships: ['MembresiaService', function (MembresiaService) {\r\n return MembresiaService.queryMemberships();\r\n }],\r\n // userMembership : ['MembresiaService', function (MembresiaService) {\r\n // return MembresiaService.getUserMembership();\r\n // }],\r\n logged : ['Principal', function (Principal) {\r\n return Principal.isAuthenticated();\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state('membresia.contratar', {\r\n parent: 'membresia',\r\n url: '/contratar/{id}',\r\n data: {\r\n authorities: []\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', 'MembresiaService', function($stateParams, $state, $uibModal, MembresiaService) {\r\n $uibModal.open({\r\n templateUrl: 'app/components/membresia/membresiaContratar-dialog.html',\r\n controller: 'MembresiaContratarDialogController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n membership : ['MembresiaService', function (MembresiaService) {\r\n return MembresiaService.getMembership($stateParams.id);\r\n }],\r\n userMembership : function () {\r\n return MembresiaService.getUserMembership();\r\n },\r\n userCard : ['CarritoService', function (CarritoService) {\r\n return CarritoService.getCard();\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('membresia', null, { reload: true });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n });\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('MembresiaService', MembresiaService);\r\n\r\n MembresiaService.$inject = ['$q', '$http'];\r\n\r\n function MembresiaService ($q, $http) {\r\n return {\r\n queryMemberships: queryMemberships,\r\n queryItems: queryItems,\r\n getUserMembership: getUserMembership,\r\n getMembresiaCarrito: getMembresiaCarrito,\r\n getMembresiaToApprove: getMembresiaToApprove,\r\n cancelMembership: cancelMembership,\r\n getNextMembership: getNextMembership,\r\n getMembership: getMembership,\r\n getContactosLibres: getContactosLibres,\r\n getPreguntasLibres: getPreguntasLibres,\r\n createMembership: createMembership,\r\n deleteMembership: deleteMembership,\r\n updateMembership: updateMembership,\r\n createItem: createItem,\r\n deleteItem: deleteItem,\r\n updateItem: updateItem,\r\n // addToCart: addToCart,\r\n suscribe: suscribe,\r\n getApprovalLink: getApprovalLink,\r\n executeAgreement: executeAgreement,\r\n cancelMembresiaToApprove: cancelMembresiaToApprove,\r\n approveMembresia: approveMembresia\r\n };\r\n\r\n function queryMemberships() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function cancelMembership() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/cancel').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n\r\n function getContactosLibres() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/contactos').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getPreguntasLibres() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/preguntas').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryItems() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/items').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getUserMembership() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/byLoggedUser').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getMembresiaCarrito() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/carrito').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getMembresiaToApprove() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/to-approve').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getMembership(id) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/Membresias/' + id).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getNextMembership() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/nextByUserLogged').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function createMembership(membership) {\r\n return $http.post('api/membresias', membership);\r\n }\r\n\r\n function deleteMembership(membership) {\r\n return $http.delete('api/membresias?id='+membership.Id);\r\n }\r\n\r\n function updateMembership(membership) {\r\n return $http.put('api/membresias', membership);\r\n }\r\n\r\n function createItem(item) {\r\n return $http.post('api/items', item);\r\n }\r\n\r\n function deleteItem(item) {\r\n return $http.delete('api/items?id='+item.Id);\r\n }\r\n\r\n function updateItem(item) {\r\n return $http.put('api/items', item);\r\n }\r\n\r\n // function addToCart(encuesta){\r\n // var deferred = $q.defer();\r\n //\r\n // save(encuesta).then(function(response){\r\n // $http.post('api/membresias/addToCart', response).then(function (result) {\r\n // deferred.resolve(result.data);\r\n // }).catch(function (error) {\r\n // deferred.reject(error);\r\n // });\r\n // });\r\n //\r\n // return deferred.promise;\r\n // }\r\n\r\n function suscribe(membresiaId){\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/membresias/suscribe/' + membresiaId).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getApprovalLink(id) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/membresias/GetPayPalApproval_url?id_membresia=' + id).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function executeAgreement(agreementToken) {\r\n return $http.get('api/membresias/ExecuteAgreement?agreementToken=' + agreementToken);\r\n }\r\n\r\n function cancelMembresiaToApprove(id){\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/membresias/CancelMembresiaToApprove', id).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function approveMembresia(id){\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/membresias/ApproveMembresia', id).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('MembresiaController', MembresiaController);\r\n\r\n MembresiaController.$inject = ['memberships', 'logged', 'MembresiaService', 'Principal', '$window',\r\n '$stateParams', '$location','LoginService', 'CarritoProvider', '$uibModal'];\r\n\r\n function MembresiaController (memberships, logged, MembresiaService, Principal, $window,\r\n $stateParams, $location, LoginService, CarritoProvider, $uibModal) {\r\n var vm = this;\r\n\r\n vm.faltaLogin = 'Es necesario estar logueado para poder contratar una membresia.';\r\n\r\n function init () {\r\n vm.isGettingToken = false;\r\n\r\n // var agreementToken = $location.search().token;\r\n // if(agreementToken != null) {\r\n // vm.isGettingToken = true;\r\n // MembresiaService.executeAgreement(agreementToken).then(function(result) {\r\n // vm.isGettingToken = false;\r\n // $uibModal.open({\r\n // templateUrl: 'app/components/membresia/confirmacionMembresia-dialog.html',\r\n // controller: 'ConfirmacionMembresiaController',\r\n // controllerAs: 'vm',\r\n // size: 'md'\r\n // });\r\n // });\r\n // }\r\n\r\n vm.isAuthenticated = Principal.isAuthenticated;\r\n vm.memberships = memberships;\r\n vm.memberships.map(function (x) {\r\n x.Items.sort(function (a, b) {\r\n return b.Destacado - a.Destacado;\r\n });\r\n return x;\r\n });\r\n\r\n\r\n\r\n if(logged){\r\n MembresiaService.getUserMembership().then(function(result){\r\n vm.userMembership = result;\r\n });\r\n\r\n }\r\n \r\n angular.forEach(vm.memberships, function(membership){\r\n membership.PrecioFinal = membership.Precio - ((membership.Precio * membership.Descuento) / 100) ;\r\n });\r\n vm.logged = logged;\r\n }\r\n\r\n vm.suscribe = function (membresiaId) {\r\n if(!vm.logged) {\r\n LoginService.open();\r\n return;\r\n }\r\n\r\n console.log('nicooo', vm.userMembership);\r\n if(vm.userMembership\r\n && vm.userMembership.Id === membresiaId) {\r\n //ya tiene la membresia contratada\r\n console.log('membresia contratada');\r\n return;\r\n }\r\n //llamo al servicio de be que crea la suscripcion a la membresia seleccionada\r\n MembresiaService.suscribe(membresiaId).then(function(response) {\r\n console.log(\"membresia enviada al carrito\");\r\n $uibModal.open({\r\n templateUrl: 'app/components/membresia/confirmacionMembresia-dialog.html',\r\n controller: 'ConfirmacionMembresiaController',\r\n controllerAs: 'vm',\r\n size: 'md'\r\n }).closed.then(function () {\r\n MembresiaService.getUserMembership().then(function(result){\r\n vm.userMembership = result;\r\n });\r\n });\r\n });\r\n\r\n\r\n };\r\n\r\n vm.setMembresiaButtonText = function(index){\r\n var message = 'CONTRATAR';\r\n if(vm.userMembership != null && vm.memberships[index].Id == vm.userMembership.Id){\r\n if(vm.userMembership.Active){\r\n message = 'CONTRATADA';\r\n }\r\n if(!vm.userMembership.Active && !vm.userMembership.Carrito){\r\n message = 'PENDIENTE DE APROBACION';\r\n }\r\n if(vm.userMembership.Carrito){\r\n message = 'ENVIADA AL CARRITO';\r\n }\r\n }\r\n\r\n return message;\r\n };\r\n\r\n window.scrollTo(0, 0);\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ConfirmacionMembresiaController', ConfirmacionMembresiaController);\r\n\r\n ConfirmacionMembresiaController.$inject = ['CarritoProvider', '$uibModalInstance'];\r\n\r\n function ConfirmacionMembresiaController(CarritoProvider, $uibModalInstance) {\r\n var vm = this;\r\n\r\n function init () {\r\n }\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n init();\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('LoginService', LoginService);\r\n\r\n LoginService.$inject = ['$uibModal'];\r\n\r\n function LoginService ($uibModal) {\r\n var service = {\r\n open: open\r\n };\r\n\r\n var modalInstance = null;\r\n var resetModal = function () {\r\n modalInstance = null;\r\n };\r\n\r\n return service;\r\n\r\n function open () {\r\n if (modalInstance !== null) return;\r\n modalInstance = $uibModal.open({\r\n animation: true,\r\n templateUrl: 'app/components/login/login.html',\r\n controller: 'LoginController',\r\n controllerAs: 'vm'\r\n });\r\n modalInstance.result.then(\r\n resetModal,\r\n resetModal\r\n );\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('LoginController', LoginController);\r\n\r\n LoginController.$inject = ['$rootScope', '$state', '$timeout', 'Auth', '$uibModalInstance', 'UserByFacebook', '$window'];\r\n\r\n function LoginController ($rootScope, $state, $timeout, Auth, $uibModalInstance, UserByFacebook, $window) {\r\n var vm = this;\r\n\r\n vm.authenticationError = false;\r\n vm.noClientError = false;\r\n vm.cancel = cancel;\r\n vm.credentials = {};\r\n vm.grant_type = 'password';\r\n vm.login = login;\r\n vm.password = null;\r\n vm.register = register;\r\n vm.rememberMe = true;\r\n vm.requestResetPassword = requestResetPassword;\r\n vm.username = null;\r\n vm.facebookLogin = facebookLogin;\r\n\r\n $timeout(function (){angular.element('#username').focus();});\r\n\r\n function cancel () {\r\n vm.credentials = {\r\n username: null,\r\n password: null,\r\n rememberMe: true,\r\n grant_type: 'password'\r\n };\r\n vm.authenticationError = false;\r\n vm.noClientError = false;\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function login (event) {\r\n if(event != null) {\r\n event.preventDefault();\r\n }\r\n\r\n Auth.login({\r\n username: vm.username,\r\n password: vm.password,\r\n rememberMe: vm.rememberMe,\r\n grant_type: vm.grant_type\r\n }).then(function () {\r\n vm.authenticationError = false;\r\n $uibModalInstance.close();\r\n\r\n $window.location.reload();\r\n\r\n if ($state.current.name === 'register' || $state.current.name === 'activate' ||\r\n $state.current.name === 'finishReset' || $state.current.name === 'requestReset') {\r\n }\r\n\r\n $rootScope.$broadcast('authenticationSuccess');\r\n\r\n // previousState was set in the authExpiredInterceptor before being redirected to login modal.\r\n // since login is successful, go to stored previousState and clear previousState\r\n if (Auth.getPreviousState()) {\r\n var previousState = Auth.getPreviousState();\r\n Auth.resetPreviousState();\r\n $state.go(previousState.name, previousState.params);\r\n }\r\n }).catch(function (resp) {\r\n if (resp.data.error === 'invalid_grant') {\r\n vm.authenticationError = true;\r\n }\r\n\r\n if (resp.data.error === 'no_client') {\r\n vm.noClientError = true;\r\n }\r\n });\r\n }\r\n\r\n function register () {\r\n $uibModalInstance.dismiss('cancel');\r\n $state.go('register');\r\n }\r\n\r\n function facebookLogin() {\r\n //Busco el estado del login del usuario con facebook\r\n FB.getLoginStatus(function(response) {\r\n //Si ya se encuentra logueado facebook y conectado a la aplicacion\r\n if (response.status === 'connected') {\r\n //Logueo el usuario en Smart Eyes\r\n loginWithFacebookData();\r\n } else {\r\n //Sino muestro el cuadro de inicio de sesión de Facebook\r\n FB.login(function(response) {\r\n console.log(response.status);\r\n //Si se conecto a Facebook, logueo el usuario en Smart Eyes\r\n if (response.status === 'connected') {\r\n //Busco en Facebook los datos del usuario\r\n FB.api('/me', {\r\n fields: 'id, first_name, last_name, email'\r\n }, function (response) {\r\n //Si no hubo ningun error buscando los datos\r\n if (response && !response.error) {\r\n //Busco si ya existe en Smart Eyes el usuario logueado en Facebook\r\n UserByFacebook.get({facebookId: response.id}, function(result) {\r\n //Si no existe, lo creo\r\n if(result.Id == undefined) {\r\n var newUser = {\r\n FacebookId: response.id,\r\n Email: response.email,\r\n LangKey: 'en',\r\n UserName: response.email,\r\n Password: response.id,\r\n FirstName: response.first_name,\r\n LastName: response.last_name,\r\n Telefono: '00000000'\r\n };\r\n\r\n //Si el usuario esta logueado a Facebook mediante numero de telefono, y no tiene email\r\n //entonces no se puede loguear a Smart Eyes mediante Facebook\r\n if(newUser.Email != null) {\r\n Auth.createAccount(newUser).then(function () {\r\n //una vez creado el usuario, lo logueo a Smart Eyes\r\n loginWithFacebookData();\r\n });\r\n } else {\r\n vm.facebookLoginError = \"No se puede loguear con Facebook si no se tiene email\";\r\n }\r\n } else {\r\n //Si existe, directamente logueo al usuario en Smart Eyes\r\n loginWithFacebookData();\r\n }\r\n });\r\n } else {\r\n vm.facebookLoginError = \"Error al buscar los datos del usuario en Facebook\";\r\n }\r\n });\r\n }\r\n }, {scope: 'public_profile, email'});\r\n }\r\n });\r\n }\r\n\r\n function loginWithFacebookData() {\r\n FB.api('/me', {\r\n fields: 'id, first_name, last_name, email'\r\n }, function (response) {\r\n vm.username = response.email;\r\n vm.password = response.id;\r\n vm.rememberMe = true;\r\n vm.grant_type = 'password';\r\n\r\n login();\r\n })\r\n }\r\n\r\n function requestResetPassword () {\r\n $uibModalInstance.dismiss('cancel');\r\n $state.go('requestReset');\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('investigacion', {\r\n parent: 'app',\r\n url: '/investigacion',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/investigacion/investigacion.html',\r\n controller: 'InvestigacionController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n })\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('InvestigacionController', InvestigacionController);\r\n\r\n InvestigacionController.$inject = [];\r\n\r\n function InvestigacionController () {\r\n var vm = this;\r\n\r\n vm.selectedTab = 1;\r\n vm.selectedCar = 1;\r\n\r\n vm.showTab = function (tab){\r\n vm.selectedTab = tab;\r\n }\r\n\r\n vm.selectCar = function (car){\r\n vm.selectedCar = car;\r\n }\r\n\r\n window.scrollTo(0, 0);\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('industrias', {\r\n parent: 'app',\r\n url: '/industrias',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/industrias/industrias.html',\r\n controller: 'IndustriasController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n })\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('IndustriasController', IndustriasController);\r\n\r\n IndustriasController.$inject = [];\r\n\r\n function IndustriasController () {\r\n var vm = this;\r\n\r\n vm.selectedTab = 1;\r\n vm.selectedCar = 1;\r\n\r\n vm.showTab = function (tab){\r\n vm.selectedTab = tab;\r\n }\r\n\r\n vm.selectCar = function (car){\r\n vm.selectedCar = car;\r\n }\r\n\r\n window.scrollTo(0, 0);\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('HistorialComprasDetailController', HistorialComprasDetailController);\r\n\r\n HistorialComprasDetailController.$inject = ['$scope', '$stateParams', '$uibModalInstance', 'getCompra'];\r\n\r\n function HistorialComprasDetailController ($scope, $stateParams, $uibModalInstance, getCompra) {\r\n var vm = this;\r\n\r\n vm.historial = getCompra.compra;\r\n\r\n vm.print = function () {\r\n window.print();\r\n };\r\n\r\n vm.clear = function () {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('historialCompras', {\r\n parent: 'app',\r\n url: '/historial-compras',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/historialCompras/historialCompras.html',\r\n controller: 'HistorialComprasController',\r\n controllerAs: 'vm'\r\n }\r\n },\r\n resolve: {\r\n getHistorialCompras: ['HistorialComprasService','Principal', function (HistorialComprasService, Principal) {\r\n var isAdmin = false;\r\n return Principal.identity().then(function (result) {\r\n angular.forEach(result.Authorities, function (role) {\r\n if(role === 'ROLE_ADMIN'){\r\n isAdmin = true;\r\n }\r\n });\r\n if(isAdmin){\r\n return HistorialComprasService.queryAllHistorialCompras();\r\n }else{\r\n return HistorialComprasService.queryHistorialCompras();\r\n }\r\n });\r\n }]\r\n }\r\n })\r\n .state('historialCompras.detail', {\r\n parent: 'historialCompras',\r\n url: '/{id}',\r\n data: {\r\n authorities: []\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/components/historialCompras/historialCompras-detail.html',\r\n controller: 'HistorialComprasDetailController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n getCompra: ['HistorialComprasService', function (HistorialComprasService) {\r\n return HistorialComprasService.queryCompra($stateParams.id);\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('historialCompras', null, { reload: false });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n })\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('HistorialComprasService', HistorialComprasService);\r\n\r\n HistorialComprasService.$inject = ['$q', '$http', '$stateParams'];\r\n\r\n function HistorialComprasService ($q, $http, $stateParams) {\r\n return {\r\n queryHistorialCompras: queryHistorialCompras,\r\n queryCompra: queryCompra,\r\n queryAllHistorialCompras: queryAllHistorialCompras,\r\n uploadReceipt: uploadReceipt\r\n };\r\n\r\n function queryHistorialCompras() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/compras')\r\n .success(function(data) {\r\n deferred.resolve({\r\n historialCompras: data.Content\r\n });\r\n }).error(function(msg) {\r\n deferred.reject(msg);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryCompra(id) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/compras/' + id)\r\n .success(function(data) {\r\n deferred.resolve({\r\n compra: data\r\n });\r\n }).error(function(msg) {\r\n deferred.reject(msg);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryAllHistorialCompras (size, number) {\r\n var deferred = $q.defer();\r\n var size = 20;\r\n var number = number;\r\n\r\n if(!number){\r\n number = 0;\r\n }\r\n\r\n $http.get('api/compras?Size='+ size + '&Number=' + number)\r\n .success(function(data) {\r\n deferred.resolve({\r\n historialCompras: data.Content\r\n });\r\n }).error(function(msg) {\r\n deferred.reject(msg);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function uploadReceipt($file, id) {\r\n if($file) {\r\n var fileReader = new FileReader();\r\n fileReader.readAsDataURL($file);\r\n var base64Data = \"\";\r\n\r\n fileReader.onload = function (e) {\r\n base64Data = e.target.result.substr(e.target.result.indexOf('base64,') + 'base64,'.length);\r\n\r\n var compraDTO = {};\r\n compraDTO.Id = id;\r\n compraDTO.FacturaFile = base64Data;\r\n\r\n $http.post('api/compras/UploadFacturaFile', compraDTO).then(function(response) {\r\n if(response.status == 200)\r\n window.alert(\"Carga exitosa\");\r\n else\r\n window.alert(\"Error al cargar archivo\");\r\n });\r\n };\r\n }\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('HistorialComprasController', HistorialComprasController);\r\n\r\n HistorialComprasController.$inject = ['getHistorialCompras', 'HistorialComprasService'];\r\n\r\n function HistorialComprasController (getHistorialCompras, HistorialComprasService) {\r\n var vm = this;\r\n\r\n vm.historialCompras = getHistorialCompras.historialCompras;\r\n\r\n vm.uploadReceipt = function ($file, id) {\r\n HistorialComprasService.uploadReceipt($file, id);\r\n }\r\n\r\n window.scrollTo(0, 0);\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('showValidation', showValidation);\r\n\r\n function showValidation () {\r\n var directive = {\r\n restrict: 'A',\r\n require: 'form',\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc (scope, element, attrs, formCtrl) {\r\n element.find('.form-group').each(function() {\r\n var $formGroup = angular.element(this);\r\n var $inputs = $formGroup.find('input[ng-model],textarea[ng-model],select[ng-model]');\r\n\r\n if ($inputs.length > 0) {\r\n $inputs.each(function() {\r\n var $input = angular.element(this);\r\n var inputName = $input.attr('name');\r\n scope.$watch(function() {\r\n return formCtrl[inputName].$invalid && formCtrl[inputName].$dirty;\r\n }, function(isInvalid) {\r\n $formGroup.toggleClass('has-error', isInvalid);\r\n });\r\n });\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .constant('paginationConstants', {\r\n 'itemsPerPage': 20\r\n });\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('minbytes', minbytes);\r\n\r\n function minbytes () {\r\n var directive = {\r\n restrict: 'A',\r\n require: '?ngModel',\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc (scope, element, attrs, ngModel) {\r\n if (!ngModel) {\r\n return;\r\n }\r\n\r\n ngModel.$validators.minbytes = function (modelValue) {\r\n return ngModel.$isEmpty(modelValue) || numberOfBytes(modelValue) >= attrs.minbytes;\r\n };\r\n }\r\n\r\n function endsWith(suffix, str) {\r\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\r\n }\r\n\r\n function paddingSize(base64String) {\r\n if (endsWith('==', base64String)) {\r\n return 2;\r\n }\r\n if (endsWith('=', base64String)) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n function numberOfBytes(base64String) {\r\n return base64String.length / 4 * 3 - paddingSize(base64String);\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('maxbytes', maxbytes);\r\n\r\n function maxbytes () {\r\n var directive = {\r\n restrict: 'A',\r\n require: '?ngModel',\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n function linkFunc (scope, element, attrs, ngModel) {\r\n if (!ngModel) {\r\n return;\r\n }\r\n\r\n ngModel.$validators.maxbytes = function (modelValue) {\r\n return ngModel.$isEmpty(modelValue) || numberOfBytes(modelValue) <= attrs.maxbytes;\r\n };\r\n }\r\n\r\n function endsWith(suffix, str) {\r\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\r\n }\r\n\r\n function paddingSize(base64String) {\r\n if (endsWith('==', base64String)) {\r\n return 2;\r\n }\r\n if (endsWith('=', base64String)) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n function numberOfBytes(base64String) {\r\n return base64String.length / 4 * 3 - paddingSize(base64String);\r\n }\r\n }\r\n\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('EncuestasClienteDetailController', EncuestasClienteDetailController);\r\n\r\n EncuestasClienteDetailController.$inject = ['$scope', '$stateParams', '$uibModalInstance', 'encuesta', '$window'];\r\n\r\n function EncuestasClienteDetailController ($scope, $stateParams, $uibModalInstance, encuesta, $window) {\r\n var vm = this;\r\n vm.clear = clear;\r\n vm.encuesta = encuesta;\r\n \r\n function clear () {\r\n $uibModalInstance.dismiss('cancel');\r\n $window.history.back();\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('EncuestasClienteDeleteController', EncuestasClienteDeleteController);\r\n\r\n EncuestasClienteDeleteController.$inject = ['encuesta', '$uibModalInstance', 'EncuestasClienteService'];\r\n\r\n function EncuestasClienteDeleteController (encuesta, $uibModalInstance, EncuestasClienteService) {\r\n var vm = this;\r\n\r\n function init () {\r\n vm.encuesta = encuesta;\r\n }\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.remove = function() {\r\n EncuestasClienteService.deleteEncuesta(vm.encuesta);\r\n $uibModalInstance.close(vm.encuesta);\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('encuestasCliente', {\r\n parent: 'app',\r\n url: '/encuestas-cliente',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/encuestasCliente/encuestasCliente.html',\r\n controller: 'EncuestasClienteController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n user : ['Principal', function (Principal) {\r\n return Principal.identity();\r\n }],\r\n encuestas: ['EncuestasClienteService', function (EncuestasClienteService) {\r\n return EncuestasClienteService.queryEncuestasClienteByPage(0);\r\n }],\r\n encuestasSummary: ['EncuestasClienteService', function (EncuestasClienteService) {\r\n return EncuestasClienteService.summary();\r\n }]\r\n }\r\n }\r\n }\r\n })\r\n .state('encuestasCliente.detail', {\r\n parent: 'encuestasCliente',\r\n url: '/{id}',\r\n data: {\r\n authorities: []\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/components/encuestasCliente/encuestasCliente-detail.html',\r\n controller: 'EncuestasClienteDetailController',\r\n controllerAs: 'vm',\r\n resolve: { \r\n encuesta: ['EncuestasClienteService', function (EncuestasClienteService) {\r\n return EncuestasClienteService.get($stateParams.id);\r\n }]\r\n },\r\n size: 'md'\r\n }).result.then(function() {\r\n $state.go('encuestasCliente', null, { reload: false });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n })\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('EncuestasClienteService', EncuestasClienteService);\r\n\r\n EncuestasClienteService.$inject = ['$q', '$http', 'API_URL', '$window'];\r\n\r\n function EncuestasClienteService ($q, $http, API_URL, $window) {\r\n return {\r\n approve: approve,\r\n get: get,\r\n queryEncuestasCliente: queryEncuestasCliente,\r\n queryEncuestasClienteByEstado: queryEncuestasClienteByEstado,\r\n queryEncuestasClienteByName: queryEncuestasClienteByName,\r\n createFromExcel: createFromExcel,\r\n queryEncuestasClienteByPage: queryEncuestasClienteByPage,\r\n save: save,\r\n addToCart: addToCart,\r\n summary: summary,\r\n removeFromCart: removeFromCart,\r\n deleteEncuesta: deleteEncuesta,\r\n getEncuestaResults: getEncuestaResults,\r\n getEncuestadoresByEncuestaResults: getEncuestadoresByEncuestaResults,\r\n getResultEstadisticasEfectividad: getResultEstadisticasEfectividad,\r\n getResultsByEncuestadorId: getResultsByEncuestadorId,\r\n getResultEstadisticas: getResultEstadisticas,\r\n exportResultsToCSV: exportResultsToCSV,\r\n exportResultsToPDF: exportResultsToPDF,\r\n getCriteriosAceptacion: getCriteriosAceptacion,\r\n getImage: getImage,\r\n sendMediaEmail: sendMediaEmail,\r\n checkForFile: checkForFile,\r\n getLinkForFile: getLinkForFile,\r\n buscarGeosTodos: buscarGeosTodos,\r\n getEncuestaBySitiowebId: getEncuestaBySitiowebId,\r\n getMediaForCarousel: getMediaForCarousel\r\n };\r\n\r\n function get(encuestaId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/' + encuestaId).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function deleteEncuesta (encuesta) {\r\n var deferred = $q.defer();\r\n\r\n $http({\r\n method: 'DELETE',\r\n url: 'api/encuestas',\r\n data: encuesta,\r\n headers: {\r\n 'Content-type': 'application/json;charset=utf-8'\r\n }\r\n }).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function approve(encuestaId) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/encuestas/approve', { Id: encuestaId }).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryEncuestasCliente() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryEncuestasClienteByPage(page) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas?Number=' + page).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryEncuestasClienteByEstado(state) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/estado/' + state).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function queryEncuestasClienteByName(nombre, page) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/nombre/' + nombre + '?Number=' + page).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function createFromExcel(formData) {\r\n var deferred = $q.defer();\r\n\r\n var excelDTO = {};\r\n excelDTO.name = 'nico';\r\n excelDTO.file = formData;\r\n\r\n $http.post('api/encuestas/create-from-excel', excelDTO).then(function (result) {\r\n deferred.resolve(result.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function addToCart(encuesta){\r\n var deferred = $q.defer();\r\n\r\n save(encuesta).then(function(response){\r\n $http.post('api/encuestas/addToCart', response).then(function (result) {\r\n deferred.resolve(result.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function removeFromCart (encuesta) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/encuestas/removeFromCart', encuesta).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function save(encuesta) {\r\n var deferred = $q.defer();\r\n\r\n if(!encuesta.Id){\r\n $http.post('api/encuestas', encuesta).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n } else{\r\n $http.put('api/encuestas', encuesta).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function summary() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/summary').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEncuestaResults (idEncuesta, aprobados, fechaDesde, fechaHasta) {\r\n var deferred = $q.defer();\r\n\r\n var pageData = {\r\n \"Size\" : 12,\r\n \"Number\" : 0\r\n };\r\n\r\n if(!aprobados)\r\n {\r\n aprobados = false;\r\n }\r\n\r\n if(!fechaDesde || !fechaHasta){\r\n $http.post('api/encuestas/results?aprobados=' + aprobados + '&encuestaId=' +\r\n idEncuesta + '&fechaDesde=null&fechaHasta=null', pageData).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n }else{\r\n $http.post('api/encuestas/results?aprobados=' + aprobados + '&encuestaId=' +\r\n idEncuesta + '&fechaDesde=' + fechaDesde.getTime() + '&fechaHasta=' + fechaHasta.getTime(), pageData).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEncuestadoresByEncuestaResults(page, idEncuesta, aprobados, fechaDesde, fechaHasta, nombre) {\r\n var deferred = $q.defer();\r\n\r\n var pageData = {\r\n \"Size\" : 12,\r\n \"Number\" : page,\r\n };\r\n\r\n if(!aprobados)\r\n {\r\n aprobados = false;\r\n }\r\n\r\n if(!fechaDesde || !fechaHasta){\r\n $http.post('api/encuestas/results/auditors?aprobados=' + aprobados + '&encuestaId=' +\r\n idEncuesta + '&fechaDesde=null&fechaHasta=null&nombre=' + nombre, pageData).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n }else{\r\n $http.post('api/encuestas/results/auditors?aprobados=' + aprobados + '&encuestaId=' +\r\n idEncuesta + '&fechaDesde=' + fechaDesde.getTime() \r\n + '&fechaHasta=' + fechaHasta.getTime() + '&nombre=' + nombre, pageData).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getResultsByEncuestadorId(encuestaId, encuestadorId, aprobados, fechaDesde, fechaHasta, numeroInstancia, timeZone) {\r\n var deferred = $q.defer();\r\n\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n\r\n $http.post('api/encuestas/results/encuesta/' + encuestaId \r\n + '/auditor/' + encuestadorId + '/approveOnly/' + aprobados \r\n + '?fechaDesde=' + fechaDesde + '&fechaHasta=' + fechaHasta + '&numeroInstancia=' + numeroInstancia\r\n + '&timeZone=' + timeZone).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n \r\n return deferred.promise;\r\n }\r\n\r\n function getResultEstadisticas(encuestaId, encuestadorId, aprobados, instancia, fechaDesde, fechaHasta) {\r\n var deferred = $q.defer();\r\n\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n\r\n $http.post('api/encuestas/results/estadisticas/encuesta/' + encuestaId \r\n + '/auditor/' + encuestadorId + '/approveOnly/' + aprobados\r\n + '?instancia=' + instancia\r\n + '&fechaDesde=' + fechaDesde + '&fechaHasta=' + fechaHasta).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n \r\n return deferred.promise;\r\n }\r\n\r\n\r\n function exportResultsToCSV(encuestaID, aprobados, fechaDesde, fechaHasta, encuestadorId, timeZone) {\r\n if(!aprobados)\r\n aprobados = false;\r\n\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n \r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/results/csv?encuestaId=' + encuestaID + '&aprobados=' + aprobados\r\n + '&fechaDesde=' + fechaDesde + '&fechaHasta=' + fechaHasta + '&encuestadorId=' + encuestadorId \r\n + '&timeZone=' + timeZone, '_blank', '').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function exportResultsToPDF(email, encuestaID, aprobados, fechaDesde, fechaHasta, encuestadorId, timeZone) {\r\n var deferred = $q.defer();\r\n\r\n if(!aprobados)\r\n aprobados = false;\r\n\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n\r\n $http.get(API_URL+ '/api/encuestas/results/pdf?email=' + email + '&encuestaId=' + encuestaID + '&aprobados=' + aprobados\r\n + '&fechaDesde=' + fechaDesde + '&fechaHasta=' + fechaHasta + '&encuestadorId=' + encuestadorId \r\n + '&timeZone=' + timeZone, '_blank', '')\r\n .then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function(error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getResultEstadisticasEfectividad(encuestaId, encuestadorId, instancia, fechaDesde, fechaHasta, approveOnly) {\r\n var deferred = $q.defer();\r\n\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n\r\n $http.post('api/encuestas/results/estadisticas/efectividad/encuesta/' + encuestaId\r\n + '/encuestador/' + encuestadorId\r\n + '?approveOnly=' + approveOnly\r\n + '&instancia=' + instancia\r\n + '&fechaDesde=' + fechaDesde\r\n + '&fechaHasta=' + fechaHasta).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getCriteriosAceptacion () {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/criteriosaceptacion').then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getImage(contactoId, type) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/results/contacto/' + contactoId + '/type/' + type).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function sendMediaEmail(address, encuestaId, encuestadorId, fechaDesde, fechaHasta) {\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n \r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/results/zip?direccion=' + address + '&encuestaId=' + encuestaId + (fechaDesde ? (\"&fechaDesde=\" + fechaDesde) : \"\") + (fechaHasta ? (\"&fechaHasta=\" + fechaHasta) : \"\") + (encuestadorId ? (\"&encuestadorId=\" + encuestadorId) : \"\")).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function checkForFile(dictId) {\r\n var deferred = $q.defer();\r\n $http.get('api/encuestas/results/checkFile?dictId=' + dictId).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getLinkForFile(dictId, esCSV) {\r\n if(esCSV) {\r\n return API_URL + '/api/encuestas/results/downloadCSV?dictId=' + dictId\r\n }\r\n else {\r\n return API_URL + '/api/encuestas/results/downloadZip?dictId=' + dictId\r\n }\r\n }\r\n\r\n function buscarGeosTodos(encuestaId, fechaDesde, fechaHasta) {\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/results/buscarGeosTodos?encuestaId=' + encuestaId + \"&fechaDesde=\" + fechaDesde + \"&fechaHasta=\" + fechaHasta).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEncuestaBySitiowebId(sitiowebId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/results/getEncuestaBySitiowebId?encuestaId=' + sitiowebId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getMediaForCarousel(encuestaId, slides, offset, encuestadorId, fechaDesde, fechaHasta) {\r\n if (!offset) {\r\n offset = 0;\r\n }\r\n\r\n if(fechaDesde)\r\n fechaDesde = fechaDesde.getTime();\r\n\r\n if(fechaHasta)\r\n fechaHasta = fechaHasta.getTime();\r\n\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/encuestas/results/getMediaForCarousel?encuestaId=' + encuestaId + '&numberOfSlides=' + slides + '&offset=' + offset + '&encuestadorId=' + encuestadorId + \"&fechaDesde=\" + fechaDesde + \"&fechaHasta=\" + fechaHasta).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function(error) {\r\n deferred.reject(error);\r\n })\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('EncuestasClienteController', EncuestasClienteController);\r\n\r\n EncuestasClienteController.$inject = ['encuestas', 'encuestasSummary', '$uibModal', '$state', 'EncuestasClienteService','user'];\r\n\r\n function EncuestasClienteController (encuestas, encuestasSummary, $uibModal, $state, EncuestasClienteService, user) {\r\n var vm = this;\r\n\r\n function init () {\r\n window.scrollTo(0, 0);\r\n\r\n if(user.Cliente){\r\n vm.displayOnly = user.Cliente.DisplayOnlyAuditedContacts;\r\n }else{\r\n vm.displayOnly = false;\r\n }\r\n vm.page = encuestas.Number;\r\n vm.totalPages = encuestas.TotalPages;\r\n vm.encuestas = encuestas.Content;\r\n vm.encuestasSummary = encuestasSummary;\r\n vm.dateHoy = new Date();\r\n vm.loadingTabla = false;\r\n vm.mostrandoBusquedas = false;\r\n\r\n angular.forEach(vm.encuestas, function(value, key) {\r\n if(value.Estado.Nombre === 'APROBADA' && value.FechaVigencia <= vm.dateHoy){\r\n value.Estado.Nombre = 'FINALIZADA';\r\n }\r\n });\r\n loadSummaryCharts(vm.encuestasSummary);\r\n }\r\n\r\n vm.changePage = function (page) {\r\n vm.loadingTabla = true;\r\n EncuestasClienteService.queryEncuestasClienteByPage(page).then(function (response) {\r\n vm.page = response.Number;\r\n vm.totalPages = response.TotalPages;\r\n vm.encuestas = response.Content;\r\n vm.loadingTabla = false;\r\n });\r\n };\r\n\r\n function loadSummaryCharts (encuestasSummary) {\r\n vm.doughnutChartOptions = {\r\n aspectRatio: 1,\r\n hover: {\r\n mode: null\r\n },\r\n tooltips: {\r\n enabled: false\r\n }\r\n };\r\n\r\n vm.doughnutChartColors = [\r\n '#5c8be6',\r\n '#d9e4eb'\r\n ];\r\n\r\n vm.activasChartData = [\r\n encuestasSummary.Activas,\r\n encuestasSummary.Total - encuestasSummary.Activas\r\n ];\r\n\r\n vm.vigentesChartData = [\r\n encuestasSummary.Vigentes,\r\n encuestasSummary.Total - encuestasSummary.Vigentes\r\n ];\r\n\r\n vm.finalizadasChartData = [\r\n encuestasSummary.Finalizadas,\r\n encuestasSummary.Total - encuestasSummary.Finalizadas\r\n ];\r\n\r\n vm.pendientesChartData = [\r\n encuestasSummary.Pendientes,\r\n encuestasSummary.Total - encuestasSummary.Pendientes\r\n ];\r\n }\r\n\r\n vm.removeEncuesta = function(encuesta) {\r\n $uibModal.open({\r\n templateUrl: 'app/components/encuestasCliente/encuestasCliente-delete.html',\r\n controller: 'EncuestasClienteDeleteController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n encuesta: function () {\r\n return encuesta;\r\n }\r\n }\r\n }).result.then(function (result) {\r\n $state.reload();\r\n });\r\n };\r\n\r\n vm.searchEncuesta = function(encuesta, page) {\r\n vm.encuestas = [];\r\n vm.loadingTabla = true;\r\n vm.mostrandoBusquedas = true;\r\n\r\n EncuestasClienteService.queryEncuestasClienteByName(encuesta, page).then(function (response) {\r\n vm.page = response.Number;\r\n vm.totalPages = response.TotalPages;\r\n vm.encuestas = response.Content;\r\n vm.loadingTabla = false;\r\n \r\n });\r\n }\r\n\r\n vm.resetBusqueda = function() {\r\n if(vm.mostrandoBusquedas) {\r\n vm.changePage(0);\r\n vm.mostrandoBusquedas = false;\r\n }\r\n }\r\n\r\n window.scrollTo(0, 0);\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('datosEncuestaCliente', {\r\n templateUrl: 'app/components/datosEncuestaCliente/datosEncuestaCliente.html',\r\n controller: 'DatosEncuestaClienteController',\r\n controllerAs: 'vm',\r\n bindings: {\r\n encuesta: '=',\r\n changeTab: '&',\r\n criterios: '<'\r\n }\r\n });\r\n\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('DatosEncuestaClienteController', DatosEncuestaClienteController);\r\n\r\n DatosEncuestaClienteController.$inject = ['$scope'];\r\n\r\n function DatosEncuestaClienteController ($scope) {\r\n var vm = this;\r\n vm.topPage = topPage;\r\n\r\n vm.encuesta.FechaInicio = new Date();\r\n vm.encuesta.FechaInicio.setDate(vm.encuesta.FechaInicio.getDate() + 2);\r\n vm.encuesta.FechaVigencia = new Date(vm.encuesta.FechaInicio);\r\n vm.encuesta.FechaVigencia.setDate(vm.encuesta.FechaVigencia.getDate() + 5);\r\n\r\n if(vm.encuesta.FechaInicio.getDay() == 6){\r\n vm.encuesta.FechaInicio.setDate(vm.encuesta.FechaInicio.getDate() + 2);\r\n }\r\n if(vm.encuesta.FechaInicio.getDay() == 0){\r\n vm.encuesta.FechaInicio.setDate(vm.encuesta.FechaInicio.getDate() + 1);\r\n }\r\n if(vm.encuesta.FechaVigencia.getDay() == 6){\r\n vm.encuesta.FechaVigencia.setDate(vm.encuesta.FechaVigencia.getDate() + 2);\r\n }\r\n if(vm.encuesta.FechaVigencia.getDay() == 0){\r\n vm.encuesta.FechaVigencia.setDate(vm.encuesta.FechaVigencia.getDate() + 1);\r\n }\r\n\r\n vm.minDate = new Date();\r\n vm.minDate.setDate(vm.minDate.getDate() + 2);\r\n\r\n vm.minDate2 = new Date();\r\n\r\n console.log(vm.criterios);\r\n\r\n $scope.$watch('vm.encuesta.FechaInicio', function(v) {\r\n vm.minDate2 = new Date(v);\r\n vm.minDate2.setDate(vm.minDate2.getDate() + 7);\r\n\r\n if (vm.encuesta.FechaVigencia < vm.minDate2)\r\n vm.encuesta.FechaVigencia = new Date(vm.minDate2);\r\n });\r\n\r\n vm.onlyWeekendsPredicate = function(date) {\r\n var day = date.getDay();\r\n return day != 0 && day != 6;\r\n };\r\n\r\n vm.contactTypes = [\r\n 'Auditor',\r\n 'Consumidor'\r\n ];\r\n }\r\n \r\n function topPage() {\r\n document.body.scrollTop = document.documentElement.scrollTop = 0;\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('dashboard', {\r\n parent: 'app',\r\n url: '/dashboard',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/components/dashboard/dashboard.html',\r\n controller: 'DashboardController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n encuestas: ['EncuestasClienteService', function (EncuestasClienteService) {\r\n return EncuestasClienteService.queryEncuestasCliente();\r\n }],\r\n encuestasSummary: ['EncuestasClienteService', function (EncuestasClienteService) {\r\n return EncuestasClienteService.summary();\r\n }],\r\n membership: ['MembresiaService', function (MembresiaService) {\r\n return MembresiaService.getUserMembership();\r\n }],\r\n contactosLibres: ['MembresiaService', function (MembresiaService) {\r\n return MembresiaService.getContactosLibres();\r\n }],\r\n nextMembership: ['MembresiaService', function (MembresiaService) {\r\n return MembresiaService.getNextMembership();\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('DashboardController', DashboardController);\r\n\r\n DashboardController.$inject = ['CarritoProvider', 'encuestas', 'membership', 'nextMembership', 'encuestasSummary', 'contactosLibres'];\r\n\r\n function DashboardController (CarritoProvider, encuestas, membership, nextMembership, encuestasSummary, contactosLibres) {\r\n var vm = this;\r\n var carritoSubscription;\r\n\r\n function init () {\r\n window.scrollTo(0, 0);\r\n\r\n vm.encuestas = encuestas.Content;\r\n vm.encuestasSummary = encuestasSummary;\r\n vm.userMembresia = membership;\r\n vm.nextMembresia = nextMembership;\r\n vm.contactosLibres = contactosLibres;\r\n vm.costoEncuesta = 0;\r\n vm.descripcionContactosLibres = \"Saldo Contactos (disponibles/total)\";\r\n\r\n carritoSubscription = CarritoProvider.getCarritoSubject().subscribe(function (value) {\r\n vm.pending = value.length;\r\n });\r\n\r\n loadSummaryCharts(vm.encuestasSummary);\r\n loadEncuestaChart(encuestas.Content);\r\n }\r\n\r\n function loadEncuestaChart(encuestas) {\r\n vm.labels = [];\r\n vm.data = [];\r\n vm.colors = [];\r\n\r\n angular.forEach(encuestas, function (encuesta) {\r\n if(encuesta.Estado.Nombre === 'APROBADA' || encuesta.Estado.Nombre === 'PENDIENTE_DE_APROBACION'){\r\n vm.labels.push(encuesta.Nombre);\r\n vm.data.push( (encuesta.Monto / encuesta.CantidadContactos).toFixed(2) );\r\n vm.colors.push('#5c8be6');\r\n }\r\n });\r\n }\r\n\r\n function loadSummaryCharts (encuestasSummary) {\r\n vm.doughnutChartOptions = {\r\n aspectRatio: 1,\r\n hover: {\r\n mode: null\r\n },\r\n tooltips: {\r\n enabled: false\r\n }\r\n };\r\n\r\n vm.doughnutChartColors = [\r\n '#5c8be6',\r\n '#d9e4eb'\r\n ];\r\n\r\n vm.activasChartData = [\r\n encuestasSummary.Activas,\r\n encuestasSummary.Total - encuestasSummary.Activas\r\n ];\r\n\r\n vm.pendientesChartData = [\r\n encuestasSummary.Pendientes,\r\n encuestasSummary.Total - encuestasSummary.Pendientes\r\n ];\r\n\r\n\r\n vm.vigentesChartData = [\r\n encuestasSummary.Vigentes,\r\n encuestasSummary.Total - encuestasSummary.Vigentes\r\n ];\r\n\r\n vm.finalizadasChartData = [\r\n encuestasSummary.Finalizadas,\r\n encuestasSummary.Total - encuestasSummary.Finalizadas\r\n ];\r\n }\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('CotizadorService', CotizadorService);\r\n\r\n CotizadorService.$inject = ['MembresiaService', 'CarritoService'];\r\n\r\n function CotizadorService(MembresiaService, CarritoService) {\r\n var userMembresia = null;\r\n var contactosLibres = 0;\r\n var preguntasLibres = 0;\r\n var accesoComunidad = 0;\r\n var bonificaciones = [[], []];\r\n var hasMembership = false;\r\n\r\n\r\n MembresiaService.getUserMembership().then(function (response) {\r\n userMembresia = response ? response : null;\r\n hasMembership = (userMembresia != null);\r\n preguntasLibres = hasMembership ? userMembresia.CantidadPreguntaEncuesta : 0;\r\n });\r\n\r\n MembresiaService.getContactosLibres().then(function (response) {\r\n contactosLibres = response;\r\n });\r\n\r\n CarritoService.getCotizadorVariable('ACCESO_COMUNIDAD').then(function (response) {\r\n accesoComunidad = hasMembership ? 0 : response.data.Valor;\r\n });\r\n\r\n CarritoService.queryCotizadorBonificacion().then(function (response) {\r\n bonificaciones = response.data;\r\n });\r\n\r\n return {\r\n getTotal: getTotal,\r\n getBonificacion: getBonificacion,\r\n getPrecioEncuesta: getPrecioEncuesta,\r\n reloadContactosLibres: reloadContactosLibres\r\n };\r\n\r\n function reloadContactosLibres() {\r\n MembresiaService.getContactosLibres().then(function (response) {\r\n contactosLibres = response;\r\n });\r\n\r\n MembresiaService.getUserMembership().then(function (response) {\r\n userMembresia = response ? response : null;\r\n hasMembership = (userMembresia != null);\r\n preguntasLibres = hasMembership ? userMembresia.CantidadPreguntaEncuesta : 0;\r\n });\r\n }\r\n\r\n function getPrecioPreguntas(encuesta, isFloating) {\r\n if(!isFloating){\r\n var exPreguntas = Math.max(encuesta.Preguntas.length - preguntasLibres, 0);\r\n }\r\n\r\n if(encuesta.Preguntas){\r\n var total = encuesta.Preguntas\r\n .map(function (pregunta) {\r\n if(pregunta.TipoPregunta){\r\n return pregunta.TipoPregunta.Precio;\r\n }else{\r\n return 0;\r\n }\r\n })\r\n .sort()\r\n .reverse()\r\n .slice(0, exPreguntas)\r\n .reduce(function (n, x) {\r\n return n+x;\r\n }, 0);\r\n\r\n return total;\r\n }\r\n else{\r\n return 0;\r\n }\r\n }\r\n\r\n function getPrecioEncuesta(encuesta, isFloating) {\r\n if(!isFloating){\r\n var exContactos = Math.max(encuesta.CantidadContactos - contactosLibres, 0);\r\n }else{\r\n var exContactos = encuesta.CantidadContactos;\r\n }\r\n\r\n var totalPreguntas = getPrecioPreguntas(encuesta, isFloating);\r\n\r\n encuesta.precioContacto = Math.max(250, totalPreguntas);\r\n\r\n if (hasMembership && !isFloating){\r\n encuesta.precioContacto *= (1 - userMembresia.DescuentoContacto / 100);\r\n }\r\n\r\n var total = exContactos * encuesta.precioContacto;\r\n\r\n if (totalPreguntas > 0 && exContactos == 0)\r\n total += totalPreguntas;\r\n\r\n return total;\r\n }\r\n\r\n function getBonificacion(total) {\r\n for (var i=0;i= bonificaciones[0][i].Valor)\r\n return bonificaciones[1][i].Valor;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n function getTotal(encuestas, hasMembership, isFloating) {\r\n var total = encuestas.reduce(function (n, encuesta) {\r\n return n + getPrecioEncuesta(encuesta, isFloating);\r\n }, 0);\r\n if(hasMembership)\r\n {\r\n accesoComunidad = 0;\r\n }\r\n return total * (1 - getBonificacion(total)) + accesoComunidad;\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('cotizador', {\r\n templateUrl: 'app/components/cotizador/cotizador.html',\r\n controller: 'CotizadorController',\r\n controllerAs: 'vm',\r\n bindings: {\r\n encuesta: '=',\r\n floatCotizador: '<'\r\n }\r\n });\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('CotizadorController', CotizadorController);\r\n\r\n CotizadorController.$inject = ['$scope', 'PreguntaEncuestaClienteService', 'MembresiaService',\r\n 'CarritoService', 'CotizadorService', '$timeout'];\r\n\r\n function CotizadorController ($scope, PreguntaEncuestaClienteService,\r\n MembresiaService, CarritoService, CotizadorService, $timeout) {\r\n var vm = this;\r\n\r\n function init() {\r\n vm.finalPrice = 0;\r\n vm.sliderDisabled = false;\r\n vm.accesoComunidad = 0;\r\n vm.totalPrice = 0;\r\n vm.costoContacto = 0;\r\n vm.contactos.precioUnitario = 250;\r\n\r\n vm.precioSimple = 0;\r\n vm.precioAudioVideo = 0;\r\n vm.precioImagen = 0;\r\n\r\n CarritoService.getCotizadorVariable('ACCESO_COMUNIDAD').then(function (response) {\r\n vm.accesoComunidad = vm.hasMembership ? 0 : response.data.Valor;\r\n });\r\n\r\n if(!vm.encuesta){\r\n vm.encuesta = {};\r\n vm.encuesta.Preguntas = [];\r\n }\r\n\r\n vm.encuesta.totalQuestions = {};\r\n vm.encuesta.totalQuestions.cantidad = 0;\r\n\r\n vm.encuesta.simpleQuestions = {\r\n cantidad: 0,\r\n precioUnitario: 10,\r\n options: {\r\n floor: 0,\r\n ceil: 30,\r\n showSelectionBar: true,\r\n selectionBarGradient: {\r\n from: '#b0b3d6',\r\n to: '#001b56'\r\n },\r\n onChange: function(){\r\n vm.calculatePrice();\r\n },\r\n },\r\n };\r\n\r\n vm.encuesta.audioVideoQuestions = {\r\n cantidad: 0,\r\n precioUnitario: 50,\r\n options: {\r\n floor: 0,\r\n ceil: 30,\r\n showSelectionBar: true,\r\n selectionBarGradient: {\r\n from: '#b0b3d6',\r\n to: '#001b56'\r\n },\r\n onChange: function(){\r\n vm.calculatePrice()\r\n },\r\n },\r\n };\r\n\r\n vm.encuesta.imageQuestions = {\r\n cantidad: 0,\r\n precioUnitario: 30,\r\n options: {\r\n floor: 0,\r\n ceil: 30,\r\n showSelectionBar: true,\r\n selectionBarGradient: {\r\n from: '#b0b3d6',\r\n to: '#001b56'\r\n },\r\n onChange: function(){\r\n vm.calculatePrice()\r\n },\r\n },\r\n };\r\n\r\n MembresiaService.getUserMembership().then(function(result){\r\n vm.hasMembership = result;\r\n if(!vm.hasMembership){\r\n vm.totalPrice = 3500;\r\n }\r\n });\r\n\r\n PreguntaEncuestaClienteService.queryQuestionsTypes().then(function(result){\r\n vm.questionsTypes = result;\r\n angular.forEach(vm.questionsTypes, function (type){\r\n if(type.Nombre === 'NUMERICO'){\r\n vm.precioSimple = type.Precio;\r\n }\r\n if(type.Nombre === 'AUDIO'){\r\n vm.precioAudioVideo = type.Precio;\r\n }\r\n if(type.Nombre === 'IMAGEN'){\r\n vm.precioImagen = type.Precio;\r\n }\r\n });\r\n });\r\n\r\n if(!vm.floatCotizador){\r\n vm.encuesta.audioVideoQuestions.options.readOnly = true;\r\n vm.encuesta.imageQuestions.options.readOnly = true;\r\n vm.encuesta.simpleQuestions.options.readOnly = true;\r\n }\r\n }\r\n\r\n $scope.$watch('vm.encuesta.CantidadContactos', function() {\r\n if(vm.encuesta.CantidadContactos){\r\n vm.contactos.cantidad = vm.encuesta.CantidadContactos;\r\n vm.calculatePrice();\r\n }\r\n });\r\n $scope.$watch('vm.contactos.cantidad', function() {\r\n vm.encuesta.CantidadContactos = vm.contactos.cantidad;\r\n vm.calculatePrice();\r\n });\r\n $scope.$watch('vm.encuesta.totalQuestions.cantidad', function() {\r\n vm.calculatePrice();\r\n });\r\n\r\n vm.contactos = {\r\n cantidad: 0,\r\n options: {\r\n showSelectionBar: true,\r\n ceil: 3000,\r\n selectionBarGradient: {\r\n from: '#b0b3d6',\r\n to: '#001b56'\r\n },\r\n onChange: function(){\r\n vm.calculatePrice()\r\n },\r\n showTicks: 500\r\n }\r\n };\r\n\r\n vm.contactTypes = [\r\n 'Auditor',\r\n 'Consumidor'\r\n ];\r\n\r\n //refresca el slider al modificar un input.\r\n vm.refreshSlider = function() {\r\n $scope.$broadcast('rzSliderForceRender');\r\n };\r\n\r\n //Calcula el precio para cada pregunta segun tipo y cantidad.\r\n vm.calculatePrice = function (){\r\n\r\n if(vm.floatCotizador){\r\n vm.encuesta.Preguntas = [];\r\n\r\n for(var i = 0; i < vm.encuesta.simpleQuestions.cantidad; i++){\r\n var pregunta = {\r\n TipoPregunta: vm.questionsTypes[0]\r\n };\r\n vm.encuesta.Preguntas.push(pregunta);\r\n };\r\n for(var i = 0; i < vm.encuesta.audioVideoQuestions.cantidad; i++){\r\n var pregunta = {\r\n TipoPregunta: vm.questionsTypes[8]\r\n };\r\n vm.encuesta.Preguntas.push(pregunta);\r\n };\r\n for(var i = 0; i < vm.encuesta.imageQuestions.cantidad; i++){\r\n var pregunta = {\r\n TipoPregunta: vm.questionsTypes[4]\r\n };\r\n vm.encuesta.Preguntas.push(pregunta);\r\n };\r\n }\r\n\r\n if(vm.encuesta.Preguntas){\r\n vm.totalPrice = vm.getTotalPrecio();\r\n vm.encuesta.Monto = vm.totalPrice;\r\n }\r\n\r\n vm.bonificado = vm.getPorcentajeBonificacion(vm.getTotal()) * 100;\r\n vm.costoContacto = vm.getTotalContactos() > 0 ? (vm.getTotalPrecio() - vm.accesoComunidad) / vm.getTotalContactos() : 0;\r\n\r\n if(vm.hasMembership){\r\n vm.accesoComunidad = 0;\r\n } else {\r\n vm.accesoComunidad = 3500;\r\n }\r\n vm.contactos.price = vm.contactos.precioUnitario * vm.contactos.cantidad;\r\n\r\n vm.encuesta.totalQuestions.cantidad = vm.encuesta.simpleQuestions.cantidad + vm.encuesta.audioVideoQuestions.cantidad + vm.encuesta.imageQuestions.cantidad;\r\n };\r\n\r\n vm.getContactosBonificados = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n return n + Math.min(encuesta.CantidadContactos, vm.cantidadContactos);\r\n }, 0);\r\n };\r\n\r\n vm.getContactosBonificadosTotal = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n return n + Math.min(encuesta.CantidadContactos, vm.cantidadContactos) * encuesta.precioContacto;\r\n }, 0);\r\n };\r\n\r\n vm.getPreguntasNormalesTotal = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n return n + Math.max(encuesta.Preguntas.length - vm.cantidadPreguntas, 0);\r\n }, 0);\r\n };\r\n\r\n vm.getTotalContactos = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n return n + encuesta.CantidadContactos;\r\n }, 0);\r\n };\r\n\r\n vm.getPrecioPreguntasNormalesTotal = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n var exPreguntas = Math.max(encuesta.Preguntas.length-vm.cantidadPreguntas, 0);\r\n var totalPreguntas = encuesta.Preguntas\r\n .map(function (pregunta) {\r\n return pregunta.TipoPregunta.Precio;\r\n })\r\n .sort()\r\n .reverse()\r\n .slice(0, exPreguntas)\r\n .reduce(function (n1, x) {\r\n return n1+x;\r\n }, 0);\r\n\r\n return n + totalPreguntas;\r\n }, 0);\r\n };\r\n\r\n vm.getSubtotal = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n return n + encuesta.CantidadContactos * encuesta.precioContacto;\r\n }, 0);\r\n };\r\n\r\n vm.getTotal = function () {\r\n return vm.encuestas.reduce(function (n, encuesta) {\r\n return n + CotizadorService.getPrecioEncuesta(encuesta);\r\n }, 0);\r\n };\r\n\r\n vm.getPorcentajeBonificacion = function (total) {\r\n return CotizadorService.getBonificacion(total);\r\n };\r\n\r\n vm.getTotalPrecio = function () {\r\n if(!vm.encuestas){\r\n vm.encuestas = [vm.encuesta];\r\n }\r\n return CotizadorService.getTotal(vm.encuestas, vm.hasMembership, vm.floatCotizador);\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('carritoEncuestaCliente', {\r\n templateUrl: 'app/components/carritoEncuestaCliente/carritoEncuestaCliente.html',\r\n controller: 'CarritoEncuestaClienteController',\r\n controllerAs: 'vm',\r\n bindings : {\r\n encuesta: '=',\r\n validacionGuardar: '=',\r\n validacionAgregar: '='\r\n }\r\n });\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('CarritoEncuestaClienteController', CarritoEncuestaClienteController);\r\n\r\n CarritoEncuestaClienteController.$inject = ['$rootScope', 'CarritoProvider',\r\n 'EncuestasClienteService', '$mdDialog', '$state'];\r\n\r\n function CarritoEncuestaClienteController ($rootScope, CarritoProvider, EncuestasClienteService,\r\n $mdDialog, $state, $stateParams) {\r\n var vm = this;\r\n vm.changeTab = changeTab;\r\n vm.saveAndAddToCart = saveAndAddToCart;\r\n vm.completa = completa;\r\n vm.save = save;\r\n vm.floatCotizador = false;\r\n vm.listaBoolean = [{ Valor: false}];\r\n vm.myVar = false;\r\n\r\n vm.faltaGuardar = \"Los datos de la encuesta son obligatorios para poder guardar\";\r\n vm.faltaAgregar = \"Es necesario que la Encuesta tenga al menos una pregunta, una ubicación definida y cantidad de contactos mayor a 0 para poder agregarla al carrito.\";\r\n\r\n function completa() {\r\n angular.forEach(vm.preguntas, function(pregunta, index){\r\n vm.listaBoolean[index] = false;\r\n });\r\n }\r\n\r\n function changeTab() {\r\n $('html, body').animate({scrollTop:0}, 'slow');\r\n $rootScope.changeTabSig();\r\n }\r\n\r\n vm.showAlertOnSave = function(ev) {\r\n // Appending dialog to document.body to cover sidenav in docs app\r\n var confirm = $mdDialog.confirm()\r\n .title('Encuesta guardada.')\r\n .textContent('La encuesta se ha guardado correctamente.')\r\n .ariaLabel('')\r\n .targetEvent(ev)\r\n .ok('Cerrar')\r\n .cancel('Ir a encuestas');\r\n\r\n $mdDialog.show(confirm).then(function() {\r\n }, function() {\r\n $state.go('encuestasCliente');\r\n });\r\n };\r\n\r\n vm.showAlertOnAddToCart = function(ev) {\r\n // Appending dialog to document.body to cover sidenav in docs app\r\n var confirm = $mdDialog.confirm()\r\n .title('Encuesta guardada.')\r\n .textContent('La encuesta se ha agregado al carrito correctamente.')\r\n .ariaLabel('')\r\n .targetEvent(ev)\r\n .ok('Ir al carrito')\r\n .cancel('Ir a encuestas');\r\n $mdDialog.show(confirm).then(function() {\r\n $state.go('carrito');\r\n }, function() {\r\n $state.go('encuestasCliente');\r\n });\r\n };\r\n\r\n function save($event){\r\n vm.isSaving = true;\r\n angular.forEach(vm.encuesta.Ubicaciones, function (ubicacion) {\r\n ubicacion.Latitud = ubicacion.Pos[0];\r\n ubicacion.Longitud = ubicacion.Pos[1];\r\n });\r\n\r\n var i = 0;\r\n angular.forEach(vm.encuesta.Preguntas, function(pregunta) {\r\n pregunta.Orden = i;\r\n if (pregunta.PreguntaPadre == 0 || vm.encuesta.Preguntas[i - 1].TipoPregunta.Nombre != 'SI/NO' || \r\n vm.encuesta.Preguntas[i - 1].TipoPregunta.Nombre != 'OPCION_MULTIPLE' || \r\n (vm.encuesta.Preguntas[i - 1].TipoPregunta.Nombre == 'OPCION_MULTIPLE' && pregunta.RequeridoOpcionMultiple == 0))\r\n pregunta.RequeridaPorPadre = null;\r\n ++i;\r\n if (pregunta.TipoPregunta.Nombre != 'NUMERICO' || !pregunta.Preventivo)\r\n pregunta.ControlPreventivo = null;\r\n });\r\n \r\n if(vm.encuesta.isDuplicated == true){\r\n vm.encuesta.Id = null;\r\n vm.encuesta.EncuestaSitioWebId = 0;\r\n }\r\n\r\n EncuestasClienteService.save(vm.encuesta).then(function (response) {\r\n vm.encuesta = response;\r\n vm.showAlertOnSave($event);\r\n });\r\n }\r\n\r\n function saveAndAddToCart($event) {\r\n angular.forEach(vm.encuesta.Ubicaciones, function(ubicacion){\r\n ubicacion.Latitud = ubicacion.Pos[0];\r\n ubicacion.Longitud = ubicacion.Pos[1];\r\n });\r\n\r\n for (var i=0;i -1) {\r\n carrito.splice(index, 1);\r\n carritoSubject.onNext(carrito);\r\n }\r\n fetchEncuestasCarrito();\r\n });\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('CarritoController', CarritoController);\r\n\r\n CarritoController.$inject = ['CarritoProvider', 'userMembresia', '$uibModal', 'encuestasCarrito', 'CarritoService',\r\n 'contactosLibres', 'preguntasLibres', 'accesoComunidad', 'bonificaciones', 'EncuestasClienteService',\r\n 'CotizadorService', 'membresiaCarrito', 'MembresiaService'];\r\n\r\n function CarritoController (CarritoProvider, userMembresia, $uibModal, encuestasCarrito, CarritoService,\r\n contactosLibres, preguntasLibres, accesoComunidad, bonificaciones, EncuestasClienteService,\r\n CotizadorService, membresiaCarrito, MembresiaService) {\r\n var vm = this;\r\n var carritoSubscription;\r\n vm.habilitadaCompra = habilitadaCompra;\r\n vm.descripcionContactos = \"Contactos bonificados / Contactos disponibles\";\r\n\r\n var accordion = document.getElementById('downloadTemplete');\r\n\r\n function init () {\r\n carritoSubscription = CarritoProvider.getCarritoSubject().subscribe(function(value){\r\n vm.encuestas = value;\r\n });\r\n\r\n CotizadorService.reloadContactosLibres();\r\n\r\n vm.processingPayment = false;\r\n\r\n vm.membresia = userMembresia;\r\n vm.membresiaCarrito = membresiaCarrito;\r\n\r\n vm.hasMembership = (vm.membresia != null);\r\n\r\n vm.recargo = vm.hasMembership ? 0 : accesoComunidad.data.Valor;\r\n vm.bonificaciones = bonificaciones.data;\r\n\r\n vm.cantidadContactos = contactosLibres;\r\n vm.cantidadPreguntas = preguntasLibres;\r\n }\r\n\r\n vm.removeEncuesta = function(encuesta) {\r\n $uibModal.open({\r\n templateUrl: 'app/components/carrito/carritoRemoveEncuesta-dialog.html',\r\n controller: 'CarritoRemoveEncuestaController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n encuesta: function () {\r\n return encuesta;\r\n }\r\n }\r\n });\r\n };\r\n\r\n // vm.comprarMembresia = function () {\r\n // $uibModal.open({\r\n // templateUrl: 'app/components/carrito/carritoCompra-dialog.html',\r\n // controller: 'CarritoCompraDialogController',\r\n // controllerAs: 'vm',\r\n // size: 'md',\r\n // resolve: {\r\n // encuestas: function () {\r\n // return vm.encuestas;\r\n // },\r\n // precioTotal: function () {\r\n // return vm.getTotalPrecio();\r\n // },\r\n // lastFactura: function () {\r\n // return CarritoService.getLastCompra();\r\n // },\r\n // membresia: function () {\r\n // return vm.membresiaCarrito;\r\n // }\r\n // }\r\n // }).closed.then(function () {\r\n // CotizadorService.reloadContactosLibres()\r\n // MembresiaService.getMembresiaCarrito().then(function (result) {\r\n // vm.membresiaCarrito = result;\r\n // });\r\n // });\r\n // };\r\n\r\n vm.processPurchase = function (precio) {\r\n for (var i=0;i= dateInicio)\r\n {\r\n encuesta.CantidadContactos = 0;\r\n return false;\r\n }\r\n if( encuesta.FechaVigencia === \"\" || vm.fechaVigenciaValida >= dateVigencia)\r\n {\r\n encuesta.CantidadContactos = 0;\r\n return false;\r\n }\r\n return true;\r\n }\r\n }\r\n window.scrollTo(0, 0);\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('CardFormController', CardFormController);\r\n\r\n CardFormController.$inject = ['$scope'];\r\n\r\n function CardFormController ($scope) {\r\n var vm = this;\r\n\r\n var visa = new RegExp(\"^4[0-9]{12}(?:[0-9]{3})?$\");\r\n var mastercard = new RegExp(\"^5[1-5][0-9]{14}$\");\r\n var amex = new RegExp(\"^3[47][0-9]{13}$\");\r\n\r\n $scope.$watch('vm.card.number', function (n) {\r\n if (n) {\r\n var cardNumber = n.replace(/\\D/g,'');\r\n\r\n if (cardNumber.length > 16) {\r\n cardNumber = cardNumber.substring(0, 16);\r\n }\r\n\r\n if (cardNumber.length == 16)\r\n vm.card.number = cardNumber.match(/.{1,4}/g).join(' ');\r\n if (cardNumber.length == 15)\r\n vm.card.number = cardNumber.substring(0, 4) + ' ' + cardNumber.substring(4, 10) + ' ' + cardNumber.substring(10, 15);\r\n\r\n vm.card.type = vm.cardBrand(vm.card.number);\r\n }\r\n });\r\n\r\n $scope.$watch('vm.card.expiredDate', function (d) {\r\n if (d) {\r\n var date = d.replace(/\\D/g,'');\r\n\r\n if (date.length > 4) {\r\n date = date.substring(0, 4);\r\n }\r\n\r\n vm.card.expiredDate = date.match(/.{1,2}/g).join('/');\r\n }\r\n });\r\n\r\n $scope.$watch('vm.card.CSV', function (c) {\r\n if (c) {\r\n var CSV = c.replace(/\\D/g,'');\r\n\r\n if (CSV.length > 4) {\r\n CSV = CSV.substring(0, 3);\r\n }\r\n\r\n vm.card.CSV = CSV;\r\n }\r\n });\r\n\r\n vm.isCardNumberValid = function(cardNumber) {\r\n if (cardNumber) {\r\n var cleanCardNumber = cardNumber.replace(/ /g, '');\r\n\r\n return visa.test(cleanCardNumber) || mastercard.test(cleanCardNumber) || amex.test(cleanCardNumber);\r\n }\r\n\r\n return false;\r\n };\r\n\r\n vm.cardBrand = function(cardNumber) {\r\n if (cardNumber) {\r\n var cleanCardNumber = cardNumber.replace(/ /g, '');\r\n\r\n if(visa.test(cleanCardNumber)) {\r\n return 'VISA';\r\n }\r\n\r\n if(mastercard.test(cleanCardNumber)) {\r\n return 'MASTERCARD';\r\n }\r\n\r\n if(amex.test(cleanCardNumber)) {\r\n return 'AMEX';\r\n }\r\n }\r\n\r\n return null;\r\n };\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('cardForm', {\r\n templateUrl: 'app/components/cardForm/cardForm.html',\r\n controller: 'CardFormController',\r\n controllerAs: 'vm',\r\n bindings: {\r\n card: '='\r\n }\r\n });\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n var jhiAlertError = {\r\n template: '
' +\r\n '
' +\r\n '
{{ alert.msg }}
' +\r\n '
' +\r\n '
',\r\n controller: jhiAlertErrorController\r\n };\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('jhiAlertError', jhiAlertError);\r\n\r\n jhiAlertErrorController.$inject = ['$scope', 'AlertService', '$rootScope'];\r\n\r\n function jhiAlertErrorController ($scope, AlertService, $rootScope) {\r\n var vm = this;\r\n\r\n vm.alerts = [];\r\n\r\n function addErrorAlert (message, key, data) {\r\n vm.alerts.push(\r\n AlertService.add(\r\n {\r\n type: 'danger',\r\n msg: message,\r\n timeout: 5000,\r\n toast: AlertService.isToast(),\r\n scoped: true\r\n },\r\n vm.alerts\r\n )\r\n );\r\n }\r\n\r\n var cleanHttpErrorListener = $rootScope.$on('smarteyesjhApp.httpError', function (event, httpResponse) {\r\n var i;\r\n event.stopPropagation();\r\n switch (httpResponse.status) {\r\n // connection refused, server not reachable\r\n case 0:\r\n addErrorAlert('Server not reachable','error.server.not.reachable');\r\n break;\r\n\r\n case 400:\r\n var headers = Object.keys(httpResponse.headers()).filter(function (header) {\r\n return header.indexOf('app-error', header.length - 'app-error'.length) !== -1 || header.indexOf('app-params', header.length - 'app-params'.length) !== -1;\r\n }).sort();\r\n var errorHeader = httpResponse.headers(headers[0]);\r\n var entityKey = httpResponse.headers(headers[1]);\r\n if (angular.isString(errorHeader)) {\r\n var entityName = entityKey;\r\n addErrorAlert(errorHeader, errorHeader, {entityName: entityName});\r\n } else if (httpResponse.data && httpResponse.data.fieldErrors) {\r\n for (i = 0; i < httpResponse.data.fieldErrors.length; i++) {\r\n var fieldError = httpResponse.data.fieldErrors[i];\r\n // convert 'something[14].other[4].id' to 'something[].other[].id' so translations can be written to it\r\n var convertedField = fieldError.field.replace(/\\[\\d*\\]/g, '[]');\r\n var fieldName = convertedField.charAt(0).toUpperCase() + convertedField.slice(1);\r\n addErrorAlert('Field ' + fieldName + ' cannot be empty', 'error.' + fieldError.message, {fieldName: fieldName});\r\n }\r\n } else if (httpResponse.data && httpResponse.data.message) {\r\n addErrorAlert(httpResponse.data.message, httpResponse.data.message, httpResponse.data);\r\n } else {\r\n addErrorAlert(httpResponse.data);\r\n }\r\n break;\r\n\r\n case 404:\r\n addErrorAlert('Not found','error.url.not.found');\r\n break;\r\n\r\n default:\r\n if (httpResponse.data && httpResponse.data.message) {\r\n addErrorAlert(httpResponse.data.message);\r\n } else {\r\n addErrorAlert(angular.toJson(httpResponse));\r\n }\r\n }\r\n });\r\n\r\n $scope.$on('$destroy', function () {\r\n if(angular.isDefined(cleanHttpErrorListener) && cleanHttpErrorListener !== null){\r\n cleanHttpErrorListener();\r\n vm.alerts = [];\r\n }\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .provider('AlertService', AlertService);\r\n\r\n function AlertService () {\r\n this.toast = false;\r\n /*jshint validthis: true */\r\n this.$get = getService;\r\n\r\n this.showAsToast = function(isToast) {\r\n this.toast = isToast;\r\n };\r\n\r\n getService.$inject = ['$timeout', '$sce'];\r\n\r\n function getService ($timeout, $sce) {\r\n var toast = this.toast,\r\n alertId = 0, // unique id for each alert. Starts from 0.\r\n alerts = [],\r\n timeout = 5000; // default timeout\r\n\r\n return {\r\n factory: factory,\r\n isToast: isToast,\r\n add: addAlert,\r\n closeAlert: closeAlert,\r\n closeAlertByIndex: closeAlertByIndex,\r\n clear: clear,\r\n get: get,\r\n success: success,\r\n error: error,\r\n info: info,\r\n warning : warning\r\n };\r\n\r\n function isToast() {\r\n return toast;\r\n }\r\n\r\n function clear() {\r\n alerts = [];\r\n }\r\n\r\n function get() {\r\n return alerts;\r\n }\r\n\r\n function success(msg, params, position) {\r\n return this.add({\r\n type: 'success',\r\n msg: msg,\r\n params: params,\r\n timeout: timeout,\r\n toast: toast,\r\n position: position\r\n });\r\n }\r\n\r\n function error(msg, params, position) {\r\n return this.add({\r\n type: 'danger',\r\n msg: msg,\r\n params: params,\r\n timeout: timeout,\r\n toast: toast,\r\n position: position\r\n });\r\n }\r\n\r\n function warning(msg, params, position) {\r\n return this.add({\r\n type: 'warning',\r\n msg: msg,\r\n params: params,\r\n timeout: timeout,\r\n toast: toast,\r\n position: position\r\n });\r\n }\r\n\r\n function info(msg, params, position) {\r\n return this.add({\r\n type: 'info',\r\n msg: msg,\r\n params: params,\r\n timeout: timeout,\r\n toast: toast,\r\n position: position\r\n });\r\n }\r\n\r\n function factory(alertOptions) {\r\n var alert = {\r\n type: alertOptions.type,\r\n msg: $sce.trustAsHtml(alertOptions.msg),\r\n id: alertOptions.alertId,\r\n timeout: alertOptions.timeout,\r\n toast: alertOptions.toast,\r\n position: alertOptions.position ? alertOptions.position : 'top right',\r\n scoped: alertOptions.scoped,\r\n close: function (alerts) {\r\n return closeAlert(this.id, alerts);\r\n }\r\n };\r\n if(!alert.scoped) {\r\n alerts.push(alert);\r\n }\r\n return alert;\r\n }\r\n\r\n function addAlert(alertOptions, extAlerts) {\r\n alertOptions.alertId = alertId++;\r\n var that = this;\r\n var alert = this.factory(alertOptions);\r\n if (alertOptions.timeout && alertOptions.timeout > 0) {\r\n $timeout(function () {\r\n that.closeAlert(alertOptions.alertId, extAlerts);\r\n }, alertOptions.timeout);\r\n }\r\n return alert;\r\n }\r\n\r\n function closeAlert(id, extAlerts) {\r\n var thisAlerts = extAlerts ? extAlerts : alerts;\r\n return closeAlertByIndex(thisAlerts.map(function(e) { return e.id; }).indexOf(id), thisAlerts);\r\n }\r\n\r\n function closeAlertByIndex(index, thisAlerts) {\r\n return thisAlerts.splice(index, 1);\r\n }\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n var jhiAlert = {\r\n template: '
' +\r\n '
' +\r\n '
' +\r\n '
' +\r\n '
',\r\n controller: jhiAlertController\r\n };\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .component('jhiAlert', jhiAlert);\r\n\r\n jhiAlertController.$inject = ['$scope', 'AlertService'];\r\n\r\n function jhiAlertController($scope, AlertService) {\r\n var vm = this;\r\n\r\n vm.alerts = AlertService.get();\r\n $scope.$on('$destroy', function () {\r\n vm.alerts = [];\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('notificationInterceptor', notificationInterceptor);\r\n\r\n notificationInterceptor.$inject = ['$q', 'AlertService'];\r\n\r\n function notificationInterceptor ($q, AlertService) {\r\n var service = {\r\n response: response\r\n };\r\n\r\n return service;\r\n\r\n function response (response) {\r\n var headers = Object.keys(response.headers()).filter(function (header) {\r\n return header.indexOf('app-alert', header.length - 'app-alert'.length) !== -1 || header.indexOf('app-params', header.length - 'app-params'.length) !== -1;\r\n }).sort();\r\n var alertKey = response.headers(headers[0]);\r\n if (angular.isString(alertKey)) {\r\n AlertService.success(alertKey, { param : response.headers(headers[1])});\r\n }\r\n return response;\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('errorHandlerInterceptor', errorHandlerInterceptor);\r\n\r\n errorHandlerInterceptor.$inject = ['$q', '$rootScope'];\r\n\r\n function errorHandlerInterceptor ($q, $rootScope) {\r\n var service = {\r\n responseError: responseError\r\n };\r\n\r\n return service;\r\n\r\n function responseError (response) {\r\n if (!(response.status === 401 && (response.data === '' || (response.data.path && response.data.path.indexOf('/api/account') === 0 )))) {\r\n $rootScope.$emit('smarteyesjhApp.httpError', response);\r\n }\r\n return $q.reject(response);\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('authExpiredInterceptor', authExpiredInterceptor);\r\n\r\n authExpiredInterceptor.$inject = ['$rootScope', '$q', '$injector', '$localStorage', '$sessionStorage'];\r\n\r\n function authExpiredInterceptor($rootScope, $q, $injector, $localStorage, $sessionStorage) {\r\n var service = {\r\n responseError: responseError\r\n };\r\n\r\n return service;\r\n\r\n function responseError(response) {\r\n if (response.status === 401) {\r\n delete $localStorage.authenticationToken;\r\n delete $sessionStorage.authenticationToken;\r\n var Principal = $injector.get('Principal');\r\n if (Principal.isAuthenticated()) {\r\n var Auth = $injector.get('Auth');\r\n Auth.authorize(true);\r\n }\r\n }\r\n return $q.reject(response);\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('authInterceptor', authInterceptor);\r\n\r\n authInterceptor.$inject = ['$rootScope', '$q', '$location', '$localStorage', '$sessionStorage'];\r\n\r\n function authInterceptor ($rootScope, $q, $location, $localStorage, $sessionStorage) {\r\n var service = {\r\n request: request\r\n };\r\n\r\n return service;\r\n\r\n function request (config) {\r\n if (!config || !config.url || /^http/.test(config.url)) return config;\r\n\r\n /*jshint camelcase: false */\r\n config.headers = config.headers || {};\r\n var token = $localStorage.authenticationToken || $sessionStorage.authenticationToken;\r\n if (token) {\r\n config.headers.Authorization = 'Bearer ' + token;\r\n }\r\n return config;\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('apiInterceptor', apiInterceptor);\r\n\r\n apiInterceptor.$inject = ['API_URL'];\r\n\r\n function apiInterceptor (API_URL) {\r\n var service = {\r\n request: request\r\n };\r\n\r\n return service;\r\n\r\n function request (config) {\r\n if (config && config.url && (/^api/.test(config.url) || /^token/.test(config.url))) {\r\n config.url = API_URL + '/' + config.url;\r\n }\r\n\r\n return config;\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('stateHandler', stateHandler);\r\n\r\n stateHandler.$inject = ['$rootScope', '$state', '$sessionStorage', '$window',\r\n 'Auth', 'Principal', 'VERSION'];\r\n\r\n function stateHandler($rootScope, $state, $sessionStorage, $window,\r\n Auth, Principal, VERSION) {\r\n return {\r\n initialize: initialize\r\n };\r\n\r\n function initialize() {\r\n $rootScope.VERSION = VERSION;\r\n\r\n var stateChangeStart = $rootScope.$on('$stateChangeStart', function (event, toState, toStateParams, fromState) {\r\n $rootScope.toState = toState;\r\n $rootScope.toStateParams = toStateParams;\r\n $rootScope.fromState = fromState;\r\n\r\n // Redirect to a state with an external URL (http://stackoverflow.com/a/30221248/1098564)\r\n if (toState.external) {\r\n event.preventDefault();\r\n $window.open(toState.url, '_self');\r\n }\r\n\r\n if (Principal.isIdentityResolved()) {\r\n Auth.authorize();\r\n }\r\n\r\n });\r\n\r\n var stateChangeSuccess = $rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams) {\r\n var titleKey = 'SmartEyes' ;\r\n\r\n // Set the page title key to the one configured in state or use default one\r\n if (toState.data.pageTitle) {\r\n titleKey = toState.data.pageTitle;\r\n }\r\n $window.document.title = titleKey;\r\n });\r\n\r\n $rootScope.$on('$destroy', function () {\r\n if(angular.isDefined(stateChangeStart) && stateChangeStart !== null){\r\n stateChangeStart();\r\n }\r\n if(angular.isDefined(stateChangeSuccess) && stateChangeSuccess !== null){\r\n stateChangeSuccess();\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(paginationConfig);\r\n\r\n paginationConfig.$inject = ['uibPaginationConfig', 'paginationConstants'];\r\n\r\n function paginationConfig(uibPaginationConfig, paginationConstants) {\r\n uibPaginationConfig.itemsPerPage = paginationConstants.itemsPerPage;\r\n uibPaginationConfig.maxSize = 5;\r\n uibPaginationConfig.boundaryLinks = true;\r\n uibPaginationConfig.firstText = '«';\r\n uibPaginationConfig.previousText = '‹';\r\n uibPaginationConfig.nextText = '›';\r\n uibPaginationConfig.lastText = '»';\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(pagerConfig);\r\n\r\n pagerConfig.$inject = ['uibPagerConfig', 'paginationConstants'];\r\n\r\n function pagerConfig(uibPagerConfig, paginationConstants) {\r\n uibPagerConfig.itemsPerPage = paginationConstants.itemsPerPage;\r\n uibPagerConfig.previousText = '«';\r\n uibPagerConfig.nextText = '»';\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(localStorageConfig);\r\n\r\n localStorageConfig.$inject = ['$localStorageProvider', '$sessionStorageProvider'];\r\n\r\n function localStorageConfig($localStorageProvider, $sessionStorageProvider) {\r\n $localStorageProvider.setKeyPrefix('jhi-');\r\n $sessionStorageProvider.setKeyPrefix('jhi-');\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(httpConfig);\r\n\r\n httpConfig.$inject = ['$urlRouterProvider', '$httpProvider', 'httpRequestInterceptorCacheBusterProvider', '$urlMatcherFactoryProvider'];\r\n\r\n function httpConfig($urlRouterProvider, $httpProvider, httpRequestInterceptorCacheBusterProvider, $urlMatcherFactoryProvider) {\r\n //Cache everything except rest api requests\r\n httpRequestInterceptorCacheBusterProvider.setMatchlist([/.*api.*/, /.*protected.*/], true);\r\n\r\n $urlRouterProvider.otherwise('/');\r\n\r\n $httpProvider.interceptors.push('errorHandlerInterceptor');\r\n $httpProvider.interceptors.push('authExpiredInterceptor');\r\n $httpProvider.interceptors.push('authInterceptor');\r\n $httpProvider.interceptors.push('apiInterceptor');\r\n $httpProvider.interceptors.push('notificationInterceptor');\r\n // jhipster-needle-angularjs-add-interceptor JHipster will add new application http interceptor here\r\n\r\n $urlMatcherFactoryProvider.type('boolean', {\r\n name : 'boolean',\r\n decode: function(val) { return val === true || val === 'true'; },\r\n encode: function(val) { return val ? 1 : 0; },\r\n equals: function(a, b) { return this.is(a) && a === b; },\r\n is: function(val) { return [true,false,0,1].indexOf(val) >= 0; },\r\n pattern: /bool|true|0|1/\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(compileServiceConfig);\r\n\r\n compileServiceConfig.$inject = ['$compileProvider','DEBUG_INFO_ENABLED'];\r\n\r\n function compileServiceConfig($compileProvider,DEBUG_INFO_ENABLED) {\r\n // disable debug data on prod profile to improve performance\r\n $compileProvider.debugInfoEnabled(DEBUG_INFO_ENABLED);\r\n\r\n /*\r\n If you wish to debug an application with this information\r\n then you should open up a debug console in the browser\r\n then call this method directly in this console:\r\n\r\n\t\tangular.reloadWithDebugInfo();\r\n\t\t*/\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(alertServiceConfig);\r\n\r\n alertServiceConfig.$inject = ['AlertServiceProvider'];\r\n\r\n function alertServiceConfig(AlertServiceProvider) {\r\n // set below to true to make alerts look like toast\r\n AlertServiceProvider.showAsToast(false);\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('app', {\r\n abstract: true,\r\n views: {\r\n 'navbar@': {\r\n templateUrl: 'app/layouts/navbar/navbar.html',\r\n controller: 'NavbarController',\r\n controllerAs: 'vm'\r\n },\r\n 'footer@': {\r\n templateUrl: 'app/layouts/footer/footer.html',\r\n controller: 'NavbarController',\r\n controllerAs: 'vm'\r\n },\r\n 'cotizadorFlotante@': {\r\n templateUrl: 'app/layouts/cotizadorFlotante/cotizadorFlotante.html',\r\n controller: 'CotizadorFlotanteController',\r\n controllerAs: 'vm'\r\n },\r\n 'whatsappLink@': {\r\n templateUrl: 'app/layouts/whatsappLink/whatsappLink.html',\r\n controller: 'WhatsappLinkController',\r\n controllerAs: 'vm'\r\n }\r\n },\r\n resolve: {\r\n authorize: ['Auth',\r\n function (Auth) {\r\n return Auth.authorize();\r\n }\r\n ]\r\n }\r\n });\r\n }\r\n})();\r\n\n(function () {\n 'use strict';\n // DO NOT EDIT THIS FILE, EDIT THE GULP TASK NGCONSTANT SETTINGS INSTEAD WHICH GENERATES THIS FILE\n angular\n .module('smarteyesjhApp')\n .constant('VERSION', \"0.0.1-SNAPSHOT\")\n .constant('DEBUG_INFO_ENABLED', false)\n .constant('BUILD_TIMESTAMP', 1730377922096)\n .constant('API_URL', \"\")\n .constant('BACKOFFICE_API_URL', \"http://hcoffice.sytes.net:9001\")\n;\n})();\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UserManagementDialogController',UserManagementDialogController);\r\n\r\n UserManagementDialogController.$inject = ['$stateParams', '$uibModalInstance', 'entity', 'User'];\r\n\r\n function UserManagementDialogController ($stateParams, $uibModalInstance, entity, User) {\r\n var vm = this;\r\n\r\n vm.authorities = ['ROLE_USER', 'ROLE_ADMIN'];\r\n vm.clear = clear;\r\n vm.languages = null;\r\n vm.save = save;\r\n vm.user = entity;\r\n\r\n\r\n\r\n function clear () {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function onSaveSuccess (result) {\r\n vm.isSaving = false;\r\n $uibModalInstance.close(result);\r\n }\r\n\r\n function onSaveError () {\r\n vm.isSaving = false;\r\n }\r\n\r\n function save () {\r\n vm.isSaving = true;\r\n if (vm.user.id !== null) {\r\n User.update(vm.user, onSaveSuccess, onSaveError);\r\n } else {\r\n vm.user.langKey = 'en';\r\n User.save(vm.user, onSaveSuccess, onSaveError);\r\n }\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UserManagementDetailController', UserManagementDetailController);\r\n\r\n UserManagementDetailController.$inject = ['$stateParams', 'User'];\r\n\r\n function UserManagementDetailController($stateParams, User) {\r\n var vm = this;\r\n\r\n vm.load = load;\r\n vm.user = {};\r\n\r\n vm.load($stateParams.login);\r\n\r\n function load(login) {\r\n User.get({login: login}, function(result) {\r\n vm.user = result;\r\n });\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UserManagementDeleteController', UserManagementDeleteController);\r\n\r\n UserManagementDeleteController.$inject = ['$uibModalInstance', 'entity', 'User'];\r\n\r\n function UserManagementDeleteController ($uibModalInstance, entity, User) {\r\n var vm = this;\r\n\r\n vm.user = entity;\r\n vm.clear = clear;\r\n vm.confirmDelete = confirmDelete;\r\n\r\n function clear () {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function confirmDelete (login) {\r\n User.delete({login: login},\r\n function () {\r\n $uibModalInstance.close(true);\r\n });\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UserManagementAssignClienteDialogController',UserManagementAssignClienteDialogController);\r\n\r\n UserManagementAssignClienteDialogController.$inject = ['$stateParams', '$uibModalInstance', 'entity', 'User', 'paginationConstants', 'Cliente'];\r\n\r\n function UserManagementAssignClienteDialogController ($stateParams, $uibModalInstance, entity, User, paginationConstants, Cliente) {\r\n var vm = this;\r\n\r\n function init() {\r\n vm.user = entity;\r\n vm.page = 1;\r\n vm.itemsPerPage = paginationConstants.itemsPerPage;\r\n vm.loadAll();\r\n }\r\n\r\n vm.loadAll = function() {\r\n window.scrollTo(0, 0);\r\n\r\n Cliente.query({\r\n Number: vm.page - 1,\r\n TotalElements: vm.itemsPerPage\r\n }, onSuccess, onError);\r\n };\r\n\r\n function onSuccess (data) {\r\n vm.totalItems = data.TotalElements;\r\n vm.queryCount = vm.totalItems;\r\n vm.page = data.Number + 1;\r\n vm.clientes = data.Content;\r\n }\r\n\r\n function onError (error) {\r\n AlertService.error(error.data.message);\r\n }\r\n\r\n vm.clear = function () {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n function onSaveSuccess (result) {\r\n vm.isSaving = false;\r\n $uibModalInstance.close(result);\r\n }\r\n\r\n function onSaveError () {\r\n vm.isSaving = false;\r\n }\r\n\r\n vm.save = function () {\r\n vm.user.Cliente = vm.clientes.find(function (cliente) {\r\n return cliente.Id === parseInt(vm.user.Cliente.Id);\r\n });\r\n User.update({id:vm.user.Id},vm.user, onSaveSuccess, onSaveError);\r\n };\r\n\r\n init();\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('user-management', {\r\n parent: 'admin',\r\n url: '/user-management',\r\n data: {\r\n authorities: ['ROLE_ADMIN'],\r\n pageTitle: 'Users'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/user-management/user-management.html',\r\n controller: 'UserManagementController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n })\r\n .state('user-management.new', {\r\n url: '/new',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/user-management/user-management-dialog.html',\r\n controller: 'UserManagementDialogController',\r\n controllerAs: 'vm',\r\n backdrop: 'static',\r\n size: 'lg',\r\n resolve: {\r\n entity: function () {\r\n return {\r\n id: null, login: null, firstName: null, lastName: null, email: null,\r\n activated: true, langKey: null, createdBy: null, createdDate: null,\r\n lastModifiedBy: null, lastModifiedDate: null, resetDate: null,\r\n resetKey: null, authorities: null\r\n };\r\n }\r\n }\r\n }).result.then(function() {\r\n $state.go('user-management', null, { reload: true });\r\n }, function() {\r\n $state.go('user-management');\r\n });\r\n }]\r\n })\r\n .state('user-management.edit', {\r\n url: '/{login}/edit',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/user-management/user-management-dialog.html',\r\n controller: 'UserManagementDialogController',\r\n controllerAs: 'vm',\r\n backdrop: 'static',\r\n size: 'lg',\r\n resolve: {\r\n entity: ['User', function(User) {\r\n return User.get({login : $stateParams.login}).$promise;\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('user-management', null, { reload: true });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n })\r\n .state('user-management.assignCliente', {\r\n url: '/{id}/assignCliente',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/user-management/user-management-assign-cliente-dialog.html',\r\n controller: 'UserManagementAssignClienteDialogController',\r\n controllerAs: 'vm',\r\n backdrop: 'static',\r\n size: 'lg',\r\n resolve: {\r\n entity: ['User', function(User) {\r\n return User.get({id : $stateParams.id}).$promise;\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('user-management', null, { reload: true });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n })\r\n .state('user-management-detail', {\r\n parent: 'user-management',\r\n url: '/{login}',\r\n data: {\r\n authorities: ['ROLE_ADMIN'],\r\n pageTitle: 'smarteyesjh'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/user-management/user-management-detail.html',\r\n controller: 'UserManagementDetailController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n })\r\n .state('user-management.delete', {\r\n url: '/{login}/delete',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/user-management/user-management-delete-dialog.html',\r\n controller: 'UserManagementDeleteController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n entity: ['User', function(User) {\r\n return User.get({login : $stateParams.login}).$promise;\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('user-management', null, { reload: true });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('UserManagementController', UserManagementController);\r\n\r\n UserManagementController.$inject = ['Principal', 'User', 'ParseLinks', 'AlertService', '$state', 'paginationConstants'];\r\n\r\n function UserManagementController(Principal, User, ParseLinks, AlertService, $state, paginationConstants) {\r\n var vm = this;\r\n\r\n function init () {\r\n vm.page = 1;\r\n vm.itemsPerPage = paginationConstants.itemsPerPage;\r\n vm.loadAll();\r\n }\r\n\r\n vm.loadAll = function () {\r\n var page ={};\r\n page.number = vm.page - 1;\r\n page.size = vm.itemsPerPage;\r\n\r\n User.query(page, onSuccess, onError);\r\n };\r\n\r\n function onSuccess(data) {\r\n vm.totalItems = data.TotalElements;\r\n vm.queryCount = vm.totalItems;\r\n vm.page = data.Number + 1;\r\n vm.users = data.Content;\r\n }\r\n\r\n function onError(error) {\r\n AlertService.error(error.data.message);\r\n }\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('RespuestasEditController', RespuestasEditController);\r\n\r\n RespuestasEditController.$inject = ['$uibModalInstance', 'nroInstancia', 'encuestaAccionId', 'RespuestasService'];\r\n\r\n function RespuestasEditController ($uibModalInstance, nroInstancia, encuestaAccionId, RespuestasService) {\r\n var vm = this;\r\n vm.loading = true;\r\n vm.min = 1;\r\n vm.max = 10;\r\n vm.multipleChoiceArray = [];\r\n\r\n function init () {\r\n RespuestasService.getRespuesta(encuestaAccionId, nroInstancia).then(function (respuesta) {\r\n vm.respuesta = respuesta.data;\r\n if (vm.respuesta.EncuestaAccion.AccionType == 5) {\r\n vm.respuesta.EncuestaAccion.MultipleChoice.forEach(function(element) {\r\n vm.multipleChoiceArray[element.Id] = false;\r\n });\r\n var respuestasMC = vm.respuesta.Valor.split(',');\r\n respuestasMC.forEach(function(element) {\r\n vm.multipleChoiceArray[parseInt(element)] = true;\r\n });\r\n }\r\n vm.loading = false;\r\n })\r\n }\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.save = function(respuesta) {\r\n if (respuesta.EncuestaAccion.AccionType == 5) {\r\n respuesta.Valor = \"\";\r\n respuesta.EncuestaAccion.MultipleChoice.forEach(function(element) {\r\n if(vm.multipleChoiceArray[element.Id]) {\r\n respuesta.Valor = respuesta.Valor + element.Id + \",\";\r\n }\r\n });\r\n respuesta.Valor = respuesta.Valor.substring(0, respuesta.Valor.length - 1);\r\n if (respuesta.Valor != \"\") {\r\n RespuestasService.save(respuesta).then(function () {\r\n $uibModalInstance.close(true);\r\n });\r\n }\r\n } else {\r\n RespuestasService.save(respuesta).then(function () {\r\n $uibModalInstance.close(true);\r\n });\r\n }\r\n };\r\n\r\n vm.change = function(Id) {\r\n if (vm.respuesta.EncuestaAccion.PermitirMultiples == false) {\r\n vm.respuesta.EncuestaAccion.MultipleChoice.forEach(function(element) {\r\n if(element.Id != Id) {\r\n vm.multipleChoiceArray[element.Id] = false;\r\n }\r\n });\r\n }\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('RespuestasDeleteController', RespuestasDeleteController);\r\n\r\n RespuestasDeleteController.$inject = ['$uibModalInstance', 'respuesta', 'RespuestasService'];\r\n\r\n function RespuestasDeleteController ($uibModalInstance, respuesta, RespuestasService) {\r\n var vm = this;\r\n\r\n function init () {\r\n vm.respuesta = respuesta;\r\n }\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.confirmDelete = function(respuesta) {\r\n RespuestasService.deleteRespuesta({encuestaAccionid: respuesta.EncuestaAccionId, nroInstancia: respuesta.Instancia},\r\n function () {\r\n $uibModalInstance.close(true);\r\n });\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('respuestas', {\r\n parent: 'app',\r\n url: '/respuestas',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/respuestas/respuestas.html',\r\n controller: 'RespuestasController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('RespuestasService', RespuestasService);\r\n\r\n RespuestasService.$inject = ['$q', '$http', 'API_URL', '$window'];\r\n\r\n function RespuestasService ($q, $http, API_URL, $window) {\r\n return {\r\n get: get,\r\n save: save,\r\n deleteRespuesta: deleteRespuesta,\r\n getRespuesta: getRespuesta\r\n };\r\n\r\n function deleteRespuesta (datos) {\r\n var deferred = $q.defer();\r\n $http.delete('api/respuestas/delete?nroInstancia=' + datos.nroInstancia + \"&encuestaAccionId=\" + datos.encuestaAccionid).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getRespuesta (encuestaAccionId, nroInstancia) {\r\n var deferred = $q.defer();\r\n $http.get('api/respuestas/getByEncuestaAccionAndNroInstancia?nroInstancia=' + nroInstancia + \"&encuestaAccionId=\" + encuestaAccionId).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function save(respuesta) {\r\n var deferred = $q.defer();\r\n \r\n $http.post('api/respuestas/save', respuesta).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function get(page, idEncuesta, fechaDesde, fechaHasta, nroInstancia) {\r\n var deferred = $q.defer();\r\n\r\n var pageData = {\r\n \"Size\" : 20,\r\n \"Number\" : page,\r\n };\r\n \r\n $http.post('api/respuestas/get?encuestaId=' +\r\n idEncuesta + '&fechaDesde=' + (!fechaDesde ? 'null' : fechaDesde.getTime()) \r\n + '&fechaHasta=' + (!fechaHasta ? 'null' : fechaHasta.getTime()) \r\n + '&nroInstancia=' + (nroInstancia ? nroInstancia.toString() : null), pageData).then(function (response) {\r\n deferred.resolve(response);\r\n }).catch(function(error){\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('RespuestasController', RespuestasController);\r\n\r\n RespuestasController.$inject = ['$uibModal', '$state', 'RespuestasService'];\r\n\r\n function RespuestasController ($uibModal, $state, RespuestasService) {\r\n var vm = this;\r\n\r\n vm.respuestas = [];\r\n vm.fechaDesde = null;\r\n vm.fechaHasta = null;\r\n vm.nroInstancia = null;\r\n vm.encuestaId = null;\r\n vm.totalPages = 0;\r\n vm.page = 0;\r\n vm.loadingTabla=false;\r\n\r\n function init () \r\n {\r\n }\r\n\r\n vm.getRespuestas = function(page) {\r\n vm.dataIsReady = false;\r\n vm.loadingTabla=true;\r\n\r\n RespuestasService.get(page, vm.encuestaId, vm.fechaDesde, vm.fechaHasta, vm.nroInstancia)\r\n .then(function(result) {\r\n \r\n vm.totalPages = result.data.TotalPages;\r\n \r\n if(result.data.Content)\r\n vm.respuestas = result.data.Content;\r\n vm.dataIsReady = true;\r\n vm.loadingTabla=false;\r\n });\r\n };\r\n\r\n vm.removeRespuesta = function(respuesta) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/respuestas/respuestas-delete-dialog.html',\r\n controller: 'RespuestasDeleteController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n respuesta: function () {\r\n return respuesta;\r\n }\r\n }\r\n }).result.then(function (result) {\r\n vm.getRespuestas(vm.page);\r\n });\r\n };\r\n\r\n vm.editRespuesta = function(respuesta) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/respuestas/respuestas-edit-dialog.html',\r\n controller: 'RespuestasEditController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n encuestaAccionId: function() { return respuesta.EncuestaAccionId; },\r\n nroInstancia: function() { return respuesta.Instancia; }\r\n }\r\n }).result.then(function (result) {\r\n vm.getRespuestas(vm.page);\r\n });\r\n };\r\n\r\n vm.changePage = function (page) {\r\n vm.page = page;\r\n vm.getRespuestas(page);\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('jhi-metrics', {\r\n parent: 'admin',\r\n url: '/metrics',\r\n data: {\r\n authorities: ['ROLE_ADMIN'],\r\n pageTitle: 'Application Metrics'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/metrics/metrics.html',\r\n controller: 'JhiMetricsMonitoringController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('JhiMetricsService', JhiMetricsService);\r\n\r\n JhiMetricsService.$inject = ['$rootScope', '$http'];\r\n\r\n function JhiMetricsService ($rootScope, $http) {\r\n var service = {\r\n getMetrics: getMetrics,\r\n threadDump: threadDump\r\n };\r\n\r\n return service;\r\n\r\n function getMetrics () {\r\n return $http.get('management/metrics').then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n\r\n function threadDump () {\r\n return $http.get('management/dump').then(function (response) {\r\n return response.data;\r\n });\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('JhiMetricsMonitoringModalController', JhiMetricsMonitoringModalController);\r\n\r\n JhiMetricsMonitoringModalController.$inject = ['$uibModalInstance', 'threadDump'];\r\n\r\n function JhiMetricsMonitoringModalController ($uibModalInstance, threadDump) {\r\n var vm = this;\r\n\r\n vm.cancel = cancel;\r\n vm.getLabelClass = getLabelClass;\r\n vm.threadDump = threadDump;\r\n vm.threadDumpAll = 0;\r\n vm.threadDumpBlocked = 0;\r\n vm.threadDumpRunnable = 0;\r\n vm.threadDumpTimedWaiting = 0;\r\n vm.threadDumpWaiting = 0;\r\n\r\n angular.forEach(threadDump, function(value) {\r\n if (value.threadState === 'RUNNABLE') {\r\n vm.threadDumpRunnable += 1;\r\n } else if (value.threadState === 'WAITING') {\r\n vm.threadDumpWaiting += 1;\r\n } else if (value.threadState === 'TIMED_WAITING') {\r\n vm.threadDumpTimedWaiting += 1;\r\n } else if (value.threadState === 'BLOCKED') {\r\n vm.threadDumpBlocked += 1;\r\n }\r\n });\r\n\r\n vm.threadDumpAll = vm.threadDumpRunnable + vm.threadDumpWaiting +\r\n vm.threadDumpTimedWaiting + vm.threadDumpBlocked;\r\n\r\n function cancel () {\r\n $uibModalInstance.dismiss('cancel');\r\n }\r\n\r\n function getLabelClass (threadState) {\r\n if (threadState === 'RUNNABLE') {\r\n return 'label-success';\r\n } else if (threadState === 'WAITING') {\r\n return 'label-info';\r\n } else if (threadState === 'TIMED_WAITING') {\r\n return 'label-warning';\r\n } else if (threadState === 'BLOCKED') {\r\n return 'label-danger';\r\n }\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('JhiMetricsMonitoringController', JhiMetricsMonitoringController);\r\n\r\n JhiMetricsMonitoringController.$inject = ['$scope','JhiMetricsService', '$uibModal'];\r\n\r\n function JhiMetricsMonitoringController ($scope, JhiMetricsService, $uibModal) {\r\n var vm = this;\r\n\r\n vm.metrics = {};\r\n vm.refresh = refresh;\r\n vm.refreshThreadDumpData = refreshThreadDumpData;\r\n vm.servicesStats = {};\r\n vm.updatingMetrics = true;\r\n\r\n vm.refresh();\r\n\r\n $scope.$watch('vm.metrics', function (newValue) {\r\n vm.servicesStats = {};\r\n angular.forEach(newValue.timers, function (value, key) {\r\n if (key.includes('web.rest') || key.includes('service')) {\r\n vm.servicesStats[key] = value;\r\n }\r\n });\r\n\r\n });\r\n\r\n function refresh () {\r\n vm.updatingMetrics = true;\r\n JhiMetricsService.getMetrics().then(function (promise) {\r\n vm.metrics = promise;\r\n vm.updatingMetrics = false;\r\n }, function (promise) {\r\n vm.metrics = promise.data;\r\n vm.updatingMetrics = false;\r\n });\r\n }\r\n\r\n function refreshThreadDumpData () {\r\n JhiMetricsService.threadDump().then(function(data) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/metrics/metrics.modal.html',\r\n controller: 'JhiMetricsMonitoringModalController',\r\n controllerAs: 'vm',\r\n size: 'lg',\r\n resolve: {\r\n threadDump: function() {\r\n return data;\r\n }\r\n\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('AdminMembresiaEditMembershipController', AdminMembresiaEditMembershipController);\r\n\r\n AdminMembresiaEditMembershipController.$inject = ['membership', 'items', '$uibModalInstance'];\r\n\r\n function AdminMembresiaEditMembershipController(membership, items, $uibModalInstance) {\r\n var vm = this;\r\n\r\n function init () {\r\n vm.membership = Object.assign({}, membership);\r\n vm.selected = Object.assign({}, vm.membership.items);\r\n\r\n vm.items = items;\r\n }\r\n\r\n vm.select = function (item) {\r\n vm.selected[item.Nombre] = !vm.selected[item.Nombre];\r\n };\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.save = function() {\r\n vm.membership.Items = [];\r\n\r\n for (var i=0;i maxValue)\r\n maxValue = x[x.length - 1].ValorSKU;\r\n }\r\n });\r\n\r\n if ((minValue % 10) > 5)\r\n minValue = minValue + 5 - (minValue % 10);\r\n else\r\n minValue = minValue - (minValue % 10)\r\n if ((maxValue % 10) > 5)\r\n maxValue = maxValue + 5 - (maxValue % 10);\r\n else\r\n maxValue = maxValue - (maxValue % 10);\r\n for (var minValueAux = minValue; minValueAux <= maxValue; minValueAux += 5)\r\n vm.barChartLabels.push(minValueAux);\r\n\r\n vm.valoresSKUList = data;\r\n var pos = 0;\r\n vm.valoresSKUList.forEach(function(valoresSKU) {\r\n if (valoresSKU.length != 0) {\r\n vm.barChartSeries.push(\"\");\r\n vm.barChartData.push([]);\r\n vm.barChartColors.push(vm.colors[pos]);\r\n vm.encuestaDataList.push({ Data: null, Media: null, Moda: null, Sd: null, Max: null, Min: null });\r\n var encuestaData = vm.encuestaDataList[pos];\r\n vm.getEncuestaData(pos);\r\n\r\n var valorActual = valoresSKU[0].ValorSKU;\r\n var cantidadActual = 0;\r\n var valorAux;\r\n var cantidadAux = 0;\r\n valoresSKU.forEach(function(x) {\r\n if (x.ValorSKU == valorActual) {\r\n cantidadActual++;\r\n } else if (x.ValorSKU == valorAux) {\r\n cantidadAux++;\r\n } else {\r\n if (cantidadAux > cantidadActual) {\r\n valorActual = valorAux;\r\n cantidadActual = cantidadAux;\r\n }\r\n valorAux = x.ValorSKU;\r\n cantidadAux = 0;\r\n }\r\n });\r\n encuestaData.Media = valoresSKU[Math.round(valoresSKU.length / 2)].ValorSKU;\r\n\r\n var sum = 0;\r\n valoresSKU.forEach(function(x) {\r\n sum += Math.pow(x.ValorSKU - encuestaData.Media, 2);\r\n });\r\n\r\n encuestaData.Moda = valorActual;\r\n encuestaData.Min = valoresSKU[0].ValorSKU;\r\n encuestaData.Max = valoresSKU[valoresSKU.length - 1].ValorSKU;\r\n encuestaData.Sd = Math.round(Math.sqrt(sum / valoresSKU.length), 2);\r\n \r\n for (minValueAux = minValue; minValueAux <= maxValue; minValueAux+=5)\r\n vm.barChartData[pos].push(0);\r\n\r\n valoresSKU.forEach(function(x) {\r\n var elemPos = Math.floor((x.ValorSKU - minValue) / 5);\r\n vm.barChartData[pos][elemPos]++;\r\n });\r\n }\r\n pos++;\r\n });\r\n });\r\n };\r\n\r\n vm.updateByProyecto = function(index) {\r\n updateEncuestas(index);\r\n updateCanales(index);\r\n updateEstados(index);\r\n updateSKUs(index);\r\n }\r\n\r\n function updateEncuestas(index) {\r\n vm.controlInputFiltersList[index].Encuestas = [];\r\n vm.controlInputFiltersList[index].Encuestadores = [];\r\n vm.controlInputList[index].EncuestaId = 0;\r\n vm.controlInputList[index].Encuestadores = [];\r\n ControlInputsService.getEncuestasByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Encuestas = response;\r\n });\r\n }\r\n\r\n function updateCanales(index) {\r\n vm.controlInputFiltersList[index].Canales = [];\r\n vm.controlInputList[index].Canal = null;\r\n ControlInputsService.getCanalesByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Canales = response;\r\n });\r\n }\r\n\r\n function updateEstados(index) {\r\n vm.controlInputFiltersList[index].Estados = [];\r\n vm.controlInputFiltersList[index].Municipios = [];\r\n vm.controlInputList[index].Estado = null;\r\n vm.controlInputList[index].Municipio = null;\r\n ControlInputsService.getEstadosByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Estados = response;\r\n });\r\n }\r\n\r\n function updateSKUs(index) {\r\n vm.controlInputFiltersList[index].SKUs = [];\r\n ControlInputsService.getSKUsByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].SKUs = response;\r\n var skusAux = [];\r\n vm.controlInputList[index].SKUs.forEach(function(x) {\r\n vm.controlInputFiltersList[index].SKUs.forEach(function(y) {\r\n if (y.SKU == x)\r\n skusAux.push(x);\r\n });\r\n });\r\n vm.controlInputList[index].SKUs = skusAux;\r\n });\r\n }\r\n\r\n vm.updateMunicipios = function(index) {\r\n vm.controlInputFiltersList[index].Municipios = [];\r\n vm.controlInputList[index].Municipio = null;\r\n ControlInputsService.getMunicipiosByProyectoAndEstado(vm.controlInputList[index].ProyectoId, vm.controlInputList[index].Estado).then(function (response) {\r\n vm.controlInputFiltersList[index].Municipios = response;\r\n });\r\n }\r\n\r\n vm.updateEncuestadores = function (index) {\r\n vm.controlInputFiltersList[index].Encuestadores = [];\r\n ControlInputsService.getEncuestadoresByEncuesta(vm.controlInputList[index].EncuestaId).then(function (response) {\r\n vm.controlInputFiltersList[index].Encuestadores = response;\r\n var encuestadoresAux = [];\r\n vm.controlInputList[index].Encuestadores.forEach(function(x) {\r\n vm.controlInputFiltersList[index].Encuestadores.forEach(function(y) {\r\n if (y.Id == x)\r\n encuestadoresAux.push(x);\r\n });\r\n });\r\n vm.controlInputList[index].Encuestadores = encuestadoresAux;\r\n });\r\n }\r\n\r\n vm.changeTab = function(route) {\r\n $state.go(route, {controlInputList: vm.controlInputList, fechaDesde: vm.fechaDesde, fechaHasta: vm.fechaHasta}, {reload: true});\r\n }\r\n\r\n vm.getEncuestaData = function (index) {\r\n ControlInputsService.getEncuestaDataByEncuesta(vm.controlInputList[index].ProyectoId, vm.controlInputList[index].EncuestaId).then(function (response) {\r\n vm.encuestaDataList[index].Data = response;\r\n });\r\n }\r\n\r\n vm.exportToCSV = function(encuestador) {\r\n vm.controlInputList.forEach(function(controlInput) {\r\n controlInput.FechaDesde = vm.fechaDesde;\r\n controlInput.FechaHasta = vm.fechaHasta;\r\n });\r\n\r\n ControlInputsService.exportValoresSKUToCSV(vm.controlInputList.filter(function(x) {return x.ProyectoId != 0 && x.SKUs.length != 0;})).then(function (result) {\r\n let p = $interval(vm.checkearZip, 5000, 0, true, result);\r\n let fileName = 'ValoresSKU';\r\n fileName += '_' + vm.fechaDesde + '_' + vm.fechaHasta;\r\n vm.zipsEnProgreso.push({dictId: result, nombre: fileName, check: p, status: 'Comenzando', link: '', csv: true});\r\n });\r\n }\r\n\r\n vm.checkearZip = function(dictId) {\r\n EncuestasClienteService.checkForFile(dictId).then(function(result) {\r\n let item = vm.zipsEnProgreso.find(function(x) {return x.dictId === dictId;});\r\n switch (result) {\r\n case 'Empty':\r\n item.status = 'Vacio';\r\n break;\r\n case 'Running':\r\n item.status = 'Procesando';\r\n break;\r\n case 'RanToCompletion':\r\n item.status = 'Completado';\r\n break;\r\n default:\r\n item.status = 'Error';\r\n break;\r\n }\r\n $scope.$evalAsync();\r\n if(result === 'RanToCompletion' || result === 'Faulted' || result == 'Canceled' || result === 'Empty') {\r\n $interval.cancel(item.check);\r\n item.link = result === 'RanToCompletion' ? EncuestasClienteService.getLinkForFile(item.dictId, item.csv) : '';\r\n }\r\n })\r\n }\r\n\r\n vm.descargarOReintentar = function(item) {\r\n if (item.status === 'Completado' || item.status === 'Vacio') {\r\n vm.quitarDeLista(item);\r\n }\r\n }\r\n\r\n vm.quitarDeLista = function(item) {\r\n let index = vm.zipsEnProgreso.indexOf(item);\r\n if(index !== -1) { \r\n vm.zipsEnProgreso.splice(index, 1);\r\n if (vm.zipsEnProgreso.length == 0) {\r\n vm.progressCheckAbierto = false;\r\n }\r\n }\r\n }\r\n\r\n init();\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('tiempoEjecucionUsuario', {\r\n parent: 'app',\r\n url: '/admin/tiempo-ejecucion-usuario',\r\n params: {\r\n controlInputList: null,\r\n fechaDesde: null, \r\n fechaHasta: null\r\n },\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/controlInputs/tiempoEjecucionUsuario/tiempoEjecucionUsuario.html',\r\n controller: 'TiempoEjecucionUsuarioController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n controlInputFilters: ['ControlInputsService', function (ControlInputsService) {\r\n return ControlInputsService.getControlInputFilters();\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('TiempoEjecucionUsuarioController', TiempoEjecucionUsuarioController);\r\n\r\n TiempoEjecucionUsuarioController.$inject = ['controlInputFilters', '$state', '$stateParams', '$interval', '$scope', 'ControlInputsService', 'EncuestasClienteService'];\r\n\r\n function TiempoEjecucionUsuarioController (controlInputFilters, $state, $stateParams, $interval, $scope, ControlInputsService, EncuestasClienteService) {\r\n var vm = this;\r\n\r\n vm.barChartData = [];\r\n vm.barChartLabels = [];\r\n vm.barChartSeries = [];\r\n vm.barChartColors = [];\r\n\r\n vm.colors = [{\r\n // blue\r\n backgroundColor: 'rgba(93,139,230,1)',\r\n borderColor: 'rgba(93,139,230,1)',\r\n pointBackgroundColor: 'rgba(93,139,230,1)',\r\n pointBorderColor: '#fff',\r\n pointHoverBackgroundColor: '#fff',\r\n pointHoverBorderColor: 'rgba(42,80,156,0.8)'\r\n }, {\r\n // orange\r\n backgroundColor: 'rgba(255,140,0,1)',\r\n borderColor: 'rgba(255,140,0,1)',\r\n pointBackgroundColor: 'rgba(255,140,0,1)',\r\n pointBorderColor: '#fff',\r\n pointHoverBackgroundColor: '#fff',\r\n pointHoverBorderColor: 'rgba(42,80,156,0.8)'\r\n }];\r\n\r\n vm.barChartOptions = {\r\n scales: {\r\n xAxes: [{\r\n scaleLabel: {\r\n display: true,\r\n fontSize: 14,\r\n labelString: 'Tiempo Encuesta'\r\n }\r\n }],\r\n yAxes: [{\r\n scaleLabel: {\r\n display: true,\r\n fontSize: 14,\r\n labelString: 'Cantidad Instancias'\r\n }\r\n }],\r\n y: {\r\n beginAtZero: false\r\n }\r\n },\r\n tooltips: {\r\n callbacks: {\r\n label: function(tooltipItem, data) {\r\n var minutos = data.labels[tooltipItem.index].split(\":\")[0];\r\n var segundos = parseInt(data.labels[tooltipItem.index].split(\":\")[1]) + parseInt(minutos * 60);\r\n var cantidadRespuestas = 0;\r\n var sumaRespuestas = 0;\r\n vm.tiempoEjecucionList[tooltipItem.datasetIndex].filter(function(x) {\r\n if (x.TiempoEjecucion >= segundos && x.TiempoEjecucion < (segundos + vm.sum)) {\r\n cantidadRespuestas++;\r\n sumaRespuestas+=x.CantidadRespuestas;\r\n }\r\n });\r\n return tooltipItem.value + (cantidadRespuestas != 0 ? ' - #' + Math.round(sumaRespuestas / cantidadRespuestas, 2) : \"\");\r\n }\r\n }\r\n }\r\n };\r\n\r\n vm.maxDate = null;\r\n\r\n vm.minDate = null;\r\n\r\n vm.tiempoEjecucionList = [];\r\n\r\n vm.encuestaDataList = [];\r\n\r\n vm.sum = 0;\r\n\r\n vm.fechaDesde = null;\r\n vm.fechaHasta = null;\r\n\r\n vm.controlInputFiltersList = [];\r\n\r\n vm.controlInputList = [];\r\n\r\n vm.cantidadFiltros = 2;\r\n\r\n vm.progressCheckAbierto = false;\r\n\r\n vm.zipsEnProgreso = [];\r\n vm.path = '';\r\n\r\n function init () {\r\n for (let i = 0; i < vm.cantidadFiltros; ++i) {\r\n vm.controlInputFiltersList.push(Object.create(controlInputFilters));\r\n vm.controlInputList.push({ ProyectoId: 0, EncuestaId: 0, Canal: null, Encuestadores: [], Estado: null, Municipio: null });\r\n }\r\n\r\n var pos = 0;\r\n if ($stateParams.controlInputList != null && $stateParams.controlInputList.length <= vm.cantidadFiltros) {\r\n $stateParams.controlInputList.forEach(function(controlInputList) {\r\n if (controlInputList.ProyectoId != 0) {\r\n vm.controlInputList[pos].ProyectoId = controlInputList.ProyectoId;\r\n vm.updateByProyecto(pos);\r\n if (controlInputList.EncuestaId != 0) {\r\n vm.controlInputList[pos].EncuestaId = controlInputList.EncuestaId;\r\n vm.updateEncuestadores(pos);\r\n }\r\n vm.controlInputList[pos] = controlInputList;\r\n }\r\n pos++;\r\n });\r\n }\r\n vm.fechaDesde = $stateParams.fechaDesde;\r\n vm.fechaHasta = $stateParams.fechaHasta;\r\n }\r\n\r\n vm.requestTiempoEjecucionUsuario = function () {\r\n vm.sum = 0;\r\n vm.barChartLabels = [];\r\n vm.barChartData = [];\r\n vm.barChartColors = [];\r\n vm.barChartSeries = [];\r\n vm.tiempoEjecucionList = [];\r\n vm.encuestaDataList = [];\r\n vm.controlInputList.forEach(function(controlInput) {\r\n controlInput.FechaDesde = vm.fechaDesde;\r\n controlInput.FechaHasta = vm.fechaHasta;\r\n });\r\n ControlInputsService.getAllData(vm.controlInputList, ControlInputsService.getTiempoEjecucionUsuario).then(function(data) {\r\n var dataAux = [];\r\n var maxValue = 0;\r\n data.forEach(function(x) {\r\n if (x.length != 0 && x[x.length - 1].TiempoEjecucion > maxValue) {\r\n maxValue = x[x.length - 1].TiempoEjecucion;\r\n dataAux = x;\r\n }\r\n });\r\n \r\n var media = dataAux[Math.round(dataAux.length / 2)].TiempoEjecucion;\r\n dataAux.forEach(function(x) {\r\n vm.sum += Math.pow(x.TiempoEjecucion - media, 2);\r\n });\r\n var sumAux = vm.sum;\r\n\r\n vm.sum = Math.round(Math.sqrt(vm.sum / dataAux.length) / 5);\r\n var divisions = Math.ceil((dataAux[dataAux.length - 1].TiempoEjecucion - dataAux[0].TiempoEjecucion) / vm.sum);\r\n\r\n var inicialValue = dataAux[0].TiempoEjecucion;\r\n for (var i = 0, j = inicialValue; i <= divisions; ++i, j += vm.sum) {\r\n vm.barChartLabels.push(Math.floor(j/60) + \":\" + (j%60 < 10 ? \"0\" : \"\") + j%60);\r\n }\r\n if (((dataAux[dataAux.length - 1].TiempoEjecucion - dataAux[0].TiempoEjecucion) % vm.sum) != 0) {\r\n vm.barChartLabels.pop();\r\n }\r\n\r\n vm.tiempoEjecucionList = data;\r\n var pos = 0;\r\n vm.tiempoEjecucionList.forEach(function(tiempoEjecucion) {\r\n if (tiempoEjecucion.length != 0) {\r\n vm.barChartSeries.push(\"\");\r\n vm.barChartData.push([]);\r\n vm.barChartColors.push(vm.colors[pos]);\r\n vm.encuestaDataList.push({ Data: null, Media: null, Moda: null, Sd: null, Max: null, Min: null });\r\n var encuestaData = vm.encuestaDataList[pos];\r\n vm.getEncuestaData(pos);\r\n var tiempoActual = tiempoEjecucion[0].TiempoEjecucion;\r\n var cantidadActual = 0;\r\n var tiempoAux;\r\n var cantidadAux = 0;\r\n tiempoEjecucion.forEach(function(x) {\r\n if (x.TiempoEjecucion == tiempoActual) {\r\n cantidadActual++;\r\n } else if (x.TiempoEjecucion == tiempoAux) {\r\n cantidadAux++;\r\n } else {\r\n if (cantidadAux > cantidadActual) {\r\n tiempoActual = tiempoAux;\r\n cantidadActual = cantidadAux;\r\n }\r\n tiempoAux = x.TiempoEjecucion;\r\n cantidadAux = 0;\r\n }\r\n });\r\n var aux = tiempoEjecucion[Math.round(tiempoEjecucion.length / 2)].TiempoEjecucion;\r\n encuestaData.Media = Math.floor(aux/60) + \":\" + (aux%60 < 10 ? \"0\" : \"\") + aux%60;\r\n aux = tiempoActual;\r\n encuestaData.Moda = Math.floor(aux/60) + \":\" + (aux%60 < 10 ? \"0\" : \"\") + aux%60;\r\n aux = tiempoEjecucion[0].TiempoEjecucion;\r\n encuestaData.Min = Math.floor(aux/60) + \":\" + (aux%60 < 10 ? \"0\" : \"\") + aux%60;\r\n aux = tiempoEjecucion[tiempoEjecucion.length - 1].TiempoEjecucion;\r\n encuestaData.Max = Math.floor(aux/60) + \":\" + (aux%60 < 10 ? \"0\" : \"\") + aux%60;\r\n encuestaData.Sd = Math.round(Math.sqrt(sumAux / tiempoEjecucion.length), 2);\r\n \r\n for (var i = 0, j = inicialValue; i <= divisions; ++i, j += vm.sum) {\r\n vm.barChartData[pos].push(0);\r\n }\r\n if (((tiempoEjecucion[tiempoEjecucion.length - 1].TiempoEjecucion - tiempoEjecucion[0].TiempoEjecucion) % vm.sum) != 0) {\r\n vm.barChartData[pos].pop();\r\n }\r\n tiempoEjecucion.forEach(function(x) {\r\n var posElem = Math.floor((x.TiempoEjecucion - inicialValue) / vm.sum);\r\n vm.barChartData[pos][posElem]++;\r\n });\r\n }\r\n pos++;\r\n });\r\n });\r\n };\r\n\r\n vm.updateByProyecto = function(index) {\r\n updateEncuestas(index);\r\n updateCanales(index);\r\n updateEstados(index);\r\n }\r\n\r\n function updateEncuestas(index) {\r\n vm.controlInputFiltersList[index].Encuestas = [];\r\n vm.controlInputFiltersList[index].Encuestadores = [];\r\n vm.controlInputList[index].EncuestaId = 0;\r\n vm.controlInputList[index].Encuestadores = [];\r\n ControlInputsService.getEncuestasByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Encuestas = response;\r\n });\r\n }\r\n\r\n function updateCanales(index) {\r\n vm.controlInputFiltersList[index].Canales = [];\r\n vm.controlInputList[index].Canal = null;\r\n ControlInputsService.getCanalesByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Canales = response;\r\n });\r\n }\r\n\r\n function updateEstados(index) {\r\n vm.controlInputFiltersList[index].Estados = [];\r\n vm.controlInputFiltersList[index].Municipios = [];\r\n vm.controlInputList[index].Estado = null;\r\n vm.controlInputList[index].Municipio = null;\r\n ControlInputsService.getEstadosByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Estados = response;\r\n });\r\n }\r\n\r\n vm.updateMunicipios = function(index) {\r\n vm.controlInputFiltersList[index].Municipios = [];\r\n vm.controlInputList[index].Municipio = null;\r\n ControlInputsService.getMunicipiosByProyectoAndEstado(vm.controlInputList[index].ProyectoId, vm.controlInputList[index].Estado).then(function (response) {\r\n vm.controlInputFiltersList[index].Municipios = response;\r\n });\r\n }\r\n\r\n vm.updateEncuestadores = function (index) {\r\n vm.controlInputFiltersList[index].Encuestadores = [];\r\n ControlInputsService.getEncuestadoresByEncuesta(vm.controlInputList[index].EncuestaId).then(function (response) {\r\n vm.controlInputFiltersList[index].Encuestadores = response;\r\n var encuestadoresAux = [];\r\n vm.controlInputList[index].Encuestadores.forEach(function(x) {\r\n vm.controlInputFiltersList[index].Encuestadores.forEach(function(y) {\r\n if (y.Id == x)\r\n encuestadoresAux.push(x);\r\n });\r\n });\r\n vm.controlInputList[index].Encuestadores = encuestadoresAux;\r\n });\r\n }\r\n\r\n vm.changeTab = function(route) {\r\n $state.go(route, {controlInputList: vm.controlInputList, fechaDesde: vm.fechaDesde, fechaHasta: vm.fechaHasta}, {reload: true});\r\n }\r\n\r\n vm.getEncuestaData = function (index) {\r\n ControlInputsService.getEncuestaDataByEncuesta(vm.controlInputList[index].ProyectoId, vm.controlInputList[index].EncuestaId).then(function (response) {\r\n vm.encuestaDataList[index].Data = response;\r\n });\r\n }\r\n\r\n vm.exportToCSV = function(encuestador) {\r\n vm.controlInputList.forEach(function(controlInput) {\r\n controlInput.FechaDesde = vm.fechaDesde;\r\n controlInput.FechaHasta = vm.fechaHasta;\r\n });\r\n\r\n ControlInputsService.exportControlInputToCSV(vm.controlInputList.filter(function(x) {return x.ProyectoId != 0;})).then(function (result) {\r\n let p = $interval(vm.checkearZip, 5000, 0, true, result);\r\n let fileName = 'TiempoEjecucionUsuario';\r\n fileName += '_' + vm.fechaDesde + '_' + vm.fechaHasta;\r\n vm.zipsEnProgreso.push({dictId: result, nombre: fileName, check: p, status: 'Comenzando', link: '', csv: true});\r\n });\r\n }\r\n\r\n vm.checkearZip = function(dictId) {\r\n EncuestasClienteService.checkForFile(dictId).then(function(result) {\r\n let item = vm.zipsEnProgreso.find(function(x) {return x.dictId === dictId;});\r\n switch (result) {\r\n case 'Empty':\r\n item.status = 'Vacio';\r\n break;\r\n case 'Running':\r\n item.status = 'Procesando';\r\n break;\r\n case 'RanToCompletion':\r\n item.status = 'Completado';\r\n break;\r\n default:\r\n item.status = 'Error';\r\n break;\r\n }\r\n $scope.$evalAsync();\r\n if(result === 'RanToCompletion' || result === 'Faulted' || result == 'Canceled' || result === 'Empty') {\r\n $interval.cancel(item.check);\r\n item.link = result === 'RanToCompletion' ? EncuestasClienteService.getLinkForFile(item.dictId, item.csv) : '';\r\n }\r\n })\r\n }\r\n\r\n vm.descargarOReintentar = function(item) {\r\n if (item.status === 'Completado' || item.status === 'Vacio') {\r\n vm.quitarDeLista(item);\r\n }\r\n }\r\n\r\n vm.quitarDeLista = function(item) {\r\n let index = vm.zipsEnProgreso.indexOf(item);\r\n if(index !== -1) { \r\n vm.zipsEnProgreso.splice(index, 1);\r\n if (vm.zipsEnProgreso.length == 0) {\r\n vm.progressCheckAbierto = false;\r\n }\r\n }\r\n }\r\n\r\n init();\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('ControlInputsService', ControlInputsService);\r\n\r\n ControlInputsService.$inject = ['$q', '$http'];\r\n\r\n function ControlInputsService($q, $http) {\r\n return {\r\n getControlInputFilters: getControlInputFilters,\r\n getAllData: getAllData,\r\n getTiempoEjecucionUsuario: getTiempoEjecucionUsuario,\r\n getCantidadRespuestas: getCantidadRespuestas,\r\n getValoresSKU: getValoresSKU,\r\n getEncuestasByProyecto: getEncuestasByProyecto,\r\n getCanalesByProyecto: getCanalesByProyecto,\r\n getEstadosByProyecto: getEstadosByProyecto,\r\n getMunicipiosByProyectoAndEstado: getMunicipiosByProyectoAndEstado,\r\n getEncuestadoresByEncuesta: getEncuestadoresByEncuesta,\r\n getSKUsByProyecto: getSKUsByProyecto,\r\n getEncuestaDataByEncuesta: getEncuestaDataByEncuesta,\r\n exportControlInputToCSV: exportControlInputToCSV,\r\n exportValoresSKUToCSV: exportValoresSKUToCSV\r\n };\r\n\r\n function getControlInputFilters() {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/controlInputFilters').then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getAllData(controlInputList, dataFunction) {\r\n var deferred = $q.defer();\r\n\r\n $q.all(controlInputList.map(function(x) {\r\n return dataFunction(x);\r\n })).then(function(data) {\r\n deferred.resolve(data);\r\n }).catch(function(error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getTiempoEjecucionUsuario(controlInput) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/control-input/tiempoEjecucionUsuario', controlInput).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getCantidadRespuestas(controlInput) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/control-input/cantidadRespuestas', controlInput).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getValoresSKU(controlInput) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/control-input/valoresSKU', controlInput).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEncuestasByProyecto(proyectoId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/getEncuestasByProyecto?proyectoId=' + proyectoId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getCanalesByProyecto(proyectoId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/getCanalesByProyecto?proyectoId=' + proyectoId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEstadosByProyecto(proyectoId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/getEstadosByProyecto?proyectoId=' + proyectoId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getMunicipiosByProyectoAndEstado(proyectoId, estadoNombre) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/GetMunicipiosByProyectoAndEstado?proyectoId=' + proyectoId + '&estadoNombre=' + estadoNombre).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEncuestadoresByEncuesta(encuestaId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/getEncuestadoresByEncuesta?encuestaId=' + encuestaId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getSKUsByProyecto(proyectoId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/getSKUsByProyecto?proyectoId=' + proyectoId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function getEncuestaDataByEncuesta(proyectoId, encuestaId) {\r\n var deferred = $q.defer();\r\n\r\n $http.get('api/control-input/getEncuestaDataByEncuesta?proyectoId=' + proyectoId + '&encuestaId=' + encuestaId).then(function(response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function exportControlInputToCSV(controlInputList) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/control-input/results/control-input/csv', controlInputList).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function exportValoresSKUToCSV(controlInputList) {\r\n var deferred = $q.defer();\r\n\r\n $http.post('api/control-input/results/valores-sku/csv', controlInputList).then(function (response) {\r\n deferred.resolve(response.data);\r\n }).catch(function (error) {\r\n deferred.reject(error);\r\n });\r\n\r\n return deferred.promise;\r\n }\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('cantidadRespuestas', {\r\n parent: 'app',\r\n url: '/admin/cantidad-respuestas',\r\n params: {\r\n controlInputList: null,\r\n fechaDesde: null, \r\n fechaHasta: null\r\n },\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/controlInputs/cantidadRespuestas/cantidadRespuestas.html',\r\n controller: 'CantidadRespuestasController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n controlInputFilters: ['ControlInputsService', function (ControlInputsService) {\r\n return ControlInputsService.getControlInputFilters();\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n }\r\n})();\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('CantidadRespuestasController', CantidadRespuestasController);\r\n\r\n CantidadRespuestasController.$inject = ['controlInputFilters', '$state', '$stateParams', '$interval', '$scope', 'ControlInputsService'];\r\n\r\n function CantidadRespuestasController (controlInputFilters, $state, $stateParams, $interval, $scope, ControlInputsService, EncuestasClienteService) {\r\n var vm = this;\r\n\r\n vm.barChartData = [];\r\n vm.barChartLabels = [];\r\n vm.barChartSeries = [];\r\n vm.barChartColors = [];\r\n\r\n vm.colors = [{\r\n // blue\r\n backgroundColor: 'rgba(93,139,230,1)',\r\n borderColor: 'rgba(93,139,230,1)',\r\n pointBackgroundColor: 'rgba(93,139,230,1)',\r\n pointBorderColor: '#fff',\r\n pointHoverBackgroundColor: '#fff',\r\n pointHoverBorderColor: 'rgba(42,80,156,0.8)'\r\n }, {\r\n // orange\r\n backgroundColor: 'rgba(255,140,0,1)',\r\n borderColor: 'rgba(255,140,0,1)',\r\n pointBackgroundColor: 'rgba(255,140,0,1)',\r\n pointBorderColor: '#fff',\r\n pointHoverBackgroundColor: '#fff',\r\n pointHoverBorderColor: 'rgba(42,80,156,0.8)'\r\n }];\r\n\r\n vm.barChartOptions = {\r\n scales: {\r\n xAxes: [{\r\n scaleLabel: {\r\n display: true,\r\n fontSize: 14,\r\n labelString: 'Respuestas'\r\n }\r\n }],\r\n yAxes: [{\r\n scaleLabel: {\r\n display: true,\r\n fontSize: 14,\r\n labelString: 'Cantidad Instancias'\r\n }\r\n }],\r\n y: {\r\n beginAtZero: false\r\n }\r\n }\r\n };\r\n\r\n vm.maxDate = null;\r\n\r\n vm.minDate = null;\r\n\r\n vm.cantidadRespuestasList = [];\r\n\r\n vm.encuestaDataList = [];\r\n\r\n vm.fechaDesde = null;\r\n vm.fechaHasta = null;\r\n\r\n vm.controlInputFiltersList = [];\r\n\r\n vm.controlInputList = [];\r\n\r\n vm.cantidadFiltros = 2;\r\n\r\n vm.progressCheckAbierto = false;\r\n\r\n vm.zipsEnProgreso = [];\r\n vm.path = '';\r\n\r\n function init () {\r\n for (let i = 0; i < vm.cantidadFiltros; ++i) {\r\n vm.controlInputFiltersList.push(Object.create(controlInputFilters));\r\n vm.controlInputList.push({ ProyectoId: 0, EncuestaId: 0, Canal: null, Encuestadores: [], Estado: null, Municipio: null });\r\n }\r\n\r\n var pos = 0;\r\n if ($stateParams.controlInputList != null && $stateParams.controlInputList.length <= vm.cantidadFiltros) {\r\n $stateParams.controlInputList.forEach(function(controlInputList) {\r\n if (controlInputList.ProyectoId != 0) {\r\n vm.controlInputList[pos].ProyectoId = controlInputList.ProyectoId;\r\n vm.updateByProyecto(pos);\r\n if (controlInputList.EncuestaId != 0) {\r\n vm.controlInputList[pos].EncuestaId = controlInputList.EncuestaId;\r\n vm.updateEncuestadores(pos);\r\n }\r\n vm.controlInputList[pos] = controlInputList;\r\n }\r\n pos++;\r\n });\r\n }\r\n vm.fechaDesde = $stateParams.fechaDesde;\r\n vm.fechaHasta = $stateParams.fechaHasta;\r\n }\r\n\r\n vm.requestCantidadRespuestas = function () {\r\n vm.barChartData = [];\r\n vm.barChartLabels = [];\r\n vm.barChartColors = [];\r\n vm.barChartSeries = [];\r\n vm.cantidadRespuestasList = [];\r\n vm.encuestaDataList = [];\r\n vm.controlInputList.forEach(function(controlInput) {\r\n controlInput.FechaDesde = vm.fechaDesde;\r\n controlInput.FechaHasta = vm.fechaHasta;\r\n });\r\n ControlInputsService.getAllData(vm.controlInputList, ControlInputsService.getCantidadRespuestas).then(function(data) {\r\n var dataAux = [];\r\n var maxValue = 0;\r\n data.forEach(function(x) {\r\n if (x.length != 0 && x[x.length - 1].CantidadRespuestas > maxValue) {\r\n maxValue = x[x.length - 1].CantidadRespuestas;\r\n dataAux = x;\r\n }\r\n });\r\n \r\n for (var i = 1; i <= maxValue; ++i) {\r\n vm.barChartLabels.push(i);\r\n }\r\n\r\n vm.cantidadRespuestasList = data;\r\n var pos = 0;\r\n vm.cantidadRespuestasList.forEach(function(cantidadRespuestas) {\r\n if (cantidadRespuestas.length != 0) {\r\n vm.barChartSeries.push(\"\");\r\n vm.barChartData.push([]);\r\n vm.barChartColors.push(vm.colors[pos]);\r\n vm.encuestaDataList.push({ Data: null, Media: null, Moda: null, Sd: null, Max: null, Min: null });\r\n var encuestaData = vm.encuestaDataList[pos];\r\n vm.getEncuestaData(pos);\r\n\r\n var respuestasActual = cantidadRespuestas[0].CantidadRespuestas;\r\n var cantidadActual = 0;\r\n var respuestasAux;\r\n var cantidadAux = 0;\r\n cantidadRespuestas.forEach(function(x) {\r\n if (x.CantidadRespuestas == respuestasActual) {\r\n cantidadActual++;\r\n } else if (x.CantidadRespuestas == respuestasAux) {\r\n cantidadAux++;\r\n } else {\r\n if (cantidadAux > cantidadActual) {\r\n respuestasActual = respuestasAux;\r\n cantidadActual = cantidadAux;\r\n }\r\n respuestasAux = x.CantidadRespuestas;\r\n cantidadAux = 0;\r\n }\r\n });\r\n encuestaData.Media = cantidadRespuestas[Math.round(cantidadRespuestas.length / 2)].CantidadRespuestas;\r\n\r\n var sum = 0;\r\n cantidadRespuestas.forEach(function(x) {\r\n sum += Math.pow(x.CantidadRespuestas - encuestaData.Media, 2);\r\n });\r\n\r\n encuestaData.Moda = respuestasActual;\r\n encuestaData.Min = cantidadRespuestas[0].CantidadRespuestas;\r\n encuestaData.Max = cantidadRespuestas[cantidadRespuestas.length - 1].CantidadRespuestas;\r\n encuestaData.Sd = Math.round(Math.sqrt(sum / cantidadRespuestas.length), 2);\r\n \r\n for (var i = 1; i <= encuestaData.Max; ++i) {\r\n vm.barChartData[pos].push(0);\r\n }\r\n cantidadRespuestas.forEach(function(x) {\r\n vm.barChartData[pos][x.CantidadRespuestas - 1]++;\r\n });\r\n }\r\n pos++;\r\n });\r\n });\r\n };\r\n\r\n vm.updateByProyecto = function(index) {\r\n updateEncuestas(index);\r\n updateCanales(index);\r\n updateEstados(index);\r\n }\r\n\r\n function updateEncuestas(index) {\r\n vm.controlInputFiltersList[index].Encuestas = [];\r\n vm.controlInputFiltersList[index].Encuestadores = [];\r\n vm.controlInputList[index].EncuestaId = 0;\r\n vm.controlInputList[index].Encuestadores = [];\r\n ControlInputsService.getEncuestasByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Encuestas = response;\r\n });\r\n }\r\n\r\n function updateCanales(index) {\r\n vm.controlInputFiltersList[index].Canales = [];\r\n vm.controlInputList[index].Canal = null;\r\n ControlInputsService.getCanalesByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Canales = response;\r\n });\r\n }\r\n\r\n function updateEstados(index) {\r\n vm.controlInputFiltersList[index].Estados = [];\r\n vm.controlInputFiltersList[index].Municipios = [];\r\n vm.controlInputList[index].Estado = null;\r\n vm.controlInputList[index].Municipio = null;\r\n ControlInputsService.getEstadosByProyecto(vm.controlInputList[index].ProyectoId).then(function (response) {\r\n vm.controlInputFiltersList[index].Estados = response;\r\n });\r\n }\r\n\r\n vm.updateMunicipios = function(index) {\r\n vm.controlInputFiltersList[index].Municipios = [];\r\n vm.controlInputList[index].Municipio = null;\r\n ControlInputsService.getMunicipiosByProyectoAndEstado(vm.controlInputList[index].ProyectoId, vm.controlInputList[index].Estado).then(function (response) {\r\n vm.controlInputFiltersList[index].Municipios = response;\r\n });\r\n }\r\n\r\n vm.updateEncuestadores = function (index) {\r\n vm.controlInputFiltersList[index].Encuestadores = [];\r\n ControlInputsService.getEncuestadoresByEncuesta(vm.controlInputList[index].EncuestaId).then(function (response) {\r\n vm.controlInputFiltersList[index].Encuestadores = response;\r\n var encuestadoresAux = [];\r\n vm.controlInputList[index].Encuestadores.forEach(function(x) {\r\n vm.controlInputFiltersList[index].Encuestadores.forEach(function(y) {\r\n if (y.Id == x)\r\n encuestadoresAux.push(x);\r\n });\r\n });\r\n vm.controlInputList[index].Encuestadores = encuestadoresAux;\r\n });\r\n }\r\n\r\n vm.changeTab = function(route) {\r\n $state.go(route, {controlInputList: vm.controlInputList, fechaDesde: vm.fechaDesde, fechaHasta: vm.fechaHasta}, {reload: true});\r\n }\r\n\r\n vm.getEncuestaData = function (index) {\r\n ControlInputsService.getEncuestaDataByEncuesta(vm.controlInputList[index].ProyectoId, vm.controlInputList[index].EncuestaId).then(function (response) {\r\n vm.encuestaDataList[index].Data = response;\r\n });\r\n }\r\n\r\n vm.exportToCSV = function(encuestador) {\r\n vm.controlInputList.forEach(function(controlInput) {\r\n controlInput.FechaDesde = vm.fechaDesde;\r\n controlInput.FechaHasta = vm.fechaHasta;\r\n });\r\n\r\n ControlInputsService.exportControlInputToCSV(vm.controlInputList.filter(function(x) {return x.ProyectoId != 0;})).then(function (result) {\r\n let p = $interval(vm.checkearZip, 5000, 0, true, result);\r\n let fileName = 'TiempoEjecucionUsuario';\r\n fileName += '_' + vm.fechaDesde + '_' + vm.fechaHasta;\r\n vm.zipsEnProgreso.push({dictId: result, nombre: fileName, check: p, status: 'Comenzando', link: '', csv: true});\r\n });\r\n }\r\n\r\n vm.checkearZip = function(dictId) {\r\n EncuestasClienteService.checkForFile(dictId).then(function(result) {\r\n let item = vm.zipsEnProgreso.find(function(x) {return x.dictId === dictId;});\r\n switch (result) {\r\n case 'Empty':\r\n item.status = 'Vacio';\r\n break;\r\n case 'Running':\r\n item.status = 'Procesando';\r\n break;\r\n case 'RanToCompletion':\r\n item.status = 'Completado';\r\n break;\r\n default:\r\n item.status = 'Error';\r\n break;\r\n }\r\n $scope.$evalAsync();\r\n if(result === 'RanToCompletion' || result === 'Faulted' || result == 'Canceled' || result === 'Empty') {\r\n $interval.cancel(item.check);\r\n item.link = result === 'RanToCompletion' ? EncuestasClienteService.getLinkForFile(item.dictId, item.csv) : '';\r\n }\r\n })\r\n }\r\n\r\n vm.descargarOReintentar = function(item) {\r\n if (item.status === 'Completado' || item.status === 'Vacio') {\r\n vm.quitarDeLista(item);\r\n }\r\n }\r\n\r\n vm.quitarDeLista = function(item) {\r\n let index = vm.zipsEnProgreso.indexOf(item);\r\n if(index !== -1) { \r\n vm.zipsEnProgreso.splice(index, 1);\r\n if (vm.zipsEnProgreso.length == 0) {\r\n vm.progressCheckAbierto = false;\r\n }\r\n }\r\n }\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('jhi-configuration', {\r\n parent: 'admin',\r\n url: '/configuration',\r\n data: {\r\n authorities: ['ROLE_ADMIN'],\r\n pageTitle: 'Configuration'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/configuration/configuration.html',\r\n controller: 'JhiConfigurationController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('JhiConfigurationService', JhiConfigurationService);\r\n\r\n JhiConfigurationService.$inject = ['$filter', '$http'];\r\n\r\n function JhiConfigurationService ($filter, $http) {\r\n var service = {\r\n get: get,\r\n getEnv: getEnv\r\n };\r\n\r\n return service;\r\n\r\n function get () {\r\n return $http.get('management/configprops').then(getConfigPropsComplete);\r\n\r\n function getConfigPropsComplete (response) {\r\n var properties = [];\r\n angular.forEach(response.data, function (data) {\r\n properties.push(data);\r\n });\r\n var orderBy = $filter('orderBy');\r\n return orderBy(properties, 'prefix');\r\n }\r\n }\r\n\r\n function getEnv () {\r\n return $http.get('management/env').then(getEnvComplete);\r\n\r\n function getEnvComplete (response) {\r\n var properties = {};\r\n angular.forEach(response.data, function (val,key) {\r\n var vals = [];\r\n angular.forEach(val, function (v,k) {\r\n vals.push({ key:k, val:v });\r\n });\r\n properties[key] = vals;\r\n });\r\n return properties;\r\n }\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('JhiConfigurationController', JhiConfigurationController);\r\n\r\n JhiConfigurationController.$inject = ['$filter','JhiConfigurationService'];\r\n\r\n function JhiConfigurationController (filter,JhiConfigurationService) {\r\n var vm = this;\r\n\r\n vm.allConfiguration = null;\r\n vm.configuration = null;\r\n\r\n JhiConfigurationService.get().then(function(configuration) {\r\n vm.configuration = configuration;\r\n });\r\n JhiConfigurationService.getEnv().then(function (configuration) {\r\n vm.allConfiguration = configuration;\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ClienteManagementDialogController',ClienteManagementDialogController);\r\n\r\n ClienteManagementDialogController.$inject = ['$stateParams', '$uibModalInstance', 'entity', 'Cliente', 'DataUtils', '$scope'];\r\n\r\n function ClienteManagementDialogController ($stateParams, $uibModalInstance, entity, Cliente, DataUtils, $scope) {\r\n var vm = this;\r\n\r\n function init () {\r\n vm.cliente = entity;\r\n if(vm.cliente.Id == null){\r\n vm.cliente.DisplayOnlyAuditedContacts = true;\r\n }\r\n }\r\n\r\n vm.clear = function () {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n function onSaveSuccess (result) {\r\n vm.isSaving = false;\r\n $uibModalInstance.close(result);\r\n }\r\n\r\n function onSaveError () {\r\n vm.isSaving = false;\r\n }\r\n\r\n vm.save = function () {\r\n vm.isSaving = true;\r\n if (vm.cliente.Id !== null) {\r\n Cliente.update(vm.cliente, onSaveSuccess, onSaveError);\r\n } else {\r\n Cliente.save(vm.cliente, onSaveSuccess, onSaveError);\r\n }\r\n };\r\n\r\n vm.abbreviate = DataUtils.abbreviate;\r\n\r\n vm.byteSize = DataUtils.byteSize;\r\n\r\n vm.setImagen = function ($file, imagen) {\r\n if ($file && $file.$error == 'pattern') {\r\n return;\r\n }\r\n\r\n if ($file) {\r\n var fileReader = new FileReader();\r\n fileReader.readAsDataURL($file);\r\n fileReader.onload = function (e) {\r\n var base64Data = e.target.result.substr(e.target.result.indexOf('base64,') + 'base64,'.length);\r\n $scope.$apply(function() {\r\n vm.cliente.Logo = base64Data;\r\n vm.cliente.LogoContentType = $file.type;\r\n });\r\n };\r\n }\r\n };\r\n\r\n vm.clearImage = function() {\r\n vm.cliente.Logo = null;\r\n vm.cliente.LogoContentType = null;\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ClienteManagementDeleteController', ClienteManagementDeleteController);\r\n\r\n ClienteManagementDeleteController.$inject = ['$uibModalInstance', 'entity', 'Cliente'];\r\n\r\n function ClienteManagementDeleteController ($uibModalInstance, entity, Cliente) {\r\n var vm = this;\r\n\r\n function init () {\r\n vm.cliente = entity;\r\n }\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.confirmDelete = function(id) {\r\n Cliente.delete({id: id},\r\n function () {\r\n $uibModalInstance.close(true);\r\n });\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider\r\n .state('cliente-management', {\r\n parent: 'admin',\r\n url: '/cliente-management',\r\n data: {\r\n authorities: ['ROLE_ADMIN'],\r\n pageTitle: 'Clientes'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/cliente-management/cliente-management.html',\r\n controller: 'ClienteManagementController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n })\r\n .state('cliente-management.new', {\r\n url: '/new',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/cliente-management/cliente-management-dialog.html',\r\n controller: 'ClienteManagementDialogController',\r\n controllerAs: 'vm',\r\n backdrop: 'static',\r\n size: 'lg',\r\n resolve: {\r\n entity: function () {\r\n return {\r\n Id: null,\r\n Nombre: null,\r\n Email: null,\r\n Logo: null,\r\n LogoContentType: null\r\n };\r\n }\r\n }\r\n }).result.then(function() {\r\n $state.go('cliente-management', null, { reload: true });\r\n }, function() {\r\n $state.go('cliente-management');\r\n });\r\n }]\r\n })\r\n .state('cliente-management.edit', {\r\n url: '/{id}/edit',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/cliente-management/cliente-management-dialog.html',\r\n controller: 'ClienteManagementDialogController',\r\n controllerAs: 'vm',\r\n backdrop: 'static',\r\n size: 'lg',\r\n resolve: {\r\n entity: ['Cliente', function(Cliente) {\r\n return Cliente.get({id : $stateParams.id}).$promise;\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('cliente-management', null, { reload: true });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n })\r\n .state('cliente-management.delete', {\r\n url: '/{id}/delete',\r\n data: {\r\n authorities: ['ROLE_ADMIN']\r\n },\r\n onEnter: ['$stateParams', '$state', '$uibModal', function($stateParams, $state, $uibModal) {\r\n $uibModal.open({\r\n templateUrl: 'app/admin/cliente-management/cliente-management-delete-dialog.html',\r\n controller: 'ClienteManagementDeleteController',\r\n controllerAs: 'vm',\r\n size: 'md',\r\n resolve: {\r\n entity: ['Cliente', function(Cliente) {\r\n return Cliente.get({id : $stateParams.id}).$promise;\r\n }]\r\n }\r\n }).result.then(function() {\r\n $state.go('cliente-management', null, { reload: true });\r\n }, function() {\r\n $state.go('^');\r\n });\r\n }]\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ClienteManagementController', ClienteManagementController);\r\n\r\n ClienteManagementController.$inject = ['Cliente', 'ParseLinks', 'AlertService', '$state', 'paginationConstants'];\r\n\r\n function ClienteManagementController(Cliente, ParseLinks, AlertService, $state, paginationConstants) {\r\n var vm = this;\r\n\r\n function init() {\r\n vm.page = 1;\r\n vm.itemsPerPage = paginationConstants.itemsPerPage;\r\n vm.loadAll();\r\n }\r\n\r\n vm.loadAll = function() {\r\n window.scrollTo(0, 0);\r\n\r\n Cliente.query({\r\n Number: vm.page - 1,\r\n TotalElements: vm.itemsPerPage\r\n }, onSuccess, onError);\r\n };\r\n\r\n function onSuccess (data) {\r\n vm.totalItems = data.TotalElements;\r\n vm.queryCount = vm.totalItems;\r\n vm.page = data.Number + 1;\r\n vm.clientes = data.Content;\r\n }\r\n\r\n function onError (error) {\r\n AlertService.error(error.data.message);\r\n }\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('audits', {\r\n parent: 'admin',\r\n url: '/audits',\r\n data: {\r\n authorities: ['ROLE_ADMIN'],\r\n pageTitle: 'Audits'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/admin/audits/audits.html',\r\n controller: 'AuditsController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .factory('AuditsService', AuditsService);\r\n\r\n AuditsService.$inject = ['$resource'];\r\n\r\n function AuditsService ($resource) {\r\n var service = $resource('management/audits/:id', {}, {\r\n 'get': {\r\n method: 'GET',\r\n isArray: true\r\n },\r\n 'query': {\r\n method: 'GET',\r\n isArray: true,\r\n params: {fromDate: null, toDate: null}\r\n }\r\n });\r\n\r\n return service;\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('AuditsController', AuditsController);\r\n\r\n AuditsController.$inject = ['$filter', 'AuditsService', 'ParseLinks'];\r\n\r\n function AuditsController ($filter, AuditsService, ParseLinks) {\r\n var vm = this;\r\n\r\n vm.audits = null;\r\n vm.fromDate = null;\r\n vm.links = null;\r\n vm.loadPage = loadPage;\r\n vm.onChangeDate = onChangeDate;\r\n vm.page = 1;\r\n vm.previousMonth = previousMonth;\r\n vm.toDate = null;\r\n vm.today = today;\r\n vm.totalItems = null;\r\n\r\n vm.today();\r\n vm.previousMonth();\r\n vm.onChangeDate();\r\n\r\n function onChangeDate () {\r\n var dateFormat = 'yyyy-MM-dd';\r\n var fromDate = $filter('date')(vm.fromDate, dateFormat);\r\n var toDate = $filter('date')(vm.toDate, dateFormat);\r\n\r\n AuditsService.query({page: vm.page -1, size: 20, fromDate: fromDate, toDate: toDate}, function(result, headers){\r\n vm.audits = result;\r\n vm.links = ParseLinks.parse(headers('link'));\r\n vm.totalItems = headers('X-Total-Count');\r\n });\r\n }\r\n\r\n // Date picker configuration\r\n function today () {\r\n // Today + 1 day - needed if the current day must be included\r\n var today = new Date();\r\n vm.toDate = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);\r\n }\r\n\r\n function previousMonth () {\r\n var fromDate = new Date();\r\n if (fromDate.getMonth() === 0) {\r\n fromDate = new Date(fromDate.getFullYear() - 1, 11, fromDate.getDate());\r\n } else {\r\n fromDate = new Date(fromDate.getFullYear(), fromDate.getMonth() - 1, fromDate.getDate());\r\n }\r\n\r\n vm.fromDate = fromDate;\r\n }\r\n\r\n function loadPage (page) {\r\n vm.page = page;\r\n vm.onChangeDate();\r\n }\r\n }\r\n})();\r\n\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig ($stateProvider) {\r\n $stateProvider.state('admin', {\r\n abstract: true,\r\n parent: 'app'\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(function () {\r\n Stripe.setPublishableKey('pk_test_6T0tyRv63V9pxTvJmiJnCGZQ');\r\n })\r\n .controller('SettingsAddCardController', SettingsAddCardController);\r\n\r\n SettingsAddCardController.$inject = ['$uibModalInstance', '$http'];\r\n\r\n function SettingsAddCardController ($uibModalInstance, $http) {\r\n var vm = this;\r\n\r\n vm.card = {\r\n name: \"APPROVED\",\r\n number: \"4268 0700 0000 0002\",\r\n expiredDate: \"01/20\",\r\n CSV: \"123\"\r\n };\r\n\r\n function init () {\r\n\r\n }\r\n\r\n vm.clear = function() {\r\n $uibModalInstance.dismiss('cancel');\r\n };\r\n\r\n vm.addCard = function() {\r\n var card = {\r\n Number: vm.card.number.replace(/\\D/g,''),\r\n ExpMonth: vm.card.expiredDate.split('/')[0],\r\n ExpYear: '20' + vm.card.expiredDate.split('/')[1],\r\n Cvc: vm.card.CSV,\r\n Name: vm.card.name,\r\n Type: vm.card.type\r\n };\r\n\r\n $http.post('api/payments/addCard', card).then(function(response){\r\n $uibModalInstance.close(response.data);\r\n }).catch(function (error) {\r\n console.log(error);\r\n $uibModalInstance.close(null);\r\n });\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('settings', {\r\n parent: 'account',\r\n url: '/settings',\r\n data: {\r\n authorities: ['ROLE_USER', 'ROLE_ADMIN'],\r\n pageTitle: 'Configuración'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/account/settings/settings.html',\r\n controller: 'SettingsController',\r\n controllerAs: 'vm',\r\n resolve: {\r\n userMembership: ['MembresiaService', function (MembresiaService) {\r\n return MembresiaService.getUserMembership();\r\n }],\r\n userCard: ['CarritoService', function (CarritoService) {\r\n return CarritoService.getCard();\r\n }],\r\n userCards: ['CarritoService', function (CarritoService) {\r\n return CarritoService.getCards();\r\n }]\r\n }\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('SettingsController', SettingsController);\r\n\r\n SettingsController.$inject = ['Principal', 'Auth', 'DataUtils', '$scope', '$uibModal', 'MembresiaService', 'userMembership', '$http', 'userCard', 'userCards', '$state'];\r\n\r\n function SettingsController (Principal, Auth, DataUtils, $scope, $uibModal, MembresiaService, userMembership, $http, userCard, userCards, $state) {\r\n var vm = this;\r\n\r\n function init() {\r\n vm.error = null;\r\n vm.settingsAccount = null;\r\n vm.success = null;\r\n vm.userMembership = userMembership;\r\n vm.userCard = userCard.data;\r\n vm.userCards = userCards.data;\r\n\r\n Principal.identity().then(function(account) {\r\n vm.settingsAccount = copyAccount(account);\r\n });\r\n }\r\n\r\n function copyAccount(account) {\r\n return angular.copy(account);\r\n }\r\n\r\n vm.save = function() {\r\n Auth.updateAccount(vm.settingsAccount).then(function() {\r\n vm.error = null;\r\n vm.success = 'OK';\r\n\r\n Principal.identity(true).then(function(account) {\r\n vm.settingsAccount = copyAccount(account);\r\n });\r\n }).catch(function() {\r\n vm.success = null;\r\n vm.error = 'ERROR';\r\n });\r\n };\r\n\r\n vm.abbreviate = DataUtils.abbreviate;\r\n\r\n vm.byteSize = DataUtils.byteSize;\r\n\r\n vm.setImagen = function ($file, imagen) {\r\n if ($file && $file.$error == 'pattern') {\r\n return;\r\n }\r\n\r\n if ($file) {\r\n var fileReader = new FileReader();\r\n fileReader.readAsDataURL($file);\r\n fileReader.onload = function (e) {\r\n var base64Data = e.target.result.substr(e.target.result.indexOf('base64,') + 'base64,'.length);\r\n $scope.$apply(function() {\r\n vm.settingsAccount.Imagen = base64Data;\r\n vm.settingsAccount.ImagenContentType = $file.type;\r\n });\r\n };\r\n }\r\n };\r\n\r\n vm.clearImage = function() {\r\n vm.settingsAccount.Imagen = null;\r\n vm.settingsAccount.ImagenContentType = null;\r\n };\r\n\r\n vm.cancelMembership = function() {\r\n MembresiaService.cancelMembership().then(function () {\r\n vm.userMembership = null;\r\n });\r\n };\r\n\r\n vm.deleteCard = function (id) {\r\n $http.delete('api/payments/deleteCard/'+id).then(function(response){\r\n var index = vm.userCards.findIndex(function (x) {\r\n return x.Id == id;\r\n });\r\n if (index > -1) {\r\n vm.userCards.splice(index, 1);\r\n }\r\n }).catch(function (error) {\r\n console.log(error);\r\n });\r\n };\r\n\r\n vm.setDefault = function (id) {\r\n $http.post('api/payments/updateDefaultCard', { Id : id}).then(function(response){\r\n vm.userCard = vm.userCards.find(function (x) {\r\n return x != null && x.Id == response.data.Id;\r\n });\r\n }).catch(function (error) {\r\n console.log(error);\r\n });\r\n };\r\n\r\n\r\n vm.cardModal = function() {\r\n $uibModal.open({\r\n templateUrl: 'app/account/settings/settingsAddCard-dialog.html',\r\n controller: 'SettingsAddCardController',\r\n controllerAs: 'vm',\r\n size: 'md'\r\n }).result.then(function(response) {\r\n if (response != null) {\r\n vm.userCards.push(response);\r\n }\r\n }, function() {\r\n\r\n });\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('requestReset', {\r\n parent: 'account',\r\n url: '/reset/request',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/account/reset/request/reset.request.html',\r\n controller: 'RequestResetController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('RequestResetController', RequestResetController);\r\n\r\n RequestResetController.$inject = ['$timeout', 'PasswordResetInit'];\r\n\r\n function RequestResetController ($timeout, PasswordResetInit) {\r\n var vm = this;\r\n\r\n vm.error = null;\r\n vm.errorEmailNotExists = null;\r\n vm.requestReset = requestReset;\r\n vm.resetAccount = {};\r\n vm.success = null;\r\n\r\n $timeout(function (){angular.element('#email').focus();});\r\n\r\n function requestReset () {\r\n\r\n vm.error = null;\r\n vm.errorEmailNotExists = null;\r\n\r\n PasswordResetInit.getResetToken({ UserName : vm.resetAccount.email }).then(function (response) {\r\n console.log(response);\r\n vm.success = 'OK';\r\n }).catch(function (response) {\r\n vm.success = null;\r\n if (response.status === 400) {\r\n vm.errorEmailNotExists = 'ERROR';\r\n } else {\r\n vm.error = 'ERROR';\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('finishReset', {\r\n parent: 'account',\r\n url: '/reset/finish?user&key',\r\n data: {\r\n authorities: []\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/account/reset/finish/reset.finish.html',\r\n controller: 'ResetFinishController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ResetFinishController', ResetFinishController);\r\n\r\n ResetFinishController.$inject = ['$stateParams', '$timeout', 'PasswordResetFinish'];\r\n\r\n function ResetFinishController ($stateParams, $timeout, PasswordResetFinish) {\r\n var vm = this;\r\n\r\n vm.keyMissing = angular.isUndefined($stateParams.key);\r\n vm.confirmPassword = null;\r\n vm.doNotMatch = null;\r\n vm.error = null;\r\n vm.finishReset = finishReset;\r\n vm.resetAccount = {};\r\n vm.success = null;\r\n\r\n $timeout(function (){angular.element('#password').focus();});\r\n\r\n function finishReset() {\r\n vm.doNotMatch = null;\r\n vm.error = null;\r\n if (vm.resetAccount.password !== vm.confirmPassword) {\r\n vm.doNotMatch = 'ERROR';\r\n } else {\r\n PasswordResetFinish.resetPassword({Token: $stateParams.key, Username: $stateParams.user, NewPassword: vm.resetAccount.password}).then(function () {\r\n vm.success = 'OK';\r\n }).catch(function () {\r\n vm.success = null;\r\n vm.error = 'ERROR';\r\n });\r\n }\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('register', {\r\n parent: 'account',\r\n url: '/register',\r\n data: {\r\n authorities: [],\r\n pageTitle: 'Registration'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/account/register/register.html',\r\n controller: 'RegisterController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('RegisterController', RegisterController);\r\n\r\n\r\n RegisterController.$inject = [ '$timeout', 'Auth', 'LoginService', 'errorConstants'];\r\n\r\n function RegisterController ($timeout, Auth, LoginService, errorConstants) {\r\n var vm = this;\r\n\r\n vm.doNotMatch = null;\r\n vm.error = null;\r\n vm.errorUserExists = null;\r\n vm.login = LoginService.open;\r\n vm.register = register;\r\n vm.registerAccount = {};\r\n vm.success = null;\r\n\r\n $timeout(function (){angular.element('#login').focus();});\r\n\r\n function register () {\r\n if (vm.registerAccount.Password !== vm.ConfirmPassword) {\r\n vm.doNotMatch = 'ERROR';\r\n } else {\r\n vm.registerAccount.LangKey = 'en' ;\r\n vm.doNotMatch = null;\r\n vm.error = null;\r\n vm.errorUserExists = null;\r\n vm.errorEmailExists = null;\r\n\r\n vm.registerAccount.UserName = vm.registerAccount.Email;\r\n\r\n Auth.createAccount(vm.registerAccount).then(function () {\r\n vm.success = 'OK';\r\n }).catch(function (response) {\r\n vm.success = null;\r\n if (response.status === 400 && angular.fromJson(response.data).type === errorConstants.LOGIN_ALREADY_USED_TYPE) {\r\n vm.errorUserExists = 'ERROR';\r\n } else if (response.status === 400 && angular.fromJson(response.data).type === errorConstants.EMAIL_ALREADY_USED_TYPE) {\r\n vm.errorEmailExists = 'ERROR';\r\n } else {\r\n vm.error = 'ERROR';\r\n }\r\n });\r\n }\r\n }\r\n }\r\n})();\r\n\n/* globals $ */\r\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .directive('passwordStrengthBar', passwordStrengthBar);\r\n\r\n function passwordStrengthBar () {\r\n var directive = {\r\n replace: true,\r\n restrict: 'E',\r\n template: '
' +\r\n 'Password strength:' +\r\n '
    ' +\r\n '
  • ' +\r\n '
' +\r\n '
',\r\n scope: {\r\n passwordToCheck: '='\r\n },\r\n link: linkFunc\r\n };\r\n\r\n return directive;\r\n\r\n /* private helper methods*/\r\n\r\n function linkFunc(scope, iElement) {\r\n var strength = {\r\n colors: ['#F00', '#F90', '#FF0', '#9F0', '#0F0'],\r\n mesureStrength: function (p) {\r\n\r\n var _force = 0;\r\n var _regex = /[$-/:-?{-~!\"^_`\\[\\]]/g; // \"\r\n\r\n var _lowerLetters = /[a-z]+/.test(p);\r\n var _upperLetters = /[A-Z]+/.test(p);\r\n var _numbers = /[0-9]+/.test(p);\r\n var _symbols = _regex.test(p);\r\n\r\n var _flags = [_lowerLetters, _upperLetters, _numbers, _symbols];\r\n var _passedMatches = $.grep(_flags, function (el) {\r\n return el === true;\r\n }).length;\r\n\r\n _force += 2 * p.length + ((p.length >= 10) ? 1 : 0);\r\n _force += _passedMatches * 10;\r\n\r\n // penalty (short password)\r\n _force = (p.length <= 6) ? Math.min(_force, 10) : _force;\r\n\r\n // penalty (poor variety of characters)\r\n _force = (_passedMatches === 1) ? Math.min(_force, 10) : _force;\r\n _force = (_passedMatches === 2) ? Math.min(_force, 20) : _force;\r\n _force = (_passedMatches === 3) ? Math.min(_force, 40) : _force;\r\n\r\n return _force;\r\n\r\n },\r\n getColor: function (s) {\r\n\r\n var idx;\r\n if (s <= 10) {\r\n idx = 0;\r\n }\r\n else if (s <= 20) {\r\n idx = 1;\r\n }\r\n else if (s <= 30) {\r\n idx = 2;\r\n }\r\n else if (s <= 40) {\r\n idx = 3;\r\n }\r\n else {\r\n idx = 4;\r\n }\r\n\r\n return { idx: idx + 1, col: this.colors[idx] };\r\n }\r\n };\r\n scope.$watch('passwordToCheck', function (password) {\r\n if (password) {\r\n var c = strength.getColor(strength.mesureStrength(password));\r\n iElement.removeClass('ng-hide');\r\n iElement.find('ul').children('li')\r\n .css({ 'background-color': '#DDD' })\r\n .slice(0, c.idx)\r\n .css({ 'background-color': c.col });\r\n }\r\n });\r\n }\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('password', {\r\n parent: 'account',\r\n url: '/password',\r\n data: {\r\n authorities: ['ROLE_USER', 'ROLE_ADMIN'],\r\n pageTitle: 'Contraseña'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/account/password/password.html',\r\n controller: 'PasswordController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('PasswordController', PasswordController);\r\n\r\n PasswordController.$inject = ['Auth', 'Principal'];\r\n\r\n function PasswordController (Auth, Principal) {\r\n var vm = this;\r\n\r\n function init() {\r\n vm.doNotMatch = null;\r\n vm.error = null;\r\n vm.success = null;\r\n\r\n Principal.identity().then(function(account) {\r\n vm.account = account;\r\n });\r\n }\r\n\r\n vm.changePassword = function() {\r\n if (vm.password.NewPassword !== vm.confirmPassword) {\r\n vm.error = null;\r\n vm.success = null;\r\n vm.doNotMatch = 'ERROR';\r\n } else {\r\n vm.doNotMatch = null;\r\n Auth.changePassword(vm.password).then(function () {\r\n vm.error = null;\r\n vm.success = 'OK';\r\n }).catch(function () {\r\n vm.success = null;\r\n vm.error = 'ERROR';\r\n });\r\n }\r\n };\r\n\r\n init();\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('activate', {\r\n parent: 'account',\r\n url: '/activate?key',\r\n data: {\r\n authorities: [],\r\n pageTitle: 'Activation'\r\n },\r\n views: {\r\n 'content@': {\r\n templateUrl: 'app/account/activate/activate.html',\r\n controller: 'ActivationController',\r\n controllerAs: 'vm'\r\n }\r\n }\r\n });\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .controller('ActivationController', ActivationController);\r\n\r\n ActivationController.$inject = ['$stateParams', 'Auth', 'LoginService'];\r\n\r\n function ActivationController ($stateParams, Auth, LoginService) {\r\n var vm = this;\r\n\r\n Auth.activateAccount({key: $stateParams.key}).then(function () {\r\n vm.error = null;\r\n vm.success = 'OK';\r\n }).catch(function () {\r\n vm.success = null;\r\n vm.error = 'ERROR';\r\n });\r\n\r\n vm.login = LoginService.open;\r\n }\r\n})();\r\n\n(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('smarteyesjhApp')\r\n .config(stateConfig);\r\n\r\n stateConfig.$inject = ['$stateProvider'];\r\n\r\n function stateConfig($stateProvider) {\r\n $stateProvider.state('account', {\r\n abstract: true,\r\n parent: 'app'\r\n });\r\n }\r\n})();\r\n(function(){angular.module('smarteyesjhApp').run(['$templateCache', function($templateCache) {$templateCache.put('app/home/home.html','

Auditores activos: {{vm.auditoresActivos.Valor}}

Clientes de SmartEyes: {{vm.clientes.Valor}}

SmartEyes\\xAE es una comunidad con más de 10,000 auditores profesionales obteniendo información confiable que tu empresa necesita de los puntos de venta y consumidores, de una forma ágil y económica.

SmartEyes\\xAE es una comunidad con más de 10,000 auditores profesionales obteniendo información confiable que tu empresa necesita de los puntos de venta y consumidores, de una forma ágil y económica.

Auditores activos: {{vm.auditoresActivos.Valor}}

Clientes de SmartEyes: {{vm.clientes.Valor}}

91 Reseñas

Conoce más de SmartEyes

\"\"

Accede a la red más grande y confiable de auditores y consumidores.
\"\"

Diseña tus proyectos y preguntas según tus necesidades.
\"\"

Envía tu encuesta en línea al target deseado.
\"\"

Analiza tus resultados en tiempo real en nuestro dashboard.
\"Responsive

Con SmartEyes\\xAE diseñas los trabajos requeridos on-line y, una vez finalizados, son enviados a nuestra red de auditores. Además, permite visualizar los resultados en un Dashboard, sin necesidad de interactuar con el personal.

Nuestra comunidad de auditores profesionales es el principal valor agregado de SmartEyes\\xAE. Es la garantía de la calidad de nuestra información.

Ponemos a tu disposición la red de profesionales más grande basada en crowdsourcing para brindarte el mejor servicio de auditoría e inteligencia de negocio.

SmartEyes\\xAE es para empresas de todos los tamaños que necesiten información de los puntos de venta y consumidores.

  • Retail.
  • Consumo Masivo.
  • Restaurantes.
  • Franquicias.

\\xA1Donde sea que tu marca, consumidor, competencia esté presente!

\"Responsive

SmartEyes\\xAE es para empresas de todos los tamaños que necesiten información de los puntos de venta y consumidores.

  • Retail.
  • Consumo Masivo.
  • Restaurantes.
  • Franquicias.

\\xA1Donde sea que tu marca, consumidor, competencia esté presente!

');\n$templateCache.put('app/account/password/password.html','

CONTRASEÑA

Contraseña cambiada!
Ocurrió un error! La contraseña no ha sido cambiada.
La contraseña y su confirmación no coinciden!

Tu contraseña es requerida.

Tu nueva contraseña es requerida.

Tu nueva contraseña debe tener al menos 6 caracteres.

Tu nueva contraseña no debe superar los 50 caracteres.

La confirmación de contraseña es requerida.

');\n$templateCache.put('app/account/register/register.html','

Reg\\xEDstrate

Registration saved! Please check your email for confirmation.
Registration failed! Please try again later.
Login name already registered! Please choose another one.
Email is already in use! Please choose another one.
The password and its confirmation do not match!

Your email is required.

Your email is invalid.

Your email is required to be at least 5 characters.

Your email cannot be longer than 100 characters.

Your telephone is required.

Wrong telephone pattern.

Your password is required.

Your password is required to be at least 4 characters.

Your password cannot be longer than 50 characters.

Your confirmation password is required.

Your confirmation password is required to be at least 4 characters.

Your confirmation password cannot be longer than 50 characters.

');\n$templateCache.put('app/account/activate/activate.html','

Activation

Your user has been activated. Please sign in.
Your user could not be activated. Please use the registration form to sign up.
');\n$templateCache.put('app/admin/cliente-management/cliente-management-delete-dialog.html','

Confirmar borrado

Está seguro que quiere borrar el cliente {{ vm.cliente.Nombre }}?

');\n$templateCache.put('app/admin/cliente-management/cliente-management-dialog.html','

Crear o editar cliente

{{ vm.cliente.LogoContentType }} {{ vm.byteSize(vm.cliente.Logo) }}

Este campo es requerido.

Este campo no puede tener más de 50 caracateres.

Este campo es requerido.

Este campo no puede tener más de 50 caracateres.

El email es inválido.

Solo mostrar contactos auditados.
');\n$templateCache.put('app/admin/cliente-management/cliente-management.html','

Clientes

NombreEmailSolo Auditados
{{ cliente.Nombre }}{{ cliente.Email }}SiNo
');\n$templateCache.put('app/admin/audits/audits.html','

Audits

Filter by date

from to

DateUserStateExtra data
{{audit.timestamp| date:\\'medium\\'}}{{audit.principal}}{{audit.type}}{{audit.data.message}} Remote Address {{audit.data.remoteAddress}}
');\n$templateCache.put('app/account/settings/settings.html','

CONFIGURACIÓN

Configuración guardada!
{{ vm.settingsAccount.ImagenContentType }} {{ vm.byteSize(vm.settingsAccount.Imagen) }}

Your first name is required.

Your first name is required to be at least 1 character.

Your first name cannot be longer than 50 characters.

Your last name is required.

Your last name is required to be at least 1 character.

Your last name cannot be longer than 50 characters.

Your email is required.

Your email is invalid.

Your email is required to be at least 5 characters.

Your email cannot be longer than 100 characters.

Your telephone is required.

Wrong telephone pattern.

ACTIVA
  • N\\xDAMERO: {{ card.Number }}
  • NOMBRE: {{ card.Name }}
No tienes tarjetas.
');\n$templateCache.put('app/account/settings/settingsAddCard-dialog.html','

Agregar tarjeta

');\n$templateCache.put('app/admin/docs/docs.html','');\n$templateCache.put('app/admin/encuestasCliente/adminEncuestasCliente.html','

ENCUESTAS

Importar Encuestas desde Excel

NombreFecha VigenciaFecha Inicio
No hay encuestas pendientes de aprobación.
{{ encuesta.Nombre }}{{ encuesta.FechaVigencia | date:\\'dd/MM/yyyy\\' }}{{ encuesta.FechaInicio | date:\\'dd/MM/yyyy\\' }}
');\n$templateCache.put('app/admin/encuestasCliente/aprobarEncuestaCliente-dialog.html','

Aprobar encuesta

\\xBFAprobar encuesta {{ vm.encuesta.Nombre }}?

');\n$templateCache.put('app/admin/configuration/configuration.html','

Configuration

Filter (by prefix)

Spring configuration

PrefixProperties
{{entry.prefix}}
{{key}}
{{value}}

{{key}}

PropertyValue
{{item.key}}{{item.val}}
');\n$templateCache.put('app/admin/health/health.html','

Health Checks

Service NameStatusDetails
{{ vm.baseName(health.name) }} {{vm.subSystemName(health.name)}}{{ health.status }}
');\n$templateCache.put('app/admin/health/health.modal.html','

{{ vm.baseName(vm.currentHealth.name) }} {{vm.subSystemName(vm.currentHealth.name)}}

Properties

NameValue
{{k}}{{v}}

Error

{{vm.currentHealth.error}}
');\n$templateCache.put('app/admin/logs/logs.html','

Logs

There are {{ vm.loggers.length }} loggers.

Filter
NameLevel
{{logger.name | characters:140}}
');\n$templateCache.put('app/admin/respuestas/respuestas-delete-dialog.html','

Confirmar borrado

Está seguro que desea borrar esta respuesta?

');\n$templateCache.put('app/admin/respuestas/respuestas-edit-dialog.html','

Editar Respuesta

{{vm.respuesta.EncuestaAccion.Pregunta}}

{{opcion.Valor}}

{{vm.respuesta.ValorNumericoType}}

');\n$templateCache.put('app/admin/respuestas/respuestas.html','

Respuestas

FechaNombre EncuestaInstanciaNombre PreguntaRespuesta
No hay respuestas.
{{ respuesta.Fecha | date:\\'dd/MM/yyyy\\' }}{{ respuesta.EncuestaNombre }}{{ respuesta.Instancia }}{{ respuesta.EncuestaAccionNombre }}{{ respuesta.Respuesta }}
');\n$templateCache.put('app/admin/user-management/user-management-assign-cliente-dialog.html','

Asignar cliente a {{ vm.user.UserName }}

  • {{ cliente.Nombre }}
');\n$templateCache.put('app/admin/user-management/user-management-delete-dialog.html','

Confirm delete operation

Are you sure you want to delete this User?

');\n$templateCache.put('app/admin/user-management/user-management-detail.html','

User [{{vm.user.login}}]

Login
{{vm.user.login}} Deactivated Activated
First Name
{{vm.user.firstName}}
Last Name
{{vm.user.lastName}}
Email
{{vm.user.email}}
Created By
{{vm.user.createdBy}}
Created Date
{{vm.user.createdDate | date:\\'dd/MM/yy HH:mm\\' }}
Last Modified By
{{vm.user.lastModifiedBy}}
Last Modified Date
{{vm.user.lastModifiedDate | date:\\'dd/MM/yy HH:mm\\'}}
Profiles
  • {{authority}}
');\n$templateCache.put('app/admin/user-management/user-management-dialog.html','

Create or edit a User

This field is required.

This field cannot be longer than 50 characters.

This field cannot be longer than 50 characters.

This field cannot be longer than 50 characters.

This field is required.

This field cannot be longer than 100 characters.

Your email is invalid.

');\n$templateCache.put('app/admin/user-management/user-management.html','

Usuarios

UsernameNombreApellidoEmailCliente asignadoCliente
{{ user.UserName }}{{ user.FirstName }}{{ user.LastName }}{{ user.Email }}{{ user.Cliente.Nombre }}
');\n$templateCache.put('app/admin/membresia/adminMembresia.html','

Memberships

{{ membership.Nombre }}

{{ membership.Precio | currency:\\'$\\':0 }}

{{ membership.Descripcion }}

  • {{ item.Nombre }}
    {{ item.Nombre }}

    {{ item.Descripcion }}

Items

  • {{ item.Nombre }}

Membresias a aprobar

  • {{ userMembresia.Membresia.Nombre}} - Usuario: {{userMembresia.User.Email}}
  • No hay membresias para aprobar

{{vm.message}}

');\n$templateCache.put('app/admin/membresia/adminMembresiaEditItem-dialog.html','

Editar item

');\n$templateCache.put('app/admin/membresia/adminMembresiaEditMembership-dialog.html','

Editar membresia

  • {{ item.Nombre }}

');\n$templateCache.put('app/admin/metrics/metrics.html','

Application Metrics

JVM Metrics

Memory

Total Memory ({{vm.metrics.gauges[\\'jvm.memory.total.used\\'].value / 1000000 | number:0}}M / {{vm.metrics.gauges[\\'jvm.memory.total.max\\'].value / 1000000 | number:0}}M)

{{vm.metrics.gauges[\\'jvm.memory.total.used\\'].value * 100 / vm.metrics.gauges[\\'jvm.memory.total.max\\'].value | number:0}}%

Heap Memory ({{vm.metrics.gauges[\\'jvm.memory.heap.used\\'].value / 1000000 | number:0}}M / {{vm.metrics.gauges[\\'jvm.memory.heap.max\\'].value / 1000000 | number:0}}M)

{{vm.metrics.gauges[\\'jvm.memory.heap.used\\'].value * 100 / vm.metrics.gauges[\\'jvm.memory.heap.max\\'].value | number:0}}%

Non-Heap Memory ({{vm.metrics.gauges[\\'jvm.memory.non-heap.used\\'].value / 1000000 | number:0}}M / {{vm.metrics.gauges[\\'jvm.memory.non-heap.committed\\'].value / 1000000 | number:0}}M)

{{vm.metrics.gauges[\\'jvm.memory.non-heap.used\\'].value * 100 / vm.metrics.gauges[\\'jvm.memory.non-heap.committed\\'].value | number:0}}%
Threads (Total: {{vm.metrics.gauges[\\'jvm.threads.count\\'].value}})

Runnable {{vm.metrics.gauges[\\'jvm.threads.runnable.count\\'].value}}

{{vm.metrics.gauges[\\'jvm.threads.runnable.count\\'].value * 100 / vm.metrics.gauges[\\'jvm.threads.count\\'].value | number:0}}%

Timed Waiting ({{vm.metrics.gauges[\\'jvm.threads.timed_waiting.count\\'].value}})

{{vm.metrics.gauges[\\'jvm.threads.timed_waiting.count\\'].value * 100 / vm.metrics.gauges[\\'jvm.threads.count\\'].value | number:0}}%

Waiting ({{vm.metrics.gauges[\\'jvm.threads.waiting.count\\'].value}})

{{vm.metrics.gauges[\\'jvm.threads.waiting.count\\'].value * 100 / vm.metrics.gauges[\\'jvm.threads.count\\'].value | number:0}}%

Blocked ({{vm.metrics.gauges[\\'jvm.threads.blocked.count\\'].value}})

{{vm.metrics.gauges[\\'jvm.threads.blocked.count\\'].value * 100 / vm.metrics.gauges[\\'jvm.threads.count\\'].value | number:0}}%
Garbage collections
Mark Sweep count
{{vm.metrics.gauges[\\'jvm.garbage.PS-MarkSweep.count\\'].value}}
Mark Sweep time
{{vm.metrics.gauges[\\'jvm.garbage.PS-MarkSweep.time\\'].value}}ms
Scavenge count
{{vm.metrics.gauges[\\'jvm.garbage.PS-Scavenge.count\\'].value}}
Scavenge time
{{vm.metrics.gauges[\\'jvm.garbage.PS-Scavenge.time\\'].value}}ms
Updating...

HTTP requests (events per second)

Active requests {{vm.metrics.counters[\\'com.codahale.metrics.servlet.InstrumentedFilter.activeRequests\\'].count | number:0}} - Total requests {{vm.metrics.timers[\\'com.codahale.metrics.servlet.InstrumentedFilter.requests\\'].count | number:0}}

CodeCountMeanAverage (1 min)Average (5 min)Average (15 min)
OK{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok\\'].count}}{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok\\'].mean_rate | number:2}}{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok\\'].m1_rate | number:2}}{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok\\'].m5_rate | number:2}}{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.ok\\'].m15_rate | number:2}}
Not Found{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound\\'].count}}{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound\\'].mean_rate | number:2}}{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound\\'].m1_rate | number:2}}{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound\\'].m5_rate | number:2}}{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.notFound\\'].m15_rate | number:2}}
Server error{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError\\'].count}}{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError\\'].mean_rate | number:2}}{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError\\'].m1_rate | number:2}}{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError\\'].m5_rate | number:2}}{{vm.metrics.meters[\\'com.codahale.metrics.servlet.InstrumentedFilter.responseCodes.serverError\\'].m15_rate | number:2}}

Services statistics (time in millisecond)

Service nameCountMeanMinp50p75p95p99Max
{{k}}{{v.count}}{{v.mean * 1000 | number:0}}{{v.min * 1000 | number:0}}{{v.p50 * 1000 | number:0}}{{v.p75 * 1000 | number:0}}{{v.p95 * 1000 | number:0}}{{v.p99 * 1000 | number:0}}{{v.max * 1000 | number:0}}

0\">DataSource statistics (time in millisecond)

0\">
Usage ({{vm.metrics.gauges[\\'HikariPool-1.pool.ActiveConnections\\'].value}} / {{vm.metrics.gauges[\\'HikariPool-1.pool.TotalConnections\\'].value}})CountMeanMinp50p75p95p99Max
{{vm.metrics.gauges[\\'HikariPool-1.pool.ActiveConnections\\'].value * 100 / vm.metrics.gauges[\\'HikariPool-1.pool.TotalConnections\\'].value | number:0}}%
{{vm.metrics.histograms[\\'HikariPool-1.pool.Usage\\'].count}}{{vm.metrics.histograms[\\'HikariPool-1.pool.Usage\\'].mean | number:2}}{{vm.metrics.histograms[\\'HikariPool-1.pool.Usage\\'].min | number:2}}{{vm.metrics.histograms[\\'HikariPool-1.pool.Usage\\'].p50 | number:2}}{{vm.metrics.histograms[\\'HikariPool-1.pool.Usage\\'].p75 | number:2}}{{vm.metrics.histograms[\\'HikariPool-1.pool.Usage\\'].p95 | number:2}}{{vm.metrics.histograms[\\'HikariPool-1.pool.Usage\\'].p99 | number:2}}{{vm.metrics.histograms[\\'HikariPool-1.pool.Usage\\'].max | number:2}}
');\n$templateCache.put('app/admin/metrics/metrics.modal.html','

Threads dump

All {{vm.threadDumpAll}}  Runnable {{vm.threadDumpRunnable}}  Waiting {{vm.threadDumpWaiting}}  Timed Waiting {{vm.threadDumpTimedWaiting}}  Blocked {{vm.threadDumpBlocked}} 
 
Filter
{{v.threadState}} {{v.threadName}} (ID {{v.threadId}}) Show StackTrace Hide StackTrace
{{stV.className}}.{{stV.methodName}}({{stV.fileName}}:{{stV.lineNumber}})
Blocked TimeBlocked CountWaited TimeWaited CountLock Name
{{v.blockedTime}}{{v.blockedCount}}{{v.waitedTime}}{{v.waitedCount}}{{v.lockName}}
');\n$templateCache.put('app/components/cardForm/cardForm.html','

Tarjeta de crédito

');\n$templateCache.put('app/components/carrito/carrito.html','

CARRITO

0\" class=\"carrito__header\"> 0\" class=\"carrito__body\">

Membresia

Cantidad de contactosPrecio por contactoTotal
{{vm.membresiaCarrito.Nombre}}: {{vm.membresiaCarrito.Descripcion}}{{vm.membresiaCarrito.CantidadContacto }}
{{ vm.membresiaCarrito.PrecioContacto | currency:\\'$\\' }}
{{ vm.membresiaCarrito.Precio - ((vm.membresiaCarrito.Precio * vm.membresiaCarrito.Descuento) / 100) | currency:\\'MXN $\\':0 }}

Encuestas

Cantidad de contactosPrecio por contactoTotal
{{encuesta.Nombre}}

Las fechas de la encuesta se encuentran desactualizadas

Fecha de vigencia: 

{{encuesta.FechaVigencia | date:\\'dd/MM/yyyy\\'}}

Descripci\\xF3n:

{{encuesta.Descripcion}}

{{ encuesta.precioContacto | currency:\\'$\\' }}
{{ encuesta.CantidadContactos * encuesta.precioContacto | currency:\\'$\\' }}
Subtotal{{ vm.getTotalContactos() }}{{ vm.getSubtotal() | currency:\\'$\\' }}

Descuentos

PorcentajeTotal
Contactos bonificados{{ vm.getContactosBonificados() }}/{{ vm.cantidadContactos }}{{ -vm.getContactosBonificadosTotal() | currency:\\'$\\' }}
Bonificaci\\xF3n por cantidad{{ vm.getPorcentajeBonificacion(vm.getTotal()) * 100 }}%{{ -vm.getTotal() * vm.getPorcentajeBonificacion(vm.getTotal()) | currency:\\'$\\' }}

Recargo

Total
Acceso a la comunidad{{ (vm.recargo > 0) ? (vm.recargo | currency:\\'$\\') : \"BONIFICADO\" }}
Preguntas sin bonificar{{ vm.getPreguntasNormalesTotal() }}{{ vm.getPrecioPreguntasNormalesTotal() | currency:\\'$\\' }}

Total

Costo por contacto{{ vm.getTotalContactos() > 0 ? vm.getTotalPrecio() / vm.getTotalContactos() : 0 | currency:\\'$\\' }}
Costo encuesta{{ vm.getTotalPrecio() | currency:\\'$\\' }}
');\n$templateCache.put('app/components/carrito/carritoCompra-dialog.html','

Confirmar compra

\\xBFDesea recibir una factura?
Tarjeta de creditoTransferencia bancariaPago corporativo
{{vm.pagoTarjeta()}}

Transferencia bancaria

REFERENCIA BANORTE: {{ vm.CLABE }}
  • Transferencia {{$index+1}}: {{ monto | currency }}

Cliente corporativo

Procesando pago, aguarde por favor.

Compra realizada con éxito.

Ha ocurrido un error, por favor, vuelva a intentar.

Confirmar compra Cancelar
');\n$templateCache.put('app/components/carrito/carritoRemoveEncuesta-dialog.html','

Confirmar eliminaci\\xF3n de encuesta

\\xBFEst\\xE1 seguro que desea eliminar {{ vm.encuesta.Nombre }}?

');\n$templateCache.put('app/components/cotizador/cotizador.html','

Cotizador

Contactos

Preguntas simples
MXN $ {{vm.precioSimple}}: SI/NO, Código de barras, Barra desplazable, Numérico, Alfanumérico,
Geolocalización, Opción múltiple, Código QR.

Preguntas de imagen
MXN $ {{vm.precioImagen}}

Preguntas de audio/video
MXN $ {{vm.precioAudioVideo}}

Costo mínimo de contacto:

MXN $250


Cantidad de contactos:

{{vm.contactos.cantidad}}


Cantidad total de preguntas:

{{vm.encuesta.totalQuestions.cantidad}}


{{contactType.name}}
Bonificación por cantidad
Superando los $150,000 se aplica un 15%,
$250,000 un 25% y $400,000 un 35%.

{{ vm.bonificado }} %

Costo por contacto:
Costo final por cada contacto.

MXN $ {{vm.costoContacto | number: 2}}

Acceso a la comunidad
Si usted no posee una membresía, deber\\xE1 abonar el costo
por acceder a la comunidad.

Bonificado

MXN $ {{vm.accesoComunidad}}

Monto total: MXN $ {{vm.totalPrice | number:2}} (*)

(*) Si usted no posee una membresía, se incluirá en el monto final el costo del acceso a la comunidad.

(*) El monto total no incluye IVA.

');\n$templateCache.put('app/components/dashboard/dashboard.html','

DASHBOARD

{{ vm.encuestasSummary.Total | number }}

Totales

{{ vm.encuestasSummary.Pendientes | number }}/{{ vm.encuestasSummary.Total | number }}

Pendientes

{{ vm.encuestasSummary.Activas | number }}/{{ vm.encuestasSummary.Total | number }}

En campo

{{ vm.encuestasSummary.Finalizadas | number }}/{{ vm.encuestasSummary.Total | number }}

Finalizadas

Costo promedio de contacto por encuesta

{{ vm.nextMembresia.Nombre }}

+{{ vm.pending }}

Carrito

{{ vm.userMembresia.Nombre }}

Membresía actual

\\xDAltimas encuestas creadas

NombreFecha InicioFecha Vigencia
No hay encuestas.
{{ encuesta.Nombre }}{{ encuesta.FechaInicio | date:\\'dd/MM/yyyy\\' }}{{ encuesta.FechaVigencia | date:\\'dd/MM/yyyy\\' }}
');\n$templateCache.put('app/components/carritoEncuestaCliente/carritoEncuestaCliente.html','

Datos de la Encuesta:

Nombre de la encuesta: {{vm.encuesta.Nombre}}

Descripcion de la encuesta: {{vm.encuesta.Descripcion}}

Fecha de Vigencia de la encuesta: {{vm.encuesta.FechaVigencia | date:\\'dd/MM/yyyy\\'}}

Fecha de Inicio de la encuesta: {{vm.encuesta.FechaInicio | date:\\'dd/MM/yyyy\\'}}

Criterio de Aceptacion: {{vm.encuesta.CriterioAceptacion}}

Tipo Contacto: {{vm.encuesta.TipoEncuesta}}

Preguntas:

Pregunta Nro: {{ $index + 1 }}

Descripcion: {{pregunta.Texto}}

Tipo: {{pregunta.TipoPregunta.Nombre}}

Respuesta Nro: {{respuesta.NumeroRespuesta}}
Descripcion: {{respuesta.Valor}}

{{vm.faltaGuardar}}

{{vm.faltaAgregar}}

');\n$templateCache.put('app/components/encuestasCliente/encuestasCliente-delete.html','

Confirmar eliminaci\\xF3n de encuesta

\\xBFEst\\xE1 seguro que desea eliminar {{ vm.encuesta.Nombre }}?

');\n$templateCache.put('app/components/encuestasCliente/encuestasCliente-detail.html','

Detalle de Encuesta

Nombre de la encuesta: {{vm.encuesta.Nombre}}

Cantidad de contactos: {{vm.encuesta.CantidadContactos}}

Fecha de vigencia: {{vm.encuesta.FechaVigencia | date:\"dd/MM/yyyy\"}}

Fecha de inicio: {{vm.encuesta.FechaInicio | date:\"dd/MM/yyyy\"}}

Criterios de aceptación: {{vm.encuesta.CriterioAceptacion}}

Descripci\\xF3n: {{vm.encuesta.Descripcion}}

Tipo Contacto: {{vm.encuesta.TipoEncuesta}}

Preguntas

{{pregunta.Texto}}

{{pregunta.TipoPregunta.Nombre}}

Ubicaciones

    • {{ubicacion.Nombre}}

  • ');\n$templateCache.put('app/components/encuestasCliente/encuestasCliente.html','

    ENCUESTAS

    {{ vm.encuestasSummary.Total | number }}

    Totales

    {{ vm.encuestasSummary.Pendientes | number }}/{{ vm.encuestasSummary.Total | number }}

    Pendientes

    {{ vm.encuestasSummary.Activas | number }}/{{ vm.encuestasSummary.Total | number }}

    En campo

    {{ vm.encuestasSummary.Finalizadas | number }}/{{ vm.encuestasSummary.Total | number }}

    Finalizadas

    Caracteres no v\\xE1lidos. Debe haber al menos 3 caract\\xE9res.
    NombreFecha InicioFecha VigenciaEstado
    No hay encuestas.
    {{ encuesta.Nombre }}{{ encuesta.FechaInicio | date:\\'dd/MM/yyyy\\' }}{{ encuesta.FechaVigencia | date:\\'dd/MM/yyyy\\' }}{{ encuesta.Estado.Nombre }}
    ');\n$templateCache.put('app/components/historialCompras/historialCompras-detail.html','

    Detalle de compra

    Recibo: {{vm.historial.Recibo}}

    Nombres encuestas: {{encuesta.Nombre}} 1\">,

    Fecha: {{vm.historial.Fecha | date:\"dd/MM/yyyy\"}}

    Método de pago: Visa - Stripe

    Número de Referecia: {{vm.historial.NroReferencia}}

    Total: $ {{vm.historial.Monto}}

    Factura \"\"

    ');\n$templateCache.put('app/components/historialCompras/historialCompras.html','

    HISTORIAL DE COMPRAS

    FechaNúmero de referenciaUsuarioPrecio
    No hay compras.
    {{ compra.Fecha | date:\\'dd/MM/yyyy\\'}}{{ compra.NroReferencia }}{{compra.User.UserName}}$ {{ compra.Monto }}
    ');\n$templateCache.put('app/components/datosEncuestaCliente/datosEncuestaCliente.html','

    (*) Tipo de contacto:

    {{contactType}}
    Elige el target que necesitas impactar. Ejemplo:
    Consumidores de un producto/ marca o auditores que
    vayan a direcciones/puntos de venta específicos.

    El Tipo de Contacto es obligatorio.

    (*) Nombre de la Encuesta

    Elija un nombre sencillo que identifique a la encuesta en los
    diferentes reportes del sistema. Ejemplo: \"Levantamiento de
    precios\" o \"Auditor\\xEDa ejecuci\\xF3n Chedraui\"

    El Nombre es obligatorio.

    20\" class=\"alert alert-danger col-xs-12\">

    El Nombre de la Encuesta no puede superar los 20 caracteres.

    (*) Fecha de Inicio

    La Fecha de Inicio debe ser, como mínimo, 48 horas posterior a la fecha actual.

    Fecha de Inicio es obligatorio.

    (*) Fecha de Vigencia

    Es la fecha m\\xE1xima a la que puede esperar para la generaci\\xF3n de
    contactos. Mayor tiempo, mayor probabilidad de concretar el
    total de contactos requeridos. Una vez alcanzada esta fecha, el
    sistema suspender\\xE1 la toma de contactos. Si los contactos
    m\\xE1ximos se alcanzan antes de esta fecha, entonces la
    suspensi\\xF3n de la toma de contactos se dar\\xE1 antes de la fecha de
    vigencia. Recomendaci\\xF3n: al menos 2 semanas.

    Fecha Vigencia es obligatoria.

    (*) Descripci\\xF3n

    Sea lo m\\xE1s espec\\xEDfico posible. Indique cu\\xE1l es el objetivo del
    levantamiento, qui\\xE9n o cu\\xE1l es el target, si es un consumidor
    indique el perfil, si son tiendas o canales sea espec\\xEDfico en que
    cadenas o canales desea medir (Ejemplo: farmacias, Wal-Mart,
    Changarros, Amas de casa, etc). Describa cu\\xE1l es la
    problem\\xE1tica que desea resolver. Sea espec\\xEDfico y detallado en el
    tipo de informaci\\xF3n que desea adquirir y para que la va a utilizar.
    Describa con detalle el producto que est\\xE1 levantando.

    La Descripci\\xF3n es obligatoria.

    (*) Criterios de Aceptaci\\xF3n

    {{ criterio.Descripcion }}
    Son los controles de calidad que se utilizar\\xE1n para aceptar o
    rechazar los contactos. Sea espec\\xEDfico en que puntos son cr\\xEDticos
    para la aceptaci\\xF3n o rechazo de cada contacto.

    El Criterio de Aceptaci\\xF3n es obligatorio.

    Utilizar criterio predefinido.

    (*) Campo Obligatorio

    ');\n$templateCache.put('app/components/investigacion/investigacion.html','

    Investigación de Mercado

    Llega al target deseado y consulta los resultados en cuestión de horas, 100% en línea.

    Investigación de Mercado

    Con esta solución los auditores reciben fotos del producto a evaluar y realizan encuestas con consumidores, comerciantes o shoppers para entender la probabilidad de compra del producto una vez lanzado al mercado.


    Caso Práctico

    Una marca de la categoría de cuidado personal necesitaba entender si un pack promocional sería aceptado por el comerciante de changarro. Utilizando SmartEyes se realizó un levantamiento de 1,832 tenderos en las ciudades más importantes de México. Los resultados arrojaron que solamente el 32% de los tenderos estarían dispuestos a comprar el Pack Promocional y se tomó la decisión de suspender el proyecto.

    Con Shopper Insights nuestros clientes pueden realizar estudios para entender el comportamiento de los consumidores en el punto de venta. Estos estudios se realizan con el asesoramiento de nuestros expertos en investigaci\\xF3n de mercado. Las encuestas son enviadas a los auditores, quienes entrevistan en el momento que los \\u201Cshoppers\\u201D hacen sus compras.


    Caso Práctico

    Una compañía de detergentes para la ropa necesitaba entender cuál era el tamaño y precio óptimo para sus presentaciones de changarro. Mediante SmartEyes se lograron 240 entrevistas con amas de casa al momento de comprar detergente, informaci\\xF3n vital que la empresa utilizó para diseñar los tamaños correctos para el canal.

    Con Efectividad de Promociones nuestros clientes pueden realizar estudios cuantitativos que les permitan entender qué elementos promocionales en el punto de venta son más efectivos.


    Caso Práctico

    Una compañía de agua mineral utilizó los servicios de SmartEyes para realizar encuestas a los consumidores de agua mineral de los puntos de exhibición en la tienda. Posteriormente se determinó que la promoción de 2x1 era la más llamativa y efectiva para los consumidores.

    Con Mystery Shopper nuestros clientes pueden realizar encuestas para corroborar el cumplimiento de los estándares definidos por la casa matriz. En este caso los auditores acuden al punto de venta haciéndose pasar por un consumidor.


    Caso Práctico

    Una cadena de tiendas de pintura contrató los servicios de SmartEyes para obtener información del nivel de ejecución de sus pinturerías. Para ésto se diseñó una encuesta que permitió entender si sus pinturerías y sus distribuidores cumplían con los lineamientos de ejecución establecidos.

    Con Dentro de La Casa nuestros clientes pueden obtener información sobre hábitos de consumo de una categoría o producto determinado. Con el apoyo de nuestros expertos en investigación de mercado, se diseñan las encuestas que varían según las marcas y categorías.


    Caso Práctico

    Una compañía que fabrica marcas de Shampoo y Acondicionador necesitaba saber quiénes eran sus competidores principales. Para esto se diseñó una encuesta y nuestros auditores analizaron 1,200 hogares en los cuales se realizaron entrevistas con el ama de casa y se fotografiaron los baños para ver las marcas de shampoo.

    Conozca m\\xE1s sobre SmartEyes

    Industrias

    Conozca los tipos de empresas que trabajan con la tecnolog\\xEDa de SmartEyes.

    Conozca m\\xE1s

    Productos

    Descubra las herramientas que tenemos para auditar, establecer concursos de promotoría, evaluación de canales y stock.

    Conozca m\\xE1s

    Comience con SmartEyes

    Empieza ahora
    ');\n$templateCache.put('app/components/industrias/industrias.html','

    Industrias

    SmartEyes es para empresas de todos los tamaños que necesitan información de los puntos de venta y consumidores.

    Industrias

    Con Franquicias, los auditores de SmartEyes visitan los puntos de venta de las franquicias y contestan una encuesta que está diseñada para evaluar la correcta ejecución.

    SmartEyes es utilizado por diferentes cadenas de restaurantes para corroborar que el servicio al cliente y ejecuci\\xF3n cumplan con los est\\xE1ndares definidos. Los auditores acuden a los locales para comer y al finalizar contestan las preguntas establecidas en las encuestas.

    SmartEyes es utilizado por nuestros clientes de consumo masivo que operan en México para auditar sus marcas en el punto de venta.

    SmartEyes es utilizado por nuestros clientes de retail en México para realizar auditorías que apuntan a entender niveles de cumplimiento como los del portafolio acordado, las promociones, nivel de servicio en la tienda, atención al cliente, etc.

    Conozca m\\xE1s sobre SmartEyes

    Investigación

    Conozca los tipos de empresas que trabajan con la tecnolog\\xEDa de SmartEyes.

    Conozca m\\xE1s

    Productos

    SmartEyes brinda distintos elementos de evaluación para las empresas. Descubra nuestras herramientas de investigación.

    Conozca más

    Comience con SmartEyes

    Empieza ahora
    ');\n$templateCache.put('app/components/login/login.html','
    \"logo\"
    Error al iniciar sesión! Tu usuario y contraseña no coinciden.
    No tienes cliente! El administrador debe asignarte un cliente.
    {{vm.facebookLoginError}}

    \\xBFA\\xFAn no tienes cuenta? Registrarme
    ');\n$templateCache.put('app/components/membresiaSaldo/membresiaSaldo.html','

    {{ vm.contactosLibres | number }}/{{ vm.membership.CantidadContacto | number }}

    Contactos

    ');\n$templateCache.put('app/components/modalEncuesta/modalEncuesta.html','

    Confirmaci\\xF3n de Encuesta

    Detalle de la encuesta

    Preguntas

    Respuestas

    T\\xE9rminos y condiciones
    Not Useful
    -->
    Enviar
    ');\n$templateCache.put('app/components/membresia/confirmacionMembresia-dialog.html','

    Confirmaci\\xF3n Membresia

    La Membresia fue enviada al carrito

    ');\n$templateCache.put('app/components/membresia/membresia.html','

    Procesando la solicitud...

    Solicitud realizada con éxito

    Membresías

    Contrata la membresía adecuada para tu empresa.

    MEMBRESÍAS

    MEMBRESÍAS

    Contrata la membresía adecuada para tu empresa.

    \\xBFQué estás esperando?

    Contratada
    - {{membership.Descuento}} %

    {{ membership.Nombre }}

    {{ membership.Precio | currency:\\'MXN $\\':0 }}*

    {{ membership.Descripcion }}

    Membresia Contratada

    • {{ membership.CantidadContacto }} encuestas completadas (Precio de lista = {{ membership.Precio | currency:\\'$\\' }})

      Cantidad de contactos que posee tu membresía.

    • {{ membership.CantidadPreguntaEncuesta }} preguntas por encuesta

      Cantidad de preguntas que posee tu membresía.

      • Foto, video, audio, etc.
    • Descuento {{ membership.DescuentoContacto }}% por contacto incrementales

      Descuento que obtendrá con la membresía al momento de comprar contactos adicionales.

    • {{ item.Nombre }}
      {{ item.Nombre }}

      {{ item.Descripcion }}

    (*)El precio no incluye IVA

    ');\n$templateCache.put('app/components/membresia/membresiaContratar-dialog.html','

    Contratar membresía

    \\xBFEsta seguro que quiere contratar la membresia \"{{ vm.membership.Nombre }}\"?

    Los beneficios de la membres\\xEDa anterior van a ser reemplazados por la nueva membres\\xEDa.

    Usted no posee una forma de pago

    \\xBFQuiere cargar una forma de pago para realizar la compra?

    ');\n$templateCache.put('app/components/nuevaEncuestaCliente/nuevaEncuestaCliente.html','

    NUEVA ENCUESTA

    Datos de la Encuesta

    Preguntas de la Encuesta

    Ubicacion de la Encuesta

    Costo de la Encuesta

    ');\n$templateCache.put('app/components/preguntaEncuestaCliente/preguntaEncuestaCliente.html','

    La pregunta no puede estar vac\\xEDa.

    {{tipoPregunta.NombreFE}}Sin padre{{$index + 1}} - {{padre.Texto}}Pregunta Obligatoria
    Requerida por padre
    SINO
    {{padre.NumeroRespuesta}} - {{padre.Opcion}}
    Control Preventivo

    Código

    Descripción

    Precio

    Quitar

    A\\xF1adir respuesta

    No puede haber solo un dato de Alerta.

    No puede haber solo un dato de Candado.

    El Minimo de Alerta debe ser menor al Maximo.

    El Minimo de Candado debe ser menor al Maximo.

    La Alerta debe estar dentro del rango de Candado.

    Alert

    ');\n$templateCache.put('app/components/productos/productos.html','

    Productos

    Obteniendo la información que tu empresa necesita del punto de venta, hogares, restaurantes, tiendas.

    Productos

    Con evaluaci\\xF3n de canales, nuestros clientes pueden realizar un relevamiento de la presencia de su marca en un canal determinado, dise\\xF1ando una encuesta para entender el estado de la distribuci\\xF3n, precio y niveles de visibilidad de su marca y de sus competidores.


    Caso Práctico

    Una empresa de productos farmac\\xE9uticos necesitaba entender el estado de una de sus marcas en el canal tradicional. Los datos de la encuesta realizada en 15,000 \\u201CChangarros\\u201D dio a conocer que la distribuci\\xF3n num\\xE9rica de la marca era de un 22% y el producto visible en un 3% de las tiendas. Por otro lado, era un competidor l\\xEDder en la categor\\xEDa con niveles de distribuci\\xF3n del 42% y visible al consumidor en un 34%. Con estos resultados se dise\\xF1aron planes m\\xE1s agresivos para competir adecuadamente.

    Con Análisis de la Competencia, nuestros clientes pueden realizar un levantamiento de las actividades y presencia de sus competidores en el Punto de Venta.

    Si deseas entender qu\\xE9 actividades est\\xE1 realizando tu competencia en el mercado, puedes utilizar este producto dise\\xF1ando encuestas que te ayuden a recopilar la informaci\\xF3n requerida.
    Las encuestas pueden estar dirigidas a entender el nivel de distribuci\\xF3n de un competidor en un determinado canal, an\\xE1lisis de precios, actividades de mercadeo, presencia de anaquel, etc.


    Caso Práctico

    Una empresa de bebidas energéticas llevaba varios trimestres perdiendo participación de mercado. Utilizando SmartEyes se hizo un levantamiento de los niveles de precio en 3 diferentes canales, actividades de mercadeo y promociones en clientes específicos, donde la pérdida era más marcada. A partir de esto la marca diseñó planes que aumentaron su participación en el mercado.

    Con Fundamentales de Venta, nuestros clientes pueden realizar relevamientos periódicos o puntuales del estado de un cliente o canal específico.

    Éstos son: Distribución Numérica, Precio, Presencia de Anaquel y Mercadeo.


    Caso Práctico

    Una marca líder de la categoría de electrodomésticos necesitaba saber del estado de los fundamentales de venta en uno de sus clientes más importantes. Con SmartEyes realizó un trabajo de relevamiento en el que se dio cuenta que su presencia de anaquel estaba significativamente por debajo de lo que correspondía, según su participación de mercado. Con estos resultados se estableció una estrategia con la que lograron un acuerdo para incrementar la presencia de la marca en Anaquel.

    Con Auditorías de Ejecución nuestros clientes pueden tomar información y verificar la correcta ejecución de actividades específicas en el punto de venta como, por ejemplo, promociones, colocación de material POP en un canal o cliente, correcta ejecución de un equipo de demostradoras, etc.


    Caso Práctico

    Una empresa cuyas ventas se realizaban mayormente en temporada invernal contrató los servicios de SmartEyes para verificar la correcta ejecución de la temporada. Gracias a esto, la empresa entendió el nivel de cumplimiento de las diferentes acciones en los clientes más relevantes, y logró cerrar los \"gaps\" que tenía el plan antes de finalizar la temporada.

    Mediante este producto nuestros clientes pueden conocer y dar seguimiento a los concursos de sus promotores en campo. A diferencia de los otros productos, el equipo de promotoría de la empresa es el que realiza las auditorías.


    Caso Práctico

    Un laboratorio que tiene una fuerza de promotores de 700 personas contrató los servicios de SmartEyes para realizar una verificación de los concursos de promotoría. A partir de ésto se generó un incremento significativo en el cumplimiento de los objetivos, ya que la verificación de las ejecuciones es prácticamente en tiempo real y los pagos se realizaron de manera sencilla y semanal.

    Con Agotados en Tienda nuestros clientes pueden realizar auditorías periódicas para entender el nivel de agotados en el punto de venta y tomar acciones correctivas, de la misma manera que lo vería el consumidor.


    Caso Práctico

    Una marca de la categoría de rasurado contrató SmartEyes para realizar un levantamiento de niveles de agotados en un cliente determinado y entender la verdadera causa. Una vez realizado el levantamiento se encontró que el 18% de las tiendas no tenían el producto visible y disponible en el anaquel.

    Conozca m\\xE1s sobre SmartEyes

    Industrias

    Conozca los tipos de empresas que trabajan con la tecnolog\\xEDa de SmartEyes.

    Conozca m\\xE1s

    Investigaci\\xF3n

    SmartEyes brinda distintos elementos de evaluaci\\xF3n para las empresas. Descubra nuestras herramientas de investigaci\\xF3n.

    Conozca m\\xE1s

    Comience con SmartEyes

    Empieza ahora
    ');\n$templateCache.put('app/components/resultEncuestaCliente/mediaEmailDialog.html','

    Confirmar Descarga Multimedia

    0\">Estas son algunas de las im\\xE1genes que se enviar\\xE1n

    0\">

    {{item.Descripcion}}

    {{item.Codigo}} - {{item.FechaDateTime}}

    {{item.Descripcion}}

    {{item.Codigo}} - {{item.FechaDateTime}}

    No hay ninguna imagen para mostrar entre las fechas seleccionadas. Sin embargo, es posible que haya archivos multimedia de otro tipo que se enviar\\xE1n al exportar

    ');\n$templateCache.put('app/components/resultEncuestaCliente/resultEncuestaCliente.html','

    RESULTADOS

    {{vm.encuesta.Nombre}}

    ESTADÍSTICAS GENERALES

    TOTAL ENCUESTAS
    {{vm.RespuestasCount}} {{vm.RespuestasCount == 1 ? \"encuesta\" : \"encuestas\"}}

    ENCUESTADORES UNICOS
    {{vm.EncuestadoresCount}} {{vm.EncuestadoresCount == 1 ? \"encuestador\" : \"encuestadores\"}}
    0 && pregunta.Opciones.length > 0\" class=\"col-sm-4 col-xs-12 pregunta-estadistica\">

    {{pregunta.Descripcion}}

    3}\">
    {{opciones.Valor}} : {{opciones.Cantidad * 100 / pregunta.Cantidad | number : 2}}%
    {{opciones.Cantidad}} respuestas
    {{vm.efectividad}}
    Efectividad
    {{vm.porcentajeEfectividad}}
    {{vm.ventaTotalFormatted}}
    MXN $
    (Venta Promedio: {{vm.ventaPromedio}})
    {{vm.encuestador.CURP ? vm.encuestador.CURP + \\' - \\' : \\'\\'}}{{vm.encuestador.NombreApellido}}
    VENTA TOTAL

    CONTACTOS

    Filtrar por fechas

    Efectividad: Ver Todos

    No hay resultados/estad\\xEDsticas para las fechas seleccionadas.

    {{encuestador.CURP ? encuestador.CURP + \\' - \\' : \\'\\'}}{{encuestador.NombreApellido}}

    Fecha: {{ vm.contacto.Resultados[0].FechaSubida }}

    {{vm.preguntas[$index].Pregunta}}

    Sin respuesta.

    Fecha de respuesta: {{respuesta.Fecha | date:\\'dd/MM/yyyy\\'}}


    {{respuesta.ValorNumerico}}
    {{respuesta.Valor}}
    No
    • {{respuestaMultipleChoice.ValorMultipleChoice}}
    {{respuesta.ValorNumerico}} / {{vm.preguntas[$index].ValorMaximo}}
    {{respuesta.Valor}}
    CódigoProductoPrecioCantidad
    {{ opt.Codigo }}{{ opt.Descripcion }}MXN $ {{ opt.Precio }}{{ opt.ValorNumerico }}
    Total{{ vm.catalogoTotal | number: 2}}

    No hay resultados para esta encuesta.

    Esconder

    {{i.nombre | limitTo: 18}} 18\">...
    {{i.status}}

    ');\n$templateCache.put('app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente-locations.html','

    Listas de locaciones

    Cadenas

    Tiendas

    Estados

    Municipios

    Ubicaciones Encontradas

    {{ubicacion.Nombre}}.

    No se encontraron Ubicaciones para los filtros seleccionados

    Listas guardadas

     {{ubicacion.Nombre}}

    {{location.Nombre}}.
    ');\n$templateCache.put('app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente-save-locations-dialog.html','

    Crear nueva lista de ubicaciones

    ');\n$templateCache.put('app/components/ubicacionEncuestaCliente/ubicacionEncuestaCliente.html','

    Selecciona la Ubicaci\\xF3n

    Las direcciones exactas o puntos de venta se toman como
    contactos/respuestas. Si seleccionas la ubicación de una ciudad,
    colonia, estado, etc, debes agregar en el siguiente paso la cantidad
    de contactos/respuestas que deseas.

    - Colonia, ciudad, estado.

    - Ubicación exacta o tienda.

    Direcciones
    Cobertura (Km)
    Contactos

     {{location.Nombre}}

    0\">Borrar Todo
    Elige radio por default 5}\">
    Usar cobertura por defecto.
    Cobertura se utiliza para definir el \\xE1rea que
    debe cubrir el auditor cuando la ubicación no es exacta.
    Ej: Cuando deseas cubrir un levantamiento de informaci\\xF3n
    en el \\xE1rea de Ecatepec para tiendas de conveniencia.
    GuardarUsar lista
    Usar lista predefinida
    Mostrar todos los marcadores

    Importar Ubicaci\\xF3n

    Si tienes un Excel con ubicaciones puedes importar un archivo
    y el equipo de SmartEyes se encargará de asignarlas.
    Selecciona tu Archivo

    Descargar Template

    Si lo desea puede descargar una planilla para completarla con
    sus ubicaciones para utilizarlas mas tarde.
    CanalCadenaFormatoTiendaCodigoTiendaLatitudLongitudCalleEstadoMunicipioDescTRM
    {{item.Canal}}{{item.Cadena}}{{item.Formato}}{{item.Tienda}}{{item.CodigoTienda}}{{item.Latitud}}{{item.Longitud}}{{item.Calle}}{{item.Estado}}{{item.Municipio}}{{item.DescTRM}}

    Exportar Ubicaci\\xF3n

    Si lo desea puede exportar sus ubicaciones a un
    archivo excel para utilizarlas mas tarde.
    CanalCadenaFormatoTiendaCodigoTiendaLatitudLongitudCalleEstadoMunicipioDescTRM
    {{item.Canal}}{{item.Cadena}}{{item.Formato}}{{item.Tienda}}{{item.CodigoTienda}}{{item.Latitud}}{{item.Longitud}}{{item.Calle}}{{item.Estado}}{{item.Municipio}}{{item.DescTRM}}

    Ubicaci\\xF3n de Texto

    Si las ubicaciones no se encuentran en Google Maps y no las tienes
    en un archivo, indicanos con tus palabras las ubicaciones que sean.

    Cargando Ubicaciones...

    {{vm.encuesta.Ubicaciones.length}} / {{vm.maxUbicaciones}}

    ');\n$templateCache.put('app/components/sQLExportData/sQLExportData.html','

    SQL Export Data

    NombreJSONCSV
    No hay queries.
    {{ query.Nombre }}
    ');\n$templateCache.put('app/layouts/cotizadorFlotante/cotizadorFlotante.html','
    Cotizar ahora
    ');\n$templateCache.put('app/layouts/footer/footer.html','

    CONTACTO

    • contacto@smart-eyes.com
    • Av. Santa Fe No. 170 - Col. Lomas de Santa Fe - Delegaci\\xF3n \\xC1lvaro Obreg\\xF3n 01219 - Ciudad de M\\xE9xico - M\\xE9xico
    • +52 1 55 6122 3141
    \"SmartEyes\"

    Producto y Marca registrada propiedad

    de Health Check Data Mining S.A. de C.V.



    healthcheck.com.mx

    Copyright \\xAE 2018 - SmartEyes - Todos los derechos reservados

    ');\n$templateCache.put('app/layouts/navbar/navbar.html','');\n$templateCache.put('app/layouts/whatsappLink/whatsappLink.html','
    ');\n$templateCache.put('app/layouts/error/accessdenied.html','

    Error Page!

    You are not authorized to access this page.
    ');\n$templateCache.put('app/layouts/error/error.html','

    Error Page!

    {{errorMessage}}
    ');\n$templateCache.put('app/account/reset/finish/reset.finish.html','

    Reseteo de contrase\\xF1a

    The password reset key is missing.

    Nueva contrase\\xF1a

    Su contrase\\xF1a no pudo ser reseteada. Recuerde que puede resetearla una vez cada 24hs.

    Su contrase\\xF1a fue reseteado.

    La nueva contrase\\xF1a y su confirmaci\\xF3n no son iguales!

    Su contrase\\xF1a es requerida.

    Su contrase\\xF1a debe contener al menos 4 car\\xE1cteres.

    Su contrase\\xF1a no debe ser mayor a 50 car\\xE1cteres.

    Este campo es requerido.

    Su contrase\\xF1a debe contener al menos 4 car\\xE1cteres.

    Su contrase\\xF1a no debe ser mayor a 50 car\\xE1cteres.

    ');\n$templateCache.put('app/account/reset/request/reset.request.html','

    Reset your password

    Email address isn\\'t registered! Please check and try again.

    Enter the email address you used to register.

    Check your emails for details on how to reset your password.

    Your email is required.

    Your email is invalid.

    Your email is required to be at least 5 characters.

    Your email cannot be longer than 100 characters.

    ');\n$templateCache.put('app/admin/controlInputs/cantidadRespuestas/cantidadRespuestas.html','

    KPI estadisticas

    {{proyecto.Nombre}}
    {{encuesta.Nombre}}
    {{canal}}
    {{encuestador.NombreApellido}}
    {{estado}}
    {{municipio}}

    Proyecto: {{encuestaData.Data.Proyecto}}

    Encuesta: {{encuestaData.Data.Nombre}}

    Estado: {{encuestaData.Data.Estado}}

    Municipio: {{encuestaData.Data.Municipio}}

    CantidadPreguntas: {{encuestaData.Data.CantidadPreguntas}}

    Media: {{encuestaData.Media}}

    Moda: {{encuestaData.Moda}}

    Desviacion Estandar: {{encuestaData.Sd}}

    Minimo: {{encuestaData.Min}}

    Maximo: {{encuestaData.Max}}

    Tama\\xF1o muestra: {{vm.cantidadRespuestasList[$index].length}}

    Esconder

    {{i.nombre | limitTo: 18}} 18\">...
    {{i.status}}

    ');\n$templateCache.put('app/admin/controlInputs/tiempoEjecucionUsuario/tiempoEjecucionUsuario.html','

    KPI estadisticas

    {{proyecto.Nombre}}
    {{encuesta.Nombre}}
    {{canal}}
    {{encuestador.NombreApellido}}
    {{estado}}
    {{municipio}}

    Proyecto: {{encuestaData.Data.Proyecto}}

    Encuesta: {{encuestaData.Data.Nombre}}

    Estado: {{encuestaData.Data.Estado}}

    Municipio: {{encuestaData.Data.Municipio}}

    CantidadPreguntas: {{encuestaData.Data.CantidadPreguntas}}

    Media: {{encuestaData.Media}}

    Moda: {{encuestaData.Moda}}

    Desviacion Estandar: {{encuestaData.Sd}}s

    Minimo: {{encuestaData.Min}}

    Maximo: {{encuestaData.Max}}

    Tama\\xF1o muestra: {{vm.tiempoEjecucionList[$index].length}}

    Esconder

    {{i.nombre | limitTo: 18}} 18\">...
    {{i.status}}

    ');\n$templateCache.put('app/admin/controlInputs/valoresSKU/valoresSKU.html','

    KPI estadisticas

    {{proyecto.Nombre}}
    {{encuesta.Nombre}}
    {{canal}}
    {{encuestador.NombreApellido}}
    {{sku.SKU + (sku.Descripcion ? \" - \" + sku.Descripcion : \"\")}}
    {{estado}}
    {{municipio}}

    Proyecto: {{encuestaData.Data.Proyecto}}

    Encuesta: {{encuestaData.Data.Nombre}}

    Estado: {{encuestaData.Data.Estado}}

    Municipio: {{encuestaData.Data.Municipio}}

    CantidadPreguntas: {{encuestaData.Data.CantidadPreguntas}}

    Media: $ {{encuestaData.Media}}

    Moda: $ {{encuestaData.Moda}}

    Desviacion Estandar: $ {{encuestaData.Sd}}

    Minimo: $ {{encuestaData.Min}}

    Maximo: $ {{encuestaData.Max}}

    Tama\\xF1o muestra: {{vm.valoresSKUList[$index].length}}

    Esconder

    {{i.nombre | limitTo: 18}} 18\">...
    {{i.status}}

    ');}]);})();"],"sourceRoot":"/source/"}