{"version":3,"file":"main.5e6ef06ee5e414f6.js","mappings":"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ACAH,KACAJ,GAEAG,KACAX,GACAyB,MACAL,KACAF,KACAgC,KACAC,KACAC,KACAjC,IACAkC,MACAC,MACAC,KACAC,KACAC,KACAzC,KACA0C,KACArC,KACAsC,gBAQShB,CAAS,KCpEtBiB,OAAyBC,gBAAgBlB,IACtCmB,MAAMz4B,GAAOjlB,QAAQkD,MAAM+hB,eCN9B,SAAA04B,EAAAhC,GAGA,OAAA/nC,QAAAC,UAAA2S,KAAA,KACA,IAAAxc,EAAA,IAAAoyC,MAAA,uBAAAT,EAAA,KACA,MAAA3xC,EAAA4zC,KAAA,mBACA5zC,GAEA,CACA2zC,EAAAE,KAAA,OACAF,EAAA9pC,QAAA8pC,EACAA,EAAA//C,GAAA,MACAkgD,EAAAC,QAAAJ,mBCZA,IAAA1gD,EAAA,CACA,aACA,gBACA,YACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,mBACA,gBACA,WACA,cACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,aACA,gBACA,YACA,gBACA,mBACA,gBACA,mBACA,gBACA,mBACA,eACA,YACA,eACA,YACA,eACA,YACA,eACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,YACA,gBACA,mBACA,gBACA,mBACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,sBACA,kBACA,qBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,gBACA,mBACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,gBACA,mBACA,eACA,aACA,gBACA,iBACA,oBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,mBACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,YACA,eACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,cACA,iBACA,aACA,gBACA,aACA,gBACA,aACA,gBACA,gBACA,mBACA,cACA,iBACA,aACA,gBACA,cACA,iBACA,cACA,mBACA,sBACA,iBACA,gBACA,mBACA,aACA,gBACA,aACA,gBACA,aACA,kBACA,qBACA,gBACA,aACA,gBACA,mBACA,sBACA,aACA,gBACA,gBACA,mBACA,eACA,kBACA,gBACA,mBACA,gBACA,oBAIA,SAAA+gD,EAAArC,GACA,IAAA/9C,EAAAqgD,EAAAtC,GACA,OAAAuC,EAAAtgD,EACA,CACA,SAAAqgD,EAAAtC,GACA,IAAAuC,EAAAC,EAAAlhD,EAAA0+C,GAAA,CACA,IAAA3xC,EAAA,IAAAoyC,MAAA,uBAAAT,EAAA,KACA,MAAA3xC,EAAA4zC,KAAA,mBACA5zC,CACA,CACA,OAAA/M,EAAA0+C,EACA,CACAqC,EAAAH,KAAA,WACA,OAAAr0B,OAAAq0B,KAAA5gD,EACA,EACA+gD,EAAAnqC,QAAAoqC,EACAH,EAAAC,QAAAC,EACAA,EAAApgD,GAAA","names":["environment","production","Entorno","URL_API","URL_API_CORREO","ArcGis_Key","PLANET","MAXAR","AuthService","constructor","http","cookies","route","this","dataUser","logIn","user","post","setSesion","jwt_token","refreshToken","expiration_time","id_user","Date","expiresAt","moment","add","expiresIn","idUser","toString","localStorage","setItem","JSON","stringify","valueOf","nombres","apellidos","correoElectronico","sessionStorage","alert","deleteSesion","clear","navigateByUrl","usuarioAutenticado","getItem","of","accessToken","redireccion","url","static","t","i0","i1","i2","i3","core","Yz7","factory","ɵfac","providedIn","EsquemasService","generar_Codigos_Esquemas","token","options","headers","HttpHeaders","Authorization","get","pipe","map","response","dato","set_Codigos_Esquemas","esquemas","esquemas_","obtener_Id_Esquema_Por_Nombre","codigoInterno","parse","find","objeto","id","generar_codigos_por_Esquema","atributos","obtenerPlataformasDeBusqueda","plataformas","obj","atributoEnumeracion","opcionesEnumeracion","plataformas_de_busqueda","forEach","element","identificador","push","nombre","activo","obtenerResolucionesDeBusqueda","resoluccion","resoluciones_de_busqueda","obtener_pataformas","obtener_resoluccion","obtenerPlataformasDeBusquedaCotizacion","plataformas_de_busqueda_cotizacion","obtenerPoligonoGeo","obtener_pataformas_cotizacion","proveedor","obtener_Id_esquema_busqueda_de_imagenes","obtener_Id_esquema_Cotizacion","obtener_Id_esquema_Cotizacion_imagen_archivo","obtener_Id_proveedores_cotizacion","obtener_Ids_ImagenProgramacion","obtener_Ids_PoligonoGeografico","obtener_Ids_PoligonoGeograficoCotizacion","ControlErrorService","mensajeDeError","data","mensajeOriginal","console","log","exitoso","regex","undefined","mensajes","mensajeCorregido","test","match","trim","Swal","title","icon","timer","toast","showConfirmButton","didOpen","swalContainer","document","querySelector","style","zIndex","target","body","SignInComponent","ngOnInit","fb","auth","esquemasServices","controlError","loading","loginForm","group","usuario","Validators","required","clave","data_incompleta_mensaje","inputType","login","valid","cuenta","value","subscribe","next","alerta","decode_jwt","jwtDecode","exp","item","error","text","icono","toggleInputType","isHovered","ruta","i4","i5","Xpm","selectors","decls","vars","consts","template","rf","ctx","SignInComponent_div_0_Template","InactividadService","tiempo_de_inactividad","sesionCerrada","init","timerId","setTimeout","showCancelButton","confirmButtonText","customClass","confirmButton","confirmButtonColor","cerrarSesion","escuchar_eventos","window","addEventListener","comenzar_conteo_inactividad","clearTimeout","AccionesGeograficasService","cambiarTipoDeBusqueda","tipo","tipoBusqueda","medida","geometry","idsImagenes","info","getElementById","coordenadas_Aoi","dataImagenesPlanet","medidasSubject","BehaviorSubject","medidas$","asObservable","esriConfig","apiKey","modificarMedida","polygon","Polygon","rings","planarArea","geometryEngine","valorAbsoluto","Math","abs","numeroEntero","floor","graphicsLayerDibujo","remove","graphics","getItemAt","set_coord_aoi","mapaBase","container","btn_cotizacion","Map","basemap","mapView","MapView","center","zoom","searchWidget","Search","view","ui","position","basemapGallery","BasemapGallery","bgExpand","Expand","content","scalebar","ScaleBar","unit","GraphicsLayer","witgetDibujo","sketch","Sketch","layer","availableCreateTools","creationMode","layout","visibleElements","createTools","point","selectionTools","settingsMenu","undoRedoMenu","viewModel","polygonSymbol","type","color","outline","width","on","e","state","measurements","toFixed","webMercatorUtils","toJSON","witgetLayerList","layerLisT","LayerList","selectionEnabled","agregar_poligono_planet","coordenadas","graphicsLayerPlanet","spatialReference","wkid","graphic","Graphic","symbol","SimpleFillSymbol","aoi_poligono","AOI","graficaAOI","poligono_Aoi","poligono_image","cobertura","coberturanum","round","coberturaGraphicText","haloColor","haloSize","font","size","family","weight","cobertura_layer","coberturaGraphic","agregar_imagen_planet","x_min","y_min","x_max","y_max","proovedor","imageElement","ImageElement","image","georeference","ExtentAndRotationGeoreference","extent","Extent","xmin","ymin","xmax","ymax","mediaLayer","MediaLayer","source","opacity","blendMode","eliminar_imagen_planet","layerImagen","findLayerById","eliminar_pligono_planet","layerImagenCobertura","agregar_poligono_maxar","graphicsLayerMaxar","goTo","duration","eliminar_pligono_maxar","agregar_imagen_Maxar","eliminar_imagen_maxar","limpiar_mapa","remover_widget_sketch","agregar_widget_sketch","get_coord_aoi","length","post_aoi_file","url_file","jwt","aoi_file","easing","mapaSeleccion","cotizacionIcon","contenedor","expandInfo","expandTooltip","collapseTooltip","expanded","index","ArcgisComponent","accionesGeograficas","contenedor_del_mapa","medidas","nueva_medida","cotizacion","standalone","features","BuscarImagenesService","progresoImagenesSubject","Subject","progresoImagenes$","progresoImagenes_count_Subject","progresoImagenes_count_Subject$","total_imagenes_consultar","imagenes_consultadas","busqueda","aoi","f_inicial","f_final","c_nubosidad","plataformas_a_buscar","numeroAleatorio","random","area_de_interes","formdata","FormData","fechaActual","fechaFormateada","getDate","slice","getMonth","getFullYear","getHours","getMinutes","append","resolucciones","i","re","coor","consulta_imagenes","retornar_imagen","id_imagen","responseType","procesarDataDeImagenes","datos","data_procesada","imagen","id_tarjeta","valor","imagenId","nombreArchivoOriginal","propiedades","bBoxLongitudMin","bBoxLatitudMin","bBoxLongitudMax","bBoxLatitudMax","referenciaEspacial","coordenadas2D","imagenUrl","imagenBlob","imageUrl","URL","createObjectURL","res","reiniciarProgreso","comprimirImagen","calidad","Promise","resolve","reject","img","Image","onload","canvas","createElement","height","getContext","drawImage","toBlob","blob","onerror","src","GenerarCotizacionService","listado_imagenes_a_cotizar_planet","listado_imagenes_a_cotizar_maxar","nombre_cotizacion","id_cotizacion","id_busqueda","id_busquedaPoligonoGeo","agregar_imagen_planet_lista","agregar_imagen_maxar_lista","agregar_nombre_a_cotizacion","agregar_id_cotizacion","agregar_id_de_busqueda","agregar_id_de_busqueda_polignoGeo","crear_cotizacion","añadir_imagenes_a_cotizacion","aleatorio","generarCadenaAleatoria","minLength","cadenaAleatoria","substr","ProgramacionDeImagenesService","cotizacion_programar_Imagen","programar_Imagen","poligono","id_referencia","consultaServiciosProfecionales","BusquedaPoligonosGeoService","busquedaPoligonosGeo","fecha_inicial","fecha_final","ProductosABuscar","productosABuscar","getValue","seleccionado","consultarTipoProducto","consultaProductos","BusquedaDeImagenesComponent_div_2_div_10_ng_template_3_i_6_Template","$event","_r19","ctx_r18","get_file","ctx_r11","programacionSeleccionado","_r26","ctx_r25","busqueda_por_resolucion","ctx_r27","ctx_r28","BusquedaDeImagenesComponent_div_2_div_10_ng_template_5_div_0_Template","BusquedaDeImagenesComponent_div_2_div_10_ng_template_5_div_1_Template","ctx_r12","catalogoSeleccionado","_r36","ctx_r35","modoImagenProgramacion","ctx_r37","ctx_r38","_r40","ctx_r39","ctx_r33","BusquedaDeImagenesComponent_div_2_div_10_ng_template_7_div_0_Template","BusquedaDeImagenesComponent_div_2_div_10_ng_template_7_div_1_Template","BusquedaDeImagenesComponent_div_2_div_10_ng_template_7_i_5_Template","_r42","ctx_r41","ctx_r43","ctx_r13","_r45","ctx_r44","busquedaimagenes","BusquedaDeImagenesComponent_div_2_div_10_ng_template_3_Template","BusquedaDeImagenesComponent_div_2_div_10_ng_template_5_Template","BusquedaDeImagenesComponent_div_2_div_10_ng_template_7_Template","BusquedaDeImagenesComponent_div_2_div_10_button_9_Template","ctx_r8","BusquedaDeImagenesComponent_div_2_div_11_ng_template_3_i_6_Template","_r54","ctx_r53","ctx_r46","BusquedaDeImagenesComponent_div_2_div_11_ng_template_5_i_2_Template","_r60","ctx_r59","ctx_r61","ctx_r47","_c0","item_r67","_r69","$implicit","ctx_r68","infoImagenPrpgramacion","ctx_r70","agregarImageProgramacionaCotizacion","Nombre","BusquedaDeImagenesComponent_div_2_div_11_ng_template_7_div_0_Template","BusquedaDeImagenesComponent_div_2_div_11_ng_template_7_div_2_Template","ctx_r48","barraProgresoItemsProgramacion","catalogoProgramacion","_r72","ctx_r71","verCotizacionImagenProgramcion","BusquedaDeImagenesComponent_div_2_div_11_ng_template_3_Template","BusquedaDeImagenesComponent_div_2_div_11_ng_template_5_Template","BusquedaDeImagenesComponent_div_2_div_11_ng_template_7_Template","BusquedaDeImagenesComponent_div_2_div_11_button_9_Template","ctx_r9","cotizacion_label","BusquedaDeImagenesComponent_div_2_div_12_ng_template_3_Template","BusquedaDeImagenesComponent_div_2_div_12_ng_template_5_Template","BusquedaDeImagenesComponent_div_2_div_12_ng_template_7_Template","BusquedaDeImagenesComponent_div_2_div_12_ng_template_9_Template","_r78","ctx_r77","tipoDeBusqueda","ctx_r79","BusquedaDeImagenesComponent_div_2_div_10_Template","BusquedaDeImagenesComponent_div_2_div_11_Template","BusquedaDeImagenesComponent_div_2_div_12_Template","_c1","ctx_r1","selectedOption","opcionArchivo","opcionProgramacion","opcionOtros","_r83","ctx_r82","guardar_cotizacion","ctx_r80","progresoImagenes_count","_c2","_r85","ctx_r84","nuevaBusqueda","BusquedaDeImagenesComponent_div_3_button_3_Template","BusquedaDeImagenesComponent_div_3_div_4_Template","ctx_r2","barraProgresoImagenes","_r90","ctx_r89","ctx_r91","formateoNombre","ctx_r92","ctx_r93","eliminar_cotizacion","ctx_r88","BusquedaDeImagenesComponent_div_4_div_1_div_1_Template","ctx_r86","cotizacion_input","_r102","imagen_r96","ctx_r100","mostrar_metadatos","ctx_r103","agregarImagenParaCotizar","ctx_r105","agregarImagenAlMapa","ctx_r107","eliminarImagenDelMapa","tipoProducto","fechaAdquisicion","_r112","ctx_r110","ctx_r113","ctx_r115","ctx_r117","instruments","item_type","constellation","cc","cloud_percent","cloudCoverage","datetime","time","acquired","imageGsd","gsd","resolution","off_nadir_avg","ona","view_angle","snowCover","_r121","ctx_r120","agregarPoligonoAlMapa","ctx_r122","borrarPoligonoDelMapa","BusquedaDeImagenesComponent_div_4_div_2_div_3_div_1_Template","BusquedaDeImagenesComponent_div_4_div_2_div_3_ng_template_2_Template","_r99","BusquedaDeImagenesComponent_div_4_div_2_div_3_Template","provedor_r94","_r124","ctx_r123","cargarMasImagenes","imagenes","longitud","_c3","BusquedaDeImagenesComponent_div_4_div_1_Template","BusquedaDeImagenesComponent_div_4_div_2_Template","ctx_r3","ver_selector_cotizacion","grupos_de_imagenes","_r127","ctx_r126","guardarImagenesEnCotizacion","imagen_r128","estado","BusquedaDeImagenesComponent_ng_template_22_div_7_Template","BusquedaDeImagenesComponent_ng_template_22_div_8_Template","BusquedaDeImagenesComponent_ng_template_22_div_9_Template","BusquedaDeImagenesComponent_ng_template_22_div_10_Template","ctx_r139","estadoErrorImagenaProgramar","BusquedaDeImagenesComponent_ng_template_45_div_12_Template","BusquedaDeImagenesComponent_ng_template_45_div_13_Template","BusquedaDeImagenesComponent_ng_template_45_div_14_Template","BusquedaDeImagenesComponent_ng_template_45_div_15_Template","imagen_r135","Descripcion","Plataforma","UnidadMedida","BusquedaDeImagenesComponent","arcgis","programacioDeImagenes","busquedaPoligonosGeoService","cdr","cargaArchivo","pasarela","imagen_carga","seguir_Agregando","formularioVisible","dialogo","id_encaezado_cotizacion","btn_guardar_cotizacion","estado_cotizacion","listaDeImagenesParaCotizar","imagenesEnElMapa","botonDeBusquedaTexto","seleccionimagenesProgramacionCotizar","dialogoProgramacion","nombre_cotizacionProgramacion","nombreCotizacionProgramacion","mensaje_programacion","PoligonosGeoNoEncontrados","dataProveedoresSinProcesar","imagenesCargadas","total_imagenes_por_proveedor","modoImagen","productosGeo","poligonosGeoEncontrados","innerText","consultaTipoDeProductosGeo","instanciasAtributo","CategoriaProducto","opcionEnumeracionIdentificadorAplicado","ConstelacionPlataforma","Categoria","ValorUnitario","CantidadMinima","CantidadMaxima","Id_referencia","Estado","err","obtenerCodigosEsquemas","selector_proveedores","dat","checked","includes","indexOf","splice","modificar_plataformas","leer_check_carga_archivo","replace","id_esquema","esquema_data","id_esquema_cotizacion","obtenerplataformas","id_imagen_cotizacion","detalleCotizacionImagenProgramacion","detallePoligonosGeo","detallePoligonosGeoCotizacion","nuevaBusquedaSinEliminarParametros","generacionTarjetas","showDenyButton","backdrop","then","result","isConfirmed","complete","every","some","num","substring","retry","grupo","cargarImagenes","visualizarPasarela","provedor","cont","proveedor_sin_procesar","cord","indetificador_tarjeta","preview","coordArcgis","latitud","tarjeta","backgroundColor","event","_this","archivoSeleccionado","files","extencion","name","split","pop","lector","FileReader","datosGeoJSON","coordinates","readAsText","contenido","DOMParser","parseFromString","toGeoJSON","_ref","_asyncToGenerator","arrayBuffer","zip","JSZip","zipFile","loadAsync","relativePath","file","Object","entries","toLowerCase","endsWith","async","shapes","require","open","read","done","_x","apply","arguments","readAsArrayBuffer","obtenerCoordenadas","feature","crearCotizacion","tipoCotizacion","disabled","hoy","setHours","fechaInicialDate","calculateDateDiff","Id_CodigoReferencia","sceneId","eliminar_imagen_de_cotizacion","arreglo","indice","findIndex","elemento","seguirAgregando","finalizarCotizacion","alertaBusqueda","background","jsonString","html","fechaIni","fechaFin","currentDate","dateSent","UTC","btn_unica","btn_stereo","btn_triStereo","finalizarCotizacion_programacion","click","ConsultaPoligonosGeo","productos","filter","detectChanges","selectorProductoGeo","datosEncontrados","PoligonosGeograficos","tipoInstanciaEsquemaID","url_imagen_ok","Preview","TipoProducto","id_proveedor","FechaAdquisicion","ver","seleccionarTodoProductosGeo","i6","i7","BusquedaDeImagenesComponent_div_0_Template","BusquedaDeImagenesComponent_div_2_Template","BusquedaDeImagenesComponent_div_3_Template","BusquedaDeImagenesComponent_div_4_Template","BusquedaDeImagenesComponent_ng_template_21_Template","BusquedaDeImagenesComponent_ng_template_22_Template","BusquedaDeImagenesComponent_ng_template_44_Template","BusquedaDeImagenesComponent_ng_template_45_Template","_c4","_c5","NavBarComponent","router","modalService","visible","userNombre","entorno","actualPassword","nuevoPassword","confirmarPassword","salir","cambioDeContrasena","confirmarCambioContrasena","put","claveAnterior","claveNueva","claveNuevaConfirmada","HomeViewComponent","inactividad","authSesionGuard","authService","inject","Router","RegistroService","enviarCorreo","SignUpComponent","solicitudregistro","formEnviado","registro","apellido","correo","telefono","organizacion","repetir_contrasena","formData","orgid","program","company","email","phone","termsAccepted","enviarDatos","enviarSolicitud","DashboardService","getAtributos","atributo","tipoDato","instanciaAtributoCadena","instanciaAtributoEnumeracion","instanciaAtributoFechaHora","instanciaAtributoNumerico","instanciaAtributoEsquema","tipoInstanciaEsquema","props","instanciaAtributoGeoRaster","area","areaCoberturaGeodetic","bbox","idArchivo","instanciaAtributoGeoVectorPoligono2D","instanciaAtributoArchivo","getOptions","getHeaders","getCotizaciones","pagina","idCotizacion","getImagenesCotizacion","getBolsas","getSaldoBolsa","idBolsa","getCompraCotizacion","getEsquemaPorId","getReporteCotizacion","getOtrosProductosCotizacion","getDetalleCotizacionImagenProgramacion","getDetallesCotizacion","detalleCotizacion","deleteInstancia","rowVersion","delete","updateInstancia","crearInstancia","getInstanciaPorID","getEsquemaPorNombre","getImage","fileName","fetch","r","File","getArchivo","downloadCotizacion","nombreCotizacion","dataMapas","coberturaAOI","doc","jsPDF","listaImagenes","totalCreditos","params","valorCreditos","listaArea","imagenesPlanet","s","idData","imagenesMaxar","temporalidad","cloud_cover","toLocaleString","lMargin","rMargin","pdfInMM","pdfMaxWidth","row","addImage","internal","pageSize","setFont","setFontSize","align","newPage","setFuente","addTextoCentrado","autoTable","styles","fillColor","textColor","lineColor","lineWidth","fontSize","headStyles","minCellHeight","halign","bodyStyles","columnStyles","fontStyle","cellWidth","theme","startY","head","coberturaPlanet","coberturaMaxar","coberturaTotal","mapaReferencia","mapaGeneral","mapaPlanet","textoPlanet","addTextoJustificado","imgData","image_map_planet","margin","left","instrument","satellite_id","codigoReferencia","mapaMaxar","textoMaxar","image_map","addFooters","output","addPage","addHeaders","pageCount","getNumberOfPages","setDrawColor","setFillColor","rect","col","setPage","texto","lines","splitTextToSize","maxWidth","lineHeightFactor","agregarServicioProfecionalAcotizacion","idsEsquemas","cantidad","idEsquema","EncabezadoCotizacion","CodigoReferencia","Cantidad","cotizacion_r29","fechaCreacion","_r31","ctx_r30","descargarCotizacion","_r33","ctx_r32","abrirMapas","_r35","ctx_r34","abrirGenerarCompra","_r37","ctx_r36","eliminarCotizacion","_c6","_r47","imagen_r43","ctx_r45","abrirPrecotizacion","_r49","verImagen","DashboardViewComponent_p_tabPanel_97_p_table_7_ng_template_2_p_button_18_Template","ctx_r50","eliminarImagen","toUpperCase","DashboardViewComponent_p_tabPanel_97_p_table_7_ng_template_1_Template","DashboardViewComponent_p_tabPanel_97_p_table_7_ng_template_2_Template","ctx_r40","_c7","DashboardViewComponent_p_tabPanel_97_ng_template_1_Template","DashboardViewComponent_p_tabPanel_97_div_6_Template","DashboardViewComponent_p_tabPanel_97_p_table_7_Template","ctx_r6","totalCreditosImagenes","loadingCargaImagenes","producto_r54","_r56","ctx_r55","abrirEditarServicio","ctx_r57","eliminarServicioAdicional","descripcion","unidad","DashboardViewComponent_p_tabPanel_98_ng_template_1_Template","_r59","ctx_r58","agregarServiciosProfesionales","DashboardViewComponent_p_tabPanel_98_ng_template_13_Template","DashboardViewComponent_p_tabPanel_98_ng_template_14_Template","ctx_r7","totalCreditosServicios","_c8","_c9","programacion_r63","_r65","ctx_r64","abrirEditarProgramacionImagen","ctx_r66","eliminarImagenParametrizacion","ctx_r62","getSeverity","fechaInicio","duracion","areaCobertura","DashboardViewComponent_p_tabPanel_99_ng_template_1_Template","DashboardViewComponent_p_tabPanel_99_ng_template_7_Template","DashboardViewComponent_p_tabPanel_99_ng_template_8_Template","totalCreditosImagenesProgramadas","imagenesProgramacion","_r9","accept","message_r67","header","message","DashboardViewComponent_ng_template_106_ng_template_7_Template","_r74","ctx_r73","selectedNivelProcesamiento","ctx_r75","selectedLicencia","ctx_r76","selectedTipoEntrega","urlImagen","nivelesProcesamiento","licencias","tiposEntrega","_r80","precotizacionDialog","ctx_r81","guardarDatosAdicionales","DashboardViewComponent_ng_template_107_div_0_Template","DashboardViewComponent_ng_template_107_div_1_Template","mapasDialog","generarCotizacionReporte","DashboardViewComponent_ng_template_113_div_0_Template","DashboardViewComponent_ng_template_113_div_1_Template","ctx_r14","loadingCotizacion","ctx_r87","selectedBolsaCreditos","DashboardViewComponent_ng_template_155_div_0_Template","ctx_r16","bolsa_r88","saldoBolsa","_r92","comprasDialog","generarCompra","DashboardViewComponent_ng_template_169_div_0_Template","DashboardViewComponent_ng_template_169_div_1_Template","ctx_r20","loadingCompra","item_r94","_r95","ctx_r101","agregarServicioACotizacion","codigoReferenciaId","DashboardViewComponent_tbody_187_div_18_Template","DashboardViewComponent_tbody_187_div_19_Template","DashboardViewComponent_tbody_187_div_20_Template","DashboardViewComponent_tbody_187_div_21_Template","valorUnitario","unidadDeMedida","cantidadMinima","cantidadMaxima","item_r103","_r111","_r104","DashboardViewComponent_tbody_191_div_18_Template","DashboardViewComponent_tbody_191_div_19_Template","DashboardViewComponent_tbody_191_div_20_Template","DashboardViewComponent_tbody_191_div_21_Template","item_r112","_r120","_r113","ctx_r119","DashboardViewComponent_tbody_195_div_18_Template","DashboardViewComponent_tbody_195_div_19_Template","DashboardViewComponent_tbody_195_div_20_Template","DashboardViewComponent_tbody_195_div_21_Template","ctx_r24","imagenProveedor","ctx_r26","tipoPoligonoGeo","imagenIdPoligonoGeo","urlPoligonoGeo","DashboardViewComponent","dashboardService","confirmationService","messageService","agsService","busquedaService","viewGeneral","viewPlanet","viewMaxar","loadingCargaCotizacion","cotizaciones","totalCreditosPoligonosGeograficos","usuarioCotizacionId","rowVersionCotizacion","arrayImagenes","arrayProductos","bolsas","arrayPoligonosGeograficos","serviciosDialog","imagenDialog","imagenProgramadaDialog","poligonoGeograficoDialog","observacionesCompra","tieneCompra","nombreUsuario","paginaCotizacion","numRegistrosPagCotizacion","totalPaginasCotizacion","totalRegistrosCotizacion","tienePaginaSiguiente","tienePaginaAnterior","capturaMapa","tieneReporteCotizacion","tieneReporteCotizacionTemp","idArchivoCotizacion","poPup_serviciosProfecionales","serviciosProfecionales_Todos","serviciosPofecionales_TYM","serviciosPofecionales_PIM","serviciosPofecionales_CGM","cargaGif","horasServicios","creditosServicios","nuevasHorasServicios","maximasUnidades","disabledFechaIni","disabledFechaFin","visibleTabArchivo","visibleTabProgramacion","visibleTabPoligonos","CALENDAR_CONFIG_ES","closeText","prevText","nextText","currentText","monthNames","monthNamesShort","dayNames","dayNamesShort","dayNamesMin","weekHeader","dateFormat","firstDay","isRTL","showMonthAfterYear","yearSuffix","ok_mensaje","errorMensaje","request","trustedServers","es","ImagenesProveedores","CapellaSite","CapellaSpot","CapellaStrip","Maxar","Onyx","Planet","PlanetScope","PlanetSkySat","SentinelHub","Sentinel","UP42MA","UP42A","UP42B","UP42M","OMEO","PoligonosMapaProveedores","idEsquemaCompra","idOtrosProductos","idEncabezado","idEsquemaEncabezadoCotizacion","idImagenProgramacion","esquemaDetCotImagenProgramacion","esquemaCotizacion","esquemaCompra","esquemaOtrosProductos","esquemaDetCotImgArchivo","listaProcesamiento","listaLicencia","listaTipoEntrega","selectedCotizacion","totalRegistros","totalPaginas","usuarioPropietarioID","severity","summary","detail","life","getMapView","getBaseMapGallery","expandIconClass","watch","heightBreakpoint","widthBreakpoint","collapse","getPoligonoMapa","initializeMap","is2D","AreaDeInteres","arrPolygon","containerMapaGeneral","nativeElement","mapGeneral","mapViewGeneral","polygonGraphic","graphicsLayerAOI","polygonExtent","zoomedExtent","itemData","elemBusquedaProveedor","cord_formato_arcgis","cooordenadas","graphicsLayerImagenes","polygonImagen","polGeo","gLayer","coords","captura","self","takeScreenshot","format","quality","screenshot","dataUrl","actualizaEncabezado","PlataformaBusqueda","IdentificadorImagen","PropiedadesImagen","procesamiento","Procesamiento","licencia","Licencia","tipoEntrega","TipoEntrega","valorProcesamiento","valorLicencia","valorTipoEntrega","CreditosItem","codReferencia","tipoInstanciaEsquemaNombre","sizeImage","Temporalidad","nivelProcesamiento","AreaCoberturaKm2","codigoDeReferencia","data_adiccional","obtenerDatosDeServicios","atributosProgramacion","fecIni","FechaInicialAdquisicion","fecFin","FechaFinalAdquisicion","duracionDias","att","PoligonoGeografico","dataInstancia","itemCotizacion","TotalCreditos","getLabelProveedor","getLabelCreditos","opProcesamiento","opLicencia","opTipoEntrega","BusquedaImagenArchivo","cambiarFechasProgramacion","idBusqueda","validaGeneracion","validaGenerar","genera","imgSinCreditos","idImgSinCreditos","provImgSinCreditos","CoberturaAOI","permiteGenerar","textoConfirmacion","confirm","imgs","prodGeo","numeroTransaccionesImagenes","numeroTransaccionesProductos","numeroTransaccionImagen","numeroTransaccionProducto","instanciaArchivoCotizacion","generarCotizacion","objTotalCreditos","idAtributo","rowVersionAtributo","tipoDatoAtributo","formDataCot","idEsquemaReporte","esquemaReporte","getRandomKey","attEncabezadoCotizacion","attMapaGeneral","Cotizacion","idInstancia","opcionEnumeracionId","idInstanciaProcesamiento","idInstanciaLicencia","idInstanciaTipoEntrega","downloadFile","link","webkitURL","a","setAttribute","appendChild","removeChild","onChangeBolsa","bolsaSeleccionada","Bolsa","Saldo","ValorBloqueado","valorBloqueado","totalCreditosCotizacion","organizacionSeleccionada","Organizacion","attBolsa","attOrganizacion","attEstado","opPreCompra","attTotalCreditos","attObservaciones","attLicenciatario","dataCorreo","usuarioPropietario","total_creditos","msg","tipoDatoAtt","onClickCotizacion","option","listarServiciosProfesionales","categoria","arrayServicios","arraySP","esquemaID","obteneridsdeEsquemasServiciosProfecionales","flat","codigo_Referencia","cerrarPoup","_EcabezadoCotizacion","_CodigoReferencia","_Cantidad","atributoEsquema","atributoNumerico","ids","idCodigoReferencia","SelectCantidad","dataItem","producto","prods","elems","actualizarCreditosCotizacion","editarServiciosAdicionales","objCantidad","verPoligonoGeografico","pol","poligonoGeografico","addOneDayToDate","date","newDate","setDate","imagenProgramacion","minDateIni","minDateFin","Intl","DateTimeFormat","year","month","day","editarProgramacionImagen","objFechaInicial","objFechaFinal","toDateString","instanciasAtributos","idInstanciaFechaInicialAdquisicion","idInstanciaFechaFinalAdquisicion","getInstanciaAtributo","counter","charAt","characters","onPageChangeCotizacion","page","rows","cargarPaginaSiguiente","cargarPaginaAnterior","fecha","i8","i9","i10","viewQuery","MessageService","ConfirmationService","DashboardViewComponent_ng_template_59_Template","DashboardViewComponent_div_91_Template","DashboardViewComponent_div_92_Template","DashboardViewComponent_div_93_Template","DashboardViewComponent_div_94_Template","DashboardViewComponent_div_95_Template","DashboardViewComponent_p_tabPanel_97_Template","DashboardViewComponent_p_tabPanel_98_Template","DashboardViewComponent_p_tabPanel_99_Template","DashboardViewComponent_ng_template_104_Template","DashboardViewComponent_ng_template_106_Template","DashboardViewComponent_ng_template_107_Template","DashboardViewComponent_ng_template_113_Template","DashboardViewComponent_ng_template_115_Template","DashboardViewComponent_ng_template_155_Template","DashboardViewComponent_ng_template_156_Template","DashboardViewComponent_p_158_Template","DashboardViewComponent_p_159_Template","DashboardViewComponent_ng_template_169_Template","DashboardViewComponent_tbody_187_Template","DashboardViewComponent_tbody_191_Template","DashboardViewComponent_tbody_195_Template","DashboardViewComponent_div_218_Template","DashboardViewComponent_div_219_Template","DashboardViewComponent_div_223_Template","DashboardViewComponent_div_224_Template","DashboardViewComponent_div_225_Template","_c10","_c11","_c12","_c13","_c14","_c15","_c16","_c17","_c18","_c19","_c20","AuthViewComponent","ChangePasswordService","apiUrl","authenticate","credentials","changePassword","set","routes","path","redirectTo","pathMatch","component","children","canActivate","ChangePasswordComponent","changePasswordService","currentPassword","newPassword","confirmPassword","authenticateAndGetToken","jwtToken","switchMap","navigate","catchError","AppRoutingModule","oAB","cJS","RouterModule","forRoot","AppComponent","AuthRoutingModule","forChild","AuthModule","CommonModule","FormsModule","BrowserModule","ReactiveFormsModule","HttpClientModule","HomeRoutingModule","HomeModule","CardModule","ScrollPanelModule","ImageModule","DialogModule","TableModule","ProgressSpinnerModule","SelectButtonModule","AccordionModule","StepperModule","ButtonModule","FileUploadModule","CalendarModule","RadioButtonModule","RefreshTokenInterceptor","intercept","req","handle","isTokenExpired","r_token","refrescarToken","clonedReq","clone","setHeaders","throwError","Error","now","skipInterceptor","AppModule","bootstrap","provide","HTTP_INTERCEPTORS","useClass","multi","imports","ToolbarModule","TagModule","ConfirmDialogModule","DropdownModule","ToastModule","FieldsetModule","OverlayPanelModule","ChipModule","SidebarModule","BrowserAnimationsModule","__NgCli_bootstrap_1","bootstrapModule","catch","webpackEmptyAsyncContext","code","keys","module","exports","webpackContext","webpackContextResolve","__webpack_require__","o"],"sourceRoot":"webpack:///","sources":["./src/environments/environment.prod.ts","./src/app/auth/services/auth.service.ts","./src/app/auth/services/esquemas.service.ts","./src/app/home/services/control-error.service.ts","./src/app/auth/components/sign-in/sign-in.component.html","./src/app/auth/components/sign-in/sign-in.component.ts","./src/app/auth/services/inactividad.service.ts","./src/app/home/services/acciones-geograficas.service.ts","./src/app/home/components/arcgis/arcgis.component.ts","./src/app/home/components/arcgis/arcgis.component.html","./src/app/home/services/buscar-imagenes.service.ts","./src/app/home/services/generar-cotizacion.service.ts","./src/app/home/services/programacion-de-imagenes.service.ts","./src/app/home/services/busqueda-poligonos-geo.service.ts","./src/app/home/components/busqueda-de-imagenes/busqueda-de-imagenes.component.html","./src/app/home/components/busqueda-de-imagenes/busqueda-de-imagenes.component.ts","./src/app/home/components/nav-bar/nav-bar.component.ts","./src/app/home/components/nav-bar/nav-bar.component.html","./src/app/home/components/home-view/home-view.component.ts","./src/app/home/components/home-view/home-view.component.html","./src/app/guards/auth-sesion.guard.ts","./src/app/auth/services/registro.service.ts","./src/app/auth/components/sign-up/sign-up.component.ts","./src/app/auth/components/sign-up/sign-up.component.html","./src/app/dashboard/services/dashboard.service.ts","./src/app/dashboard/components/dashboard-view/dashboard-view.component.html","./src/app/dashboard/components/dashboard-view/dashboard-view.component.ts","./src/app/auth/components/auth-view/auth-view.component.ts","./src/app/auth/components/auth-view/auth-view.component.html","./src/app/auth/services/change-password.service.ts","./src/app/app-routing.module.ts","./src/app/auth/components/change-password/change-password.component.ts","./src/app/auth/components/change-password/change-password.component.html","./src/app/app.component.ts","./src/app/app.component.html","./src/app/auth/auth-routing.module.ts","./src/app/auth/auth.module.ts","./src/app/home/home-routing.module.ts","./src/app/home/home.module.ts","./src/app/interceptors/refresh-token.interceptor.ts","./src/app/app.module.ts","./src/main.ts","./node_modules/@stencil/core/internal/client/ lazy ^\\.\\/.*\\.entry\\.js.*$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["// ng serve --configuration=prod\r\n// ng build --configuration=prod --base-href \"/portal/\"\r\n\r\nexport const environment = {\r\n production: true,\r\n Entorno: '',\r\n URL_API: \"https://caleidoscopio.mapas.co:6443/api/v2\",\r\n URL_API_CORREO: \"https://ftp-download.procalculo.com:3002\",\r\n ArcGis_Key: 'AAPK8203681292cc4da2b8ce91132e898fbeAANg995ifQaq4dVpvN3-7cCevOmPCNLAr0A54Wqnk9Ab0Zu7Wrc3GObYaiZMVfLC',\r\n PLANET: 'Planet',\r\n MAXAR: 'Maxar',\r\n};\r\n\r\nexport const codigoInternoEsquemas = {\r\n //Busqueda de imagenes:\r\n busqueda_imagenes: 'BusquedaImagenArchivo',\r\n area_de_interes: 'AreaDeInteres',\r\n fecha_inicial:'FechaInicialAdquisicion',\r\n fecha_final:'FechaFinalAdquisicion',\r\n cobertura_nubosidad_inicial:'CoberturaNubosidadInicial',\r\n cobertura_nubosidad_final:'CoberturaNubosidadMaxima',\r\n plataformas_de_busqueda: 'PlataformaBusqueda',\r\n\r\n //Cotizaciones:\r\n cotizacion:'EncabezadoCotizacion',\r\n total_creditos:\"TotalCreditos\",\r\n\r\n //Imagenes_cotizacion\r\n detalle_cotizacion:\"DetalleCotizacionImagenArchivo\",\r\n encabezado_cotizacion:\"EncabezadoCotizacion\",\r\n busqueda_imagen_archivo:\"BusquedaImagenArchivo\",\r\n identificador_imagen:\"IdentificadorImagen\",\r\n plataforma_busqueda:\"PlataformaBusqueda\",\r\n}\r\n\r\nexport const constantes = {\r\n //Opciones Estados\r\n OPCION_DECLINADA: 'Declinada',\r\n //Tipos de Datos\r\n OPCION_TIPO_ENUMERACION: 'Enumeracion',\r\n //Nombres Atributos\r\n NOMBRE_ATRIBUTO_ESTADO: 'Estado'\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Observable, of } from 'rxjs';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport {Router } from '@angular/router';\r\nimport { environment } from 'src/environments/environment';\r\nimport { User } from '../models/user';\r\nimport * as moment from 'moment';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n dataUser:object = {}\r\n\r\n constructor(private http: HttpClient, private cookies: CookieService, private route:Router) { }\r\n\r\n logIn(user:User):Observable{\r\n const url = `${environment.URL_API}/Token/Autenticar`\r\n return this.http.post(url,user)\r\n }\r\n\r\n\r\n setSesion(jwt_token:string,refreshToken:string,expiration_time:any,id_user:number, user:any){\r\n\r\n if(typeof(id_user)=='number'){\r\n\r\n const Nuevafecha = new Date(expiration_time * 1000); //segundos a milisegundos \r\n const expiresAt = moment().add(expiration_time.expiresIn,'second')\r\n \r\n let idUser = id_user.toString()\r\n \r\n //! Guardando datos en el local storage \r\n \r\n localStorage.setItem('jwt_token',jwt_token)\r\n localStorage.setItem('refreshToken',refreshToken)\r\n localStorage.setItem('id_user',idUser)\r\n localStorage.setItem('exp_jwt',JSON.stringify(expiresAt.valueOf()))\r\n localStorage.setItem('nombres',user.nombres)\r\n localStorage.setItem('apellidos',user.apellidos)\r\n localStorage.setItem('correo',user.correoElectronico)\r\n\r\n sessionStorage.setItem('jwt_token',jwt_token);\r\n\r\n \r\n\r\n }else{\r\n alert('error in auth service')\r\n return\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n deleteSesion(){\r\n localStorage.clear()\r\n sessionStorage.clear()\r\n this.route.navigateByUrl('/')\r\n \r\n }\r\n\r\n usuarioAutenticado():Observable{\r\n\r\n const jwtToken = localStorage.getItem('jwt_token');\r\n\r\n if(typeof(jwtToken) == 'string'){\r\n return of(true)\r\n }else{\r\n localStorage.clear()\r\n this.route.navigateByUrl('/auth/login')\r\n return of(false)\r\n }\r\n\r\n }\r\n\r\n refreshToken(jwt_token:string,refreshToken:string){\r\n \r\n return this.http.post(`${environment.URL_API}/Token/RefrescarJWTToken`,\r\n {\r\n \"accessToken\": jwt_token,\r\n \"refreshToken\": refreshToken\r\n }\r\n )\r\n\r\n }\r\n\r\n redireccion(url:string){\r\n this.route.navigateByUrl(url)\r\n }\r\n\r\n\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { map } from 'rxjs';\r\nimport { Esquemas } from 'src/app/models/esquema-permisos';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EsquemasService {\r\n\r\n constructor(private http:HttpClient) { }\r\n\r\n\r\n generar_Codigos_Esquemas(){\r\n\r\n let token = localStorage.getItem('jwt_token')\r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n const options = {\r\n headers: headers\r\n };\r\n\r\n return this.http.get(`${environment.URL_API}/Instancia/ObtenerConjuntoEsquemasConPermisos/Ninguna`,options).pipe(\r\n map(response => response.dato)\r\n )\r\n\r\n }\r\n\r\n set_Codigos_Esquemas(esquemas:any){\r\n\r\n let esquemas_ = JSON.stringify(esquemas)\r\n localStorage.setItem('esquemas',esquemas_)\r\n\r\n }\r\n\r\n\r\n obtener_Id_Esquema_Por_Nombre(codigoInterno: string): number | undefined {\r\n\r\n const esquemas:any = localStorage.getItem('esquemas')\r\n const codigosEsquemas = JSON.parse(esquemas)\r\n\r\n const objetoEncontrado: Esquemas | undefined = codigosEsquemas.find((objeto: Esquemas) => objeto.codigoInterno === codigoInterno);\r\n return objetoEncontrado?.id;\r\n }\r\n\r\n //ID de codigos de busqueda de imagenes \r\n\r\n generar_codigos_por_Esquema(id:string){\r\n\r\n let token = localStorage.getItem('jwt_token')\r\n \r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n const options = {\r\n headers: headers\r\n };\r\n\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarEsquemaPorID/${id}/IncluirAtributos`,options).pipe(\r\n map(response => response.dato.atributos)\r\n )\r\n\r\n }\r\n\r\n //obtener codigos de las plataformas de busqueda desde k2o\r\n obtenerPlataformasDeBusqueda(){\r\n\r\n let token = localStorage.getItem('jwt_token')\r\n \r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n const options = {\r\n headers: headers\r\n };\r\n\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarEsquemaPorCodigoInterno/PRYMAP/BusquedaImagenArchivo/IncluirAtributos`,options).pipe(\r\n map(response => {\r\n\r\n let data = response.dato.atributos\r\n const objetoBuscado = data.find((obj:any) => obj.codigoInterno === 'PlataformaBusqueda');\r\n let plataformas = objetoBuscado.atributoEnumeracion.opcionesEnumeracion\r\n let plataformas_de_busqueda:any = []\r\n\r\n plataformas.forEach((element:any) => {\r\n\r\n // console.log(element.identificador);\r\n\r\n if(element.identificador=='Maxar'){\r\n // console.log('M ignorado');\r\n }else{\r\n\r\n plataformas_de_busqueda.push(\r\n \r\n {\r\n id:element.id,\r\n nombre:element.identificador,\r\n codigoInterno:`Imagenes${element.identificador}`,\r\n activo: false\r\n }\r\n \r\n )\r\n }\r\n\r\n });\r\n\r\n localStorage.setItem('plataformas_de_busqueda',JSON.stringify(plataformas_de_busqueda))\r\n\r\n })\r\n )\r\n\r\n }\r\n\r\n obtenerResolucionesDeBusqueda(){\r\n\r\n let token = localStorage.getItem('jwt_token')\r\n \r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n const options = {\r\n headers: headers\r\n };\r\n\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarEsquemaPorCodigoInterno/PRYMAP/BusquedaImagenArchivo/IncluirAtributos`,options).pipe(\r\n map(response => {\r\n\r\n let data = response.dato.atributos\r\n const objetoBuscado = data.find((obj:any) => obj.codigoInterno === 'Resolucion');\r\n let resoluccion = objetoBuscado.atributoEnumeracion.opcionesEnumeracion\r\n let resoluciones_de_busqueda:any = []\r\n\r\n resoluccion.forEach((element:any) => {\r\n\r\n // console.log(element.identificador);\r\n\r\n\r\n resoluciones_de_busqueda.push(\r\n \r\n {\r\n id:element.id,\r\n nombre:element.identificador\r\n }\r\n \r\n )\r\n \r\n\r\n });\r\n\r\n localStorage.setItem('resoluciones_de_busqueda',JSON.stringify(resoluciones_de_busqueda))\r\n\r\n })\r\n )\r\n\r\n }\r\n\r\n obtener_pataformas(){\r\n let plataformas = localStorage.getItem('plataformas_de_busqueda') \r\n let platafor = JSON.parse(plataformas!)\r\n return platafor\r\n }\r\n\r\n obtener_resoluccion(){\r\n let plataformas = localStorage.getItem('resoluciones_de_busqueda') \r\n let platafor = JSON.parse(plataformas!)\r\n return platafor\r\n }\r\n\r\n //obtener codigos de las plataformas de busqueda desde k2o\r\n obtenerPlataformasDeBusquedaCotizacion(){\r\n\r\n let token = localStorage.getItem('jwt_token')\r\n \r\n \r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n \r\n const options = {\r\n headers: headers\r\n };\r\n\r\n \r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarEsquemaPorCodigoInterno/PRYMAP/DetalleCotizacionImagenArchivo/IncluirAtributos`,options).pipe(\r\n map(response => {\r\n \r\n let data = response.dato.atributos\r\n const objetoBuscado = data.find((obj:any) => obj.codigoInterno === 'PlataformaBusqueda');\r\n let plataformas = objetoBuscado.atributoEnumeracion.opcionesEnumeracion\r\n let plataformas_de_busqueda_cotizacion:any = []\r\n\r\n \r\n plataformas.forEach((element:any) => {\r\n plataformas_de_busqueda_cotizacion.push(\r\n \r\n {\r\n id:element.id,\r\n nombre:element.identificador,\r\n }\r\n \r\n )\r\n });\r\n \r\n localStorage.setItem('plataformas_de_busqueda_cotizacion',JSON.stringify(plataformas_de_busqueda_cotizacion))\r\n\r\n })\r\n )\r\n \r\n }\r\n\r\n obtenerPoligonoGeo(){\r\n\r\n let token = localStorage.getItem('jwt_token')\r\n \r\n \r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n \r\n const options = {\r\n headers: headers\r\n };\r\n\r\n \r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarEsquemaPorCodigoInterno/PRYMAP/PoligonoGeografico/IncluirAtributos`,options).pipe(\r\n map(response => {\r\n \r\n let data = response.dato.atributos\r\n const objetoBuscado = data.find((obj:any) => obj.codigoInterno === 'PoligonoGeografico');\r\n let plataformas = objetoBuscado.atributoEnumeracion.opcionesEnumeracion\r\n let plataformas_de_busqueda_cotizacion:any = []\r\n\r\n \r\n plataformas.forEach((element:any) => {\r\n plataformas_de_busqueda_cotizacion.push(\r\n \r\n {\r\n id:element.id,\r\n nombre:element.identificador,\r\n }\r\n \r\n )\r\n });\r\n \r\n localStorage.setItem('PoligonoGeografico',JSON.stringify(plataformas_de_busqueda_cotizacion))\r\n\r\n })\r\n )\r\n \r\n }\r\n\r\n\r\n\r\n obtener_pataformas_cotizacion(proveedor:string){\r\n\r\n let plataformas = localStorage.getItem('plataformas_de_busqueda_cotizacion') \r\n let platafor = JSON.parse(plataformas!)\r\n\r\n const objetoBuscado = platafor.find((obj:any) => obj.nombre === proveedor);\r\n\r\n // console.log(platafor);\r\n\r\n return objetoBuscado.id\r\n }\r\n\r\n //obtener ids de esquemas de busqueda de imagenes\r\n \r\n obtener_Id_esquema_busqueda_de_imagenes(codigoInterno: string): number | undefined {\r\n\r\n const esquemas:any = localStorage.getItem('esquema_busqueda_de_imagenes')\r\n const codigosEsquemas = JSON.parse(esquemas)\r\n const objetoEncontrado: Esquemas | undefined = codigosEsquemas.find((objeto: Esquemas) => objeto.codigoInterno === codigoInterno);\r\n return objetoEncontrado?.id;\r\n }\r\n\r\n //obtener ids de esquemas de Cotizaciones\r\n \r\n obtener_Id_esquema_Cotizacion(codigoInterno: string): number | undefined {\r\n\r\n const esquemas:any = localStorage.getItem('esquema_cotizacion')\r\n const codigosEsquemas = JSON.parse(esquemas)\r\n\r\n const objetoEncontrado: Esquemas | undefined = codigosEsquemas.find((objeto: Esquemas) => objeto.codigoInterno === codigoInterno);\r\n return objetoEncontrado?.id;\r\n }\r\n\r\n\r\n obtener_Id_esquema_Cotizacion_imagen_archivo(codigoInterno: string): number | undefined {\r\n\r\n const esquemas:any = localStorage.getItem('esquema_cotizacion_imagen_archivo')\r\n const codigosEsquemas = JSON.parse(esquemas)\r\n \r\n const objetoEncontrado: Esquemas | undefined = codigosEsquemas.find((objeto: Esquemas) => objeto.codigoInterno === codigoInterno);\r\n return objetoEncontrado?.id;\r\n }\r\n\r\n\r\n obtener_Id_proveedores_cotizacion(codigoInterno: string): number | undefined {\r\n\r\n const esquemas:any = localStorage.getItem('esquema_proveedores_cotizacion')\r\n const codigosEsquemas = JSON.parse(esquemas)\r\n \r\n const objetoEncontrado: Esquemas | undefined = codigosEsquemas.find((objeto: Esquemas) => objeto.codigoInterno === codigoInterno);\r\n return objetoEncontrado?.id;\r\n }\r\n\r\n obtener_Ids_ImagenProgramacion(codigoInterno: string): number | undefined {\r\n\r\n const esquemas:any = localStorage.getItem('detalleCotizacionImagenProgramacion')\r\n const codigosEsquemas = JSON.parse(esquemas)\r\n \r\n const objetoEncontrado: Esquemas | undefined = codigosEsquemas.find((objeto: Esquemas) => objeto.codigoInterno === codigoInterno);\r\n return objetoEncontrado?.id;\r\n }\r\n\r\n obtener_Ids_PoligonoGeografico(codigoInterno: string): number | undefined {\r\n\r\n const esquemas:any = localStorage.getItem('PoligonoGeografico')\r\n const codigosEsquemas = JSON.parse(esquemas)\r\n \r\n const objetoEncontrado: Esquemas | undefined = codigosEsquemas.find((objeto: Esquemas) => objeto.codigoInterno === codigoInterno);\r\n return objetoEncontrado?.id;\r\n }\r\n\r\n obtener_Ids_PoligonoGeograficoCotizacion(codigoInterno: string): number | undefined {\r\n\r\n const esquemas:any = localStorage.getItem('DetalleCotizacionPoligonoGeo')\r\n const codigosEsquemas = JSON.parse(esquemas)\r\n \r\n const objetoEncontrado: Esquemas | undefined = codigosEsquemas.find((objeto: Esquemas) => objeto.codigoInterno === codigoInterno);\r\n return objetoEncontrado?.id;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\nimport Swal from 'sweetalert2'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ControlErrorService {\n\n mensajeDeError(data:any){\n\n console.log(data);\n\n let estado:boolean = data.exitoso\n let mensajeOriginal\n\n if(!estado){\n\n const regex = />([^>]+)$/;\n\n if(data.mensajes == undefined){\n console.log(data);\n return\n }else{\n mensajeOriginal = data.mensajes[0]\n }\n\n let mensajeCorregido = ''\n \n if (/<.*>/.test(mensajeOriginal)) {\n const resultado = mensajeOriginal.match(regex)?.[1].trim();\n mensajeCorregido = resultado\n } else {\n mensajeCorregido = mensajeOriginal\n }\n \n Swal.fire({\n title: mensajeCorregido,\n icon: 'error',\n timer: 5000,\n toast: true,\n showConfirmButton: false,\n didOpen: () => {\n const swalContainer = document.querySelector('.swal2-container') as HTMLElement;\n if (swalContainer) {\n swalContainer.style.zIndex = '9999'; \n }\n },\n target: document.body, \n })\n\n }\n }\n\n\n}\n\n","
\r\n \"Loading...\"\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \"\"\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n \r\n

Contraseña:

\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n

¿No tiene cuenta? solicitala

\r\n
\r\n \r\n
\r\n \r\n\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n","import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport Swal from 'sweetalert2'\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { User } from '../../models/user';\r\nimport { jwtDecode } from \"jwt-decode\";\r\nimport { Esquemas } from 'src/app/models/esquema-permisos';\r\nimport { map } from 'rxjs/operators';\r\nimport { EsquemasService } from '../../services/esquemas.service';\r\nimport { ControlErrorService } from 'src/app/home/services/control-error.service';\r\n\r\n@Component({\r\n selector: 'app-sign-in',\r\n templateUrl: './sign-in.component.html',\r\n styleUrls: ['./sign-in.component.css']\r\n})\r\nexport class SignInComponent {\r\n\r\n loading = false\r\n\r\n\r\n data:[] = []\r\n\r\n ngOnInit(): void {\r\n localStorage.clear()\r\n }\r\n\r\n constructor(\r\n private fb: FormBuilder, private auth:AuthService, private esquemasServices:EsquemasService, private route:Router, private controlError:ControlErrorService){}\r\n\r\n loginForm = this.fb.group({\r\n usuario:['',[Validators.required]],\r\n clave:['',[Validators.required]]\r\n })\r\n\r\n\r\n login():void{\r\n this.loading = true\r\n\r\n if(this.loginForm.valid){\r\n\r\n const user:User = {\r\n cuenta:this.loginForm.value.usuario ?? '',\r\n clave:this.loginForm.value.clave ?? ''\r\n }\r\n\r\n this.auth.logIn(user).subscribe({\r\n next:(data:any)=>{\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n if(data.exitoso == false){\r\n this.loading = false\r\n return\r\n }\r\n\r\n let id_user:number = data.dato.usuario.id\r\n \r\n if(typeof(id_user)=='number'){\r\n\r\n let jwt_token = data.dato.accessToken\r\n let decode_jwt = jwtDecode(jwt_token)\r\n let refreshToken = data.dato.refreshToken\r\n let exp = decode_jwt.exp\r\n this.auth.setSesion(jwt_token,refreshToken,exp,id_user, data.dato.usuario)\r\n\r\n\r\n this.esquemasServices.generar_Codigos_Esquemas().pipe(\r\n map((data:Esquemas[])=>{\r\n return data.map(item=>({\r\n id:item.id,\r\n codigoInterno:item.codigoInterno\r\n }))\r\n })\r\n ).subscribe({\r\n next: (esquemas: Esquemas[]) => {\r\n this.esquemasServices.set_Codigos_Esquemas(esquemas)\r\n // console.log('codigos, esquemas guardados')\r\n\r\n ///obtener plataformas\r\n this.esquemasServices.obtenerPlataformasDeBusqueda().subscribe({ \r\n error:(response)=>{\r\n console.log(response)\r\n }\r\n })\r\n\r\n \r\n //obtener plataformas cotizacion\r\n this.esquemasServices.obtenerPlataformasDeBusquedaCotizacion().subscribe({ \r\n error:(response)=>{\r\n console.log(response)\r\n }\r\n })\r\n\r\n //obtener resoluciones de busqueda\r\n this.esquemasServices.obtenerResolucionesDeBusqueda().subscribe({ \r\n error:(response)=>{\r\n console.log(response)\r\n }\r\n })\r\n\r\n },\r\n error: (response) => {\r\n console.log(response);\r\n }\r\n })\r\n\r\n this.route.navigateByUrl('/home')\r\n this.loading = false\r\n\r\n }else{\r\n this.alerta('Verifique sus datos ','error')\r\n this.loading = false\r\n return\r\n }\r\n\r\n\r\n\r\n },\r\n error:(response)=>{\r\n console.log(response)\r\n this.alerta('Verifique sus datos ','error')\r\n this.loading = false\r\n }\r\n })\r\n\r\n }else{\r\n this.alerta('Complete todos los campos','error')\r\n this.loading = false\r\n }\r\n\r\n }\r\n\r\n alerta(text:string,icono:any){\r\n Swal.fire({\r\n title: text,\r\n icon:icono,\r\n timer: 2000,\r\n toast: true,\r\n showConfirmButton: false,\r\n })\r\n \r\n }\r\n\r\n\r\n // TODO: Ver contraseña en el formulario\r\n\r\n data_incompleta_mensaje:boolean = false\r\n inputType: string = 'password';\r\n \r\n toggleInputType(isHovered: boolean){\r\n if (isHovered) {\r\n this.inputType = 'text';\r\n } else {\r\n this.inputType = 'password';\r\n }\r\n }\r\n\r\n redireccion(ruta:string){\r\n this.auth.redireccion(ruta)\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AuthService } from './auth.service';\r\nimport Swal from 'sweetalert2'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class InactividadService {\r\n\r\n constructor( private auth:AuthService) {}\r\n\r\n tiempo_de_inactividad:number = 600000 //10 min\r\n // tiempo_de_inactividad:number = 5000 //5 sec\r\n private sesionCerrada: boolean = false;\r\n \r\n\r\n\r\n timerId:any \r\n \r\n init(){\r\n\r\n this.sesionCerrada = false\r\n\r\n if(!this.sesionCerrada){\r\n\r\n this.timerId = setTimeout(() => {\r\n Swal.fire({\r\n text: 'Su sesión ha cerrado luego de 10 minutos de inactividad. Por favor, inicie sesión nuevamente.',\r\n icon: 'warning',\r\n showCancelButton: false,\r\n confirmButtonText: 'Aceptar',\r\n customClass: {\r\n confirmButton: 'custom-confirm-class' // Añade una clase CSS personalizada al botón de confirmación\r\n },\r\n confirmButtonColor: '#6ac335'\r\n });\r\n this.auth.deleteSesion()\r\n this.cerrarSesion();\r\n }, this.tiempo_de_inactividad);\r\n \r\n this.escuchar_eventos()\r\n }\r\n }\r\n\r\n escuchar_eventos(){\r\n\r\n window.addEventListener('mousemove', ()=> this.comenzar_conteo_inactividad());\r\n window.addEventListener('keydown', ()=> this.comenzar_conteo_inactividad());\r\n window.addEventListener('click', ()=> this.comenzar_conteo_inactividad());\r\n window.addEventListener('scroll',()=> this.comenzar_conteo_inactividad());\r\n \r\n }\r\n \r\n comenzar_conteo_inactividad(){\r\n\r\n\r\n // console.log('.');\r\n\r\n if(!this.sesionCerrada){\r\n\r\n\r\n clearTimeout(this.timerId);\r\n\r\n this.timerId = setTimeout(() => {\r\n Swal.fire({\r\n text: 'Su sesión ha sido cerrada luego de 10 minutos de inactividad. Por favor, inicie sesión nuevamente.',\r\n icon: 'warning',\r\n showCancelButton: false,\r\n confirmButtonText: 'Aceptar',\r\n });\r\n this.cerrarSesion();\r\n this.auth.deleteSesion()\r\n }, this.tiempo_de_inactividad);\r\n }\r\n }\r\n\r\n\r\n cerrarSesion(): void {\r\n this.sesionCerrada = true;\r\n }\r\n \r\n}\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport Map from \"@arcgis/core/Map.js\";\r\nimport MapView from \"@arcgis/core/views/MapView.js\";\r\nimport BasemapGallery from \"@arcgis/core/widgets/BasemapGallery.js\";\r\nimport Expand from \"@arcgis/core/widgets/Expand.js\";\r\nimport Sketch from \"@arcgis/core/widgets/Sketch.js\";\r\nimport GraphicsLayer from \"@arcgis/core/layers/GraphicsLayer.js\";\r\nimport * as webMercatorUtils from \"@arcgis/core/geometry/support/webMercatorUtils.js\";\r\nimport Polygon from \"@arcgis/core/geometry/Polygon.js\";\r\nimport Graphic from \"@arcgis/core/Graphic.js\";\r\nimport * as geometryEngine from \"@arcgis/core/geometry/geometryEngine.js\";\r\nimport ScaleBar from \"@arcgis/core/widgets/ScaleBar.js\";\r\nimport SimpleFillSymbol from \"@arcgis/core/symbols/SimpleFillSymbol.js\";\r\nimport WebTileLayer from \"@arcgis/core/layers/WebTileLayer.js\";\r\nimport Search from \"@arcgis/core/widgets/Search.js\";\r\nimport LayerList from \"@arcgis/core/widgets/LayerList.js\";\r\nimport MediaLayer from \"@arcgis/core/layers/MediaLayer.js\";\r\nimport ImageElement from \"@arcgis/core/layers/support/ImageElement.js\";\r\nimport ExtentAndRotationGeoreference from \"@arcgis/core/layers/support/ExtentAndRotationGeoreference.js\";\r\nimport Extent from \"@arcgis/core/geometry/Extent.js\";\r\nimport { HttpClient,HttpHeaders} from '@angular/common/http';\r\nimport { environment } from 'src/environments/environment';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { BehaviorSubject,Observable } from 'rxjs';\r\nimport esriConfig from \"@arcgis/core/config.js\";\r\nimport Swal from 'sweetalert2'\r\nimport * as content from \"@arcgis/core/popup/content.js\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AccionesGeograficasService {\r\n medida = \"measurements\"\r\n geometry:any = {}\r\n measurements:any\r\n graphicsLayerDibujo:any\r\n graphicsLayerImagen:any\r\n graphicsLayerImagenPlanet:any\r\n map:any\r\n mapView:any\r\n idsImagenes:string[] = []\r\n sketch:any\r\n tipoBusqueda:string = 'archivo'\r\n info = document.getElementById('info')\r\n \r\n cambiarTipoDeBusqueda(tipo:string){\r\n this.tipoBusqueda = tipo\r\n }\r\n\r\n constructor(private http:HttpClient, private cookies:CookieService, ) { esriConfig.apiKey = environment.ArcGis_Key }\r\n\r\n coordenadas_Aoi:any = []\r\n dataImagenesPlanet = {}\r\n\r\n private medidasSubject: BehaviorSubject = new BehaviorSubject('Medida AOI: 0 km²');\r\n medidas$: Observable = this.medidasSubject.asObservable();\r\n\r\n\r\n modificarMedida(data:any,tipo:string){\r\n\r\n // console.log(tipo);\r\n\r\n if(tipo == 'archivo'){\r\n\r\n this.geometry = data\r\n\r\n const polygon = new Polygon({\r\n rings: data,\r\n });\r\n \r\n const planarArea = geometryEngine.geodesicArea(polygon, \"square-kilometers\");\r\n \r\n var valorAbsoluto = Math.abs(planarArea);\r\n var numeroEntero = Math.floor(valorAbsoluto);\r\n \r\n this.medidasSubject.next(`Medida AOI: ${numeroEntero} km\\xB2`)\r\n \r\n if(numeroEntero<1){\r\n this.alerta(\"AOI no puede ser menor a 1 km\\xB2\",'warning')\r\n this.graphicsLayerDibujo.remove(this.graphicsLayerDibujo.graphics.getItemAt(0));\r\n this.medidasSubject.next(`Medida AOI: 0 km\\xB2`)\r\n this.coordenadas_Aoi = []\r\n }else if(numeroEntero>5000){\r\n this.graphicsLayerDibujo.remove(this.graphicsLayerDibujo.graphics.getItemAt(0));\r\n this.alerta(\"AOI no puede ser mayor a 5000 km\\xB2\",'warning')\r\n this.medidasSubject.next(`Medida AOI: 0 km\\xB2`)\r\n this.coordenadas_Aoi = []\r\n }else{\r\n // let dato = webMercatorUtils.webMercatorToGeographic(this.geometry).toJSON();\r\n // this.set_coord_aoi(dato.rings,\"data\")\r\n this.set_coord_aoi(data,\"data\")\r\n }\r\n\r\n }else if(tipo == 'programacion'){\r\n\r\n // console.log(\"entre a programacion desde el witget\");\r\n // console.log(this.geometry);\r\n\r\n\r\n this.geometry = data\r\n\r\n const polygon = new Polygon({\r\n rings: data,\r\n });\r\n \r\n const planarArea = geometryEngine.geodesicArea(polygon, \"square-kilometers\");\r\n \r\n var valorAbsoluto = Math.abs(planarArea);\r\n var numeroEntero = Math.floor(valorAbsoluto);\r\n \r\n this.medidasSubject.next(`Medida AOI: ${numeroEntero} km\\xB2`)\r\n\r\n // console.log(numeroEntero);\r\n \r\n if(numeroEntero<1){\r\n this.alerta(\"AOI no puede ser menor a 1 km\\xB2\",'warning')\r\n this.graphicsLayerDibujo.remove(this.graphicsLayerDibujo.graphics.getItemAt(0));\r\n this.medidasSubject.next(`Medida AOI: 0 km\\xB2`)\r\n this.coordenadas_Aoi = []\r\n }else if(numeroEntero>9000000000000000000){\r\n this.graphicsLayerDibujo.remove(this.graphicsLayerDibujo.graphics.getItemAt(0));\r\n this.alerta(\"AOI no puede ser mayor a 5000 km\\xB2\",'warning')\r\n this.medidasSubject.next(`Medida AOI: 0 km\\xB2`)\r\n this.coordenadas_Aoi = []\r\n }else{\r\n \r\n // let dato = webMercatorUtils.webMercatorToGeographic(this.geometry).toJSON();\r\n // console.log(dato);\r\n this.set_coord_aoi(data,\"data\")\r\n\r\n }\r\n\r\n }else{\r\n console.log(\"Tipo desconocido\");\r\n }\r\n\r\n \r\n \r\n }\r\n \r\n mapaBase(container:any,btn_cotizacion:any){\r\n\r\n this.map = new Map({\r\n basemap:'arcgis-imagery'\r\n })\r\n \r\n this.mapView = new MapView({\r\n container: container,\r\n map: this.map,\r\n center: [-73.98844038323271,4.9211649041301655], \r\n zoom: 5\r\n });\r\n\r\n //Witget Busqueda\r\n const searchWidget = new Search({\r\n view: this.mapView\r\n });\r\n\r\n this.mapView.ui.add(searchWidget, {\r\n position: \"top-right\"\r\n });\r\n\r\n //Galeria mapas base\r\n\r\n const basemapGallery = new BasemapGallery({\r\n view: this.mapView,\r\n })\r\n\r\n const bgExpand = new Expand({\r\n view: this.mapView,\r\n content: basemapGallery\r\n });\r\n \r\n this.mapView.ui.add(bgExpand, \"top-right\");\r\n\r\n //Barra de escala\r\n const scalebar = new ScaleBar({\r\n view: this.mapView,\r\n unit: \"metric\"\r\n });\r\n\r\n this.mapView.ui.add(scalebar, \"bottom-right\");\r\n\r\n\r\n\r\n this.graphicsLayerDibujo = new GraphicsLayer({\r\n title: `área de interés`,\r\n id:`aoi`,\r\n })\r\n\r\n \r\n this.map.add(this.graphicsLayerDibujo)\r\n\r\n //Pruebas webtile layer\r\n\r\n // let tiledLayer = new WebTileLayer({\r\n // id: `Planet_Image`,\r\n // title: `Imagen Planet`,\r\n // urlTemplate: \"https://tiles{subDomain}.planet.com/data/v1/PSScene/20250115_153749_36_24c6/{z}/{x}/{y}.png?api_key=PLAKc6ef0ce6d6bd4a22a5cc570d7af83ad5\",\r\n // subDomains: ['0', '1', '2','3'],\r\n // copyright:\r\n // '© PLANET'\r\n // });\r\n\r\n // //Escala configurada 1:100.000\r\n // tiledLayer.maxScale = 100000\r\n\r\n // this.map.add(tiledLayer);\r\n\r\n\r\n }\r\n \r\n\r\n witgetDibujo(){\r\n this.sketch = new Sketch({\r\n layer: this.graphicsLayerDibujo,\r\n view: this.mapView,\r\n availableCreateTools: [\"point\",\"polygon\", \"rectangle\", \"circle\"],\r\n creationMode: \"update\",\r\n layout:\"vertical\",\r\n visibleElements: {\r\n createTools: {\r\n point: true,\r\n },\r\n selectionTools:{\r\n \"lasso-selection\": false,\r\n \"rectangle-selection\":false,\r\n },\r\n settingsMenu: false,\r\n undoRedoMenu: false\r\n }\r\n })\r\n\r\n var sketchSymbol = {\r\n type: \"simple-fill\", \r\n color: [0, 0, 0, 0.2], \r\n outline: { \r\n color: [254, 0, 0], \r\n width: 2 \r\n }\r\n };\r\n\r\n \r\n this.sketch.viewModel.polygonSymbol = sketchSymbol;\r\n\r\n this.mapView.ui.add(this.sketch, \"top-left\");\r\n\r\n this.sketch.on(\"create\",(e:any)=>{\r\n\r\n if (e.state === \"start\") {\r\n this.graphicsLayerDibujo.remove(this.graphicsLayerDibujo.graphics.getItemAt(0));\r\n }\r\n })\r\n\r\n this.measurements = document.getElementById(\"measurements\");\r\n this.mapView.ui.add(this.measurements, \"manual\");\r\n\r\n this.sketch.on(\"update\", (e:any) => {\r\n\r\n this.geometry = e.graphics[0].geometry;\r\n\r\n\r\n //Toma de medidas del poligono\r\n\r\n const planarArea = geometryEngine.planarArea(this.geometry, \"square-kilometers\");\r\n\r\n\r\n let data = `Medida AOI: ${planarArea.toFixed(0)} km\\xB2`\r\n this.medidasSubject.next(data)\r\n\r\n // console.log(e.graphics[0].geometry);\r\n\r\n if (e.state === \"complete\") {\r\n\r\n let dato = webMercatorUtils.webMercatorToGeographic(this.geometry).toJSON();\r\n this.modificarMedida(dato.rings, this.tipoBusqueda)\r\n\r\n }\r\n\r\n })\r\n }\r\n\r\n witgetLayerList(){\r\n let layerLisT = new LayerList({\r\n view: this.mapView,\r\n });\r\n\r\n this.mapView.ui.add(layerLisT, {\r\n position: \"top-right\"\r\n });\r\n\r\n\r\n layerLisT.selectionEnabled = true; \r\n }\r\n\r\n\r\n //Planet\r\n\r\n agregar_poligono_planet(coordenadas:any,id:string){\r\n\r\n\r\n const graphicsLayerPlanet = new GraphicsLayer({\r\n title: `Polygon: ${id}`,\r\n id: `${id}`\r\n })\r\n this.map.add(graphicsLayerPlanet)\r\n\r\n const polygon = {\r\n type: 'polygon',\r\n rings: coordenadas,\r\n spatialReference: { wkid: 4326 },\r\n };\r\n\r\n const graphic = new Graphic({\r\n geometry: polygon,\r\n symbol: new SimpleFillSymbol({\r\n\r\n color: [4, 14, 104, 0.0],\r\n outline: {\r\n color: [255, 255, 255],\r\n width: 0.5,\r\n },\r\n }),\r\n });\r\n\r\n graphicsLayerPlanet.add(graphic)\r\n\r\n\r\n\r\n //Generar poligono AOI\r\n\r\n const aoi_poligono = new GraphicsLayer({\r\n title: 'AOI 2'\r\n })\r\n // this.map.add(aoi_poligono)\r\n\r\n const AOI = {\r\n type: 'polygon',\r\n rings: this.coordenadas_Aoi,\r\n spatialReference: { wkid: 4326 }\r\n }\r\n\r\n const simboloAOI = {\r\n type: \"simple-fill\",\r\n color: [195, 53, 53, 1],\r\n outline: {\r\n color: [195, 53, 53, 1],\r\n width: 1\r\n }\r\n };\r\n\r\n const graficaAOI= new Graphic({\r\n geometry: AOI,\r\n symbol: simboloAOI,\r\n\r\n })\r\n\r\n aoi_poligono.add(graficaAOI);\r\n\r\n\r\n // cobertura\r\n\r\n const poligono_Aoi = new Polygon (AOI)\r\n const poligono_image = new Polygon (polygon)\r\n\r\n const cobertura:any = geometryEngine.intersect(poligono_image,poligono_Aoi)\r\n const coberturanum = Math.round(geometryEngine.geodesicArea(cobertura,'square-kilometers')) \r\n\r\n const etiquetaSymbol = {\r\n type: \"text\",\r\n color: \"#6ac335\",\r\n haloColor: \"#006db0\",\r\n haloSize: \"2px\",\r\n text: `${coberturanum} km2`, // Texto de la etiqueta\r\n font: {\r\n size: 11,\r\n family: \"sans-serif\",\r\n weight: \"bold\"\r\n }\r\n };\r\n \r\n const coberturaGraphicText = new Graphic({\r\n geometry: cobertura,\r\n symbol: etiquetaSymbol,\r\n});\r\n\r\n\r\n\r\n const simboloImagen = {\r\n type: \"simple-fill\",\r\n style:\"diagonal-cross\",\r\n color: [0, 109, 176, 1],\r\n outline: {\r\n color: '#006db0',\r\n width: 3\r\n }\r\n };\r\n\r\n\r\n const cobertura_layer = new GraphicsLayer({\r\n title: `Cobertura : ${coberturanum} km2`,\r\n id:`Cobertura_${id}`\r\n });\r\n \r\n this.map.add(cobertura_layer)\r\n\r\n const coberturaGraphic = new Graphic({\r\n geometry: cobertura,\r\n symbol: simboloImagen,\r\n });\r\n\r\n cobertura_layer.add(coberturaGraphic);\r\n cobertura_layer.add(coberturaGraphicText)\r\n\r\n\r\n // this.mapView.goTo({\r\n // target: graficaAOI.geometry, \r\n // zoom: 10, \r\n // duration: 1000\r\n // });\r\n }\r\n\r\n agregar_imagen_planet(id:number,x_min:number,y_min:number,x_max:number,y_max:number,url:string,proovedor:any,nombre:string){\r\n\r\n const imageElement = new ImageElement({\r\n image: url,\r\n georeference: new ExtentAndRotationGeoreference({\r\n extent: new Extent({\r\n xmin: x_min,\r\n ymin: y_min,\r\n xmax: x_max,\r\n ymax: y_max\r\n })\r\n })\r\n })\r\n\r\n const mediaLayer = new MediaLayer({\r\n source: imageElement,\r\n opacity:0.9,\r\n title: `${proovedor}: ${nombre}`,\r\n blendMode:\"normal\",\r\n id: `Planet_Image ${id}`\r\n })\r\n\r\n this.map.add(mediaLayer)\r\n this.idsImagenes.push(`Planet_Image ${id}`)\r\n\r\n }\r\n\r\n eliminar_imagen_planet(id:any){\r\n let layerImagen = this.map.findLayerById(`Planet_Image ${id}`)\r\n this.map.remove(layerImagen)\r\n }\r\n\r\n eliminar_pligono_planet(id:any){\r\n let layerImagen = this.map.findLayerById(`${id}`)\r\n this.map.remove(layerImagen)\r\n\r\n let layerImagenCobertura = this.map.findLayerById(`Cobertura_${id}`)\r\n this.map.remove(layerImagenCobertura)\r\n }\r\n\r\n //MAXAR\r\n\r\n agregar_poligono_maxar(coordenadas:any,id:string){\r\n\r\n const graphicsLayerMaxar = new GraphicsLayer({\r\n title: `Polygon Maxar: ${id}`,\r\n id: `Maxar_${id}`\r\n })\r\n this.map.add(graphicsLayerMaxar)\r\n\r\n const polygon = new Polygon({\r\n rings: coordenadas,\r\n });\r\n\r\n const graphic = new Graphic({\r\n geometry: polygon,\r\n symbol: new SimpleFillSymbol({\r\n\r\n color: [4, 14, 104, 0.2],\r\n outline: {\r\n color: [255, 255, 255],\r\n width: 0.5,\r\n },\r\n }),\r\n });\r\n\r\n graphicsLayerMaxar.add(graphic)\r\n\r\n this.mapView.goTo({\r\n target: graphic.geometry, \r\n zoom: 10, \r\n duration: 1000\r\n });\r\n }\r\n\r\n eliminar_pligono_maxar(id:any){\r\n let layerImagen = this.map.findLayerById(`Maxar_${id}`)\r\n this.map.remove(layerImagen)\r\n }\r\n\r\n agregar_imagen_Maxar(id:number,x_min:number,y_min:number,x_max:number,y_max:number){\r\n\r\n\r\n const imageElement = new ImageElement({\r\n image:`https://api.discover.digitalglobe.com/show?id=${id}`,\r\n georeference: new ExtentAndRotationGeoreference({\r\n extent: new Extent({\r\n xmin: x_min,\r\n ymin: y_min,\r\n xmax: x_max,\r\n ymax: y_max\r\n })\r\n })\r\n })\r\n\r\n const mediaLayer = new MediaLayer({\r\n source: imageElement,\r\n opacity:0.9,\r\n title: `Imagen Maxar: ${id}`,\r\n blendMode:\"normal\",\r\n id: `Maxar_Imagen_${id}`\r\n })\r\n\r\n this.map.add(mediaLayer)\r\n this.idsImagenes.push(`Maxar_Imagen_${id}`)\r\n\r\n }\r\n\r\n eliminar_imagen_maxar(id:string){\r\n let layerImagen = this.map.findLayerById(`Maxar_Imagen_${id}`)\r\n this.map.remove(layerImagen)\r\n }\r\n\r\n\r\n //Otras opciones\r\n\r\n limpiar_mapa(){\r\n\r\n this.idsImagenes.forEach((e)=>{\r\n let layerImagen = this.map.findLayerById(e)\r\n this.map.remove(layerImagen)\r\n })\r\n\r\n //Borrar AOI\r\n this.graphicsLayerDibujo.remove(this.graphicsLayerDibujo.graphics.getItemAt(0));\r\n this.coordenadas_Aoi = []\r\n\r\n \r\n }\r\n\r\n remover_widget_sketch(){\r\n this.mapView.ui.remove(this.sketch);\r\n }\r\n agregar_widget_sketch(){\r\n this.mapView.ui.add(this.sketch,\"top-left\");\r\n }\r\n\r\n set_coord_aoi(e:any,tipo:string){\r\n this.coordenadas_Aoi = []\r\n this.coordenadas_Aoi = e\r\n }\r\n\r\n get_coord_aoi(){\r\n // console.log(this.coordenadas_Aoi);\r\n if(this.coordenadas_Aoi.length==0){\r\n this.alerta('Seleccione un área de interés','warning')\r\n }else{\r\n return this.coordenadas_Aoi\r\n }\r\n }\r\n\r\n \r\n post_aoi_file(data:any,url_file:string){\r\n\r\n const jwt = this.cookies.get('jwtToken')\r\n let url = `${environment.URL_API}${url_file}`\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${jwt}`\r\n })\r\n return this.http.post(url,data,{headers}) \r\n }\r\n \r\n aoi_file(coordenadas:any[],tipo:string){\r\n this.coordenadas_Aoi = []\r\n\r\n const polygon = new Polygon({\r\n rings: coordenadas\r\n });\r\n\r\n const graphic = new Graphic({\r\n geometry: polygon,\r\n symbol: new SimpleFillSymbol({\r\n\r\n color: [0, 0, 0, 0.2],\r\n outline: {\r\n color: [254, 0, 0],\r\n width: 2,\r\n },\r\n }),\r\n });\r\n\r\n this.graphicsLayerDibujo.add(graphic)\r\n\r\n this.mapView.goTo({\r\n target: graphic.geometry.extent,\r\n duration: 3000, // Duración de la animación en milisegundos\r\n easing: \"ease-in-out\" // Función de interpolación para la animación\r\n });\r\n \r\n \r\n this.set_coord_aoi(coordenadas,tipo)\r\n\r\n\r\n\r\n }\r\n\r\n alerta(text:string,icono:any){\r\n Swal.fire({\r\n title: text,\r\n icon:icono,\r\n timer: 1000,\r\n toast: true,\r\n showConfirmButton: false,\r\n })\r\n \r\n }\r\n\r\n mapaSeleccion(container:any){\r\n const map = new Map({\r\n basemap:'arcgis-imagery'\r\n })\r\n \r\n const mapView = new MapView({\r\n container: container,\r\n map: map,\r\n center: [-73.98844038323271,4.9211649041301655], \r\n zoom: 5\r\n });\r\n\r\n //Galeria mapas base\r\n const basemapGallery = new BasemapGallery({\r\n view: mapView,\r\n })\r\n\r\n const bgExpand = new Expand({\r\n view: mapView,\r\n content: basemapGallery\r\n });\r\n \r\n mapView.ui.add(bgExpand, \"top-right\");\r\n }\r\n\r\n\r\n cotizacionIcon(contenedor:any){\r\n \r\n const expandInfo = new Expand({\r\n expandTooltip: \"Open for info\",\r\n collapseTooltip: \"Close info\",\r\n expanded: true,\r\n view: this.mapView,\r\n content: contenedor\r\n });\r\n\r\n this.mapView.ui.add(expandInfo, {\r\n position: \"top-left\",\r\n index: 2\r\n });\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n\r\n\r\n","import { Component } from '@angular/core';\r\nimport { AccionesGeograficasService } from '../../services/acciones-geograficas.service';\r\n\r\n@Component({\r\n selector: 'app-arcgis',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './arcgis.component.html',\r\n styleUrl: './arcgis.component.css'\r\n})\r\nexport class ArcgisComponent {\r\n\r\n constructor (private accionesGeograficas: AccionesGeograficasService){}\r\n\r\n\r\n contenedor_del_mapa = 'mapViewDiv'\r\n medidas = `Medida AOI: 0 km\\xB2`\r\n btn_cotizacion = document.getElementById('info')\r\n\r\n\r\n ngOnInit() {\r\n this.accionesGeograficas.mapaBase(this.contenedor_del_mapa,this.btn_cotizacion)\r\n this.accionesGeograficas.witgetDibujo()\r\n this.accionesGeograficas.witgetLayerList()\r\n // this.accionesGeograficas.cotizacionIcon(this.btn_cotizacion)\r\n\r\n this.accionesGeograficas.medidas$.subscribe(nueva_medida => {\r\n this.medidas = nueva_medida\r\n })\r\n\r\n }\r\n\r\n cotizacion(){\r\n alert('abrir cotizacion')\r\n console.log('cotizacion');\r\n }\r\n\r\n}\r\n","
\r\n\r\n
{{medidas}}
\r\n\r\n
\r\n\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable,Subject } from 'rxjs';\r\nimport { EsquemasService } from 'src/app/auth/services/esquemas.service';\r\nimport { environment } from 'src/environments/environment';\r\nimport { codigoInternoEsquemas } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BuscarImagenesService {\r\n\r\n constructor(private http: HttpClient, private esquemasServices: EsquemasService ) { }\r\n\r\n private progresoImagenesSubject = new Subject();\r\n progresoImagenes$ = this.progresoImagenesSubject.asObservable();\r\n\r\n private progresoImagenes_count_Subject = new Subject();\r\n progresoImagenes_count_Subject$ = this.progresoImagenes_count_Subject.asObservable();\r\n\r\n busqueda(aoi:any, f_inicial:string,f_final:string, c_nubosidad:string, plataformas_a_buscar:any,resoluciones_de_busqueda:any ){\r\n\r\n let numeroAleatorio = Math.floor(Math.random() * 20) + 1;\r\n\r\n // console.log(\"busqueda...\")\r\n\r\n let area_de_interes = aoi[0]\r\n var formdata = new FormData();\r\n\r\n\r\n //! Formatear fecha\r\n const fechaActual = new Date();\r\n const dia = ('0' + fechaActual.getDate()).slice(-2);\r\n const mes = ('0' + (fechaActual.getMonth() + 1)).slice(-2);\r\n const anio = fechaActual.getFullYear();\r\n const hora = ('0' + fechaActual.getHours()).slice(-2);\r\n const minutos = ('0' + fechaActual.getMinutes()).slice(-2);\r\n const fechaFormateada = `${dia}_${mes}_${anio}_${hora}_${minutos}`;\r\n\r\n //!Id usuario\r\n let id_user = localStorage.getItem('id_user')\r\n\r\n\r\n //TODO: Generar data de la peticion \r\n\r\n\r\n //!Inatancia de Esquema a crear \r\n formdata.append(\"comando.nombre\", `Id_${id_user}_Fecha_${fechaFormateada}_${numeroAleatorio}`);\r\n formdata.append(\"comando.esquemaID\", `${this.esquemasServices.obtener_Id_Esquema_Por_Nombre(codigoInternoEsquemas.busqueda_imagenes)}`);\r\n\r\n //!Id Usuario\r\n formdata.append(\"comando.usuarioPropietarioID\", `${id_user}`);\r\n\r\n //!Plataformas de busqueda\r\n // formdata.append(\"comando.instanciasAtributo_Crear[0].atributoID\", `${this.esquemasServices.obtener_Id_esquema_busqueda_de_imagenes(codigoInternoEsquemas.plataformas_de_busqueda)}`);\r\n\r\n //! validacion plataformas\r\n\r\n // let plataformas_activas = plataformas_a_buscar.filter((plataforma:any) => plataforma.activo === true);\r\n\r\n // plataformas_activas.forEach((plataforma:any,i:any)=>{\r\n // formdata.append(`comando.instanciasAtributo_Crear[0].listadoOpcionEnumeracionId[${i}]`, `${plataforma.id}`) \r\n // })\r\n\r\n\r\n // formdata.append(\"comando.instanciasAtributo_Crear[0].listadoOpcionEnumeracionId[0]\", `${codigoInternoEsquemas.planet}`)\r\n // formdata.append(\"comando.instanciasAtributo_Crear[0].listadoOpcionEnumeracionId[1]\", `${codigoInternoEsquemas.maxar}`)\r\n\r\n //! Busqueda por resoluccion \r\n formdata.append(\"comando.instanciasAtributo_Crear[0].atributoID\", `${this.esquemasServices.obtener_Id_esquema_busqueda_de_imagenes('Resolucion')}`);\r\n\r\n let resolucciones = this.esquemasServices.obtener_resoluccion()\r\n // console.log(resolucciones);\r\n\r\n resoluciones_de_busqueda.forEach((e:any,i:any) => {\r\n\r\n if(e == 'MuyAlta'){\r\n\r\n let dat = resolucciones.find((re:any) => re.nombre === 'Muy Alta')\r\n let id = dat.id\r\n formdata.append(`comando.instanciasAtributo_Crear[0].listadoOpcionEnumeracionId[${i}]`, id) \r\n\r\n }else if(e == 'Alta'){\r\n\r\n let dat = resolucciones.find((re:any) => re.nombre === 'Alta')\r\n let id = dat.id\r\n\r\n formdata.append(`comando.instanciasAtributo_Crear[0].listadoOpcionEnumeracionId[${i}]`, id) \r\n }else if(e == 'Baja'){\r\n\r\n let dat = resolucciones.find((re:any) => re.nombre === 'Baja')\r\n let id = dat.id\r\n \r\n formdata.append(`comando.instanciasAtributo_Crear[0].listadoOpcionEnumeracionId[${i}]`, id) \r\n }\r\n });\r\n\r\n\r\n //!Referencia espacial\r\n formdata.append(\"comando.instanciasAtributo_Crear[1].atributoID\", `${this.esquemasServices.obtener_Id_esquema_busqueda_de_imagenes(codigoInternoEsquemas.area_de_interes)}`);\r\n\r\n formdata.append(\"comando.instanciasAtributo_Crear[1].valorGeoVectorPoligono2D.referenciaEspacial\", \"Wgs84\");\r\n\r\n\r\n //!Formatear AOI\r\n \r\n area_de_interes.forEach((coor:any,i:number)=>{\r\n\r\n formdata.append(`comando.instanciasAtributo_Crear[1].valorGeoVectorPoligono2D.coordenadas2D[${i}].orden`, `${i}`);\r\n \r\n formdata.append(`comando.instanciasAtributo_Crear[1].valorGeoVectorPoligono2D.coordenadas2D[${i}].longitud`,`${coor[0]}`);\r\n\r\n formdata.append(`comando.instanciasAtributo_Crear[1].valorGeoVectorPoligono2D.coordenadas2D[${i}].latitud`, `${coor[1]}`);\r\n\r\n })\r\n \r\n \r\n //!Fechas de adquisicion\r\n formdata.append(\"comando.instanciasAtributo_Crear[2].atributoID\", `${this.esquemasServices.obtener_Id_esquema_busqueda_de_imagenes(codigoInternoEsquemas.fecha_inicial)}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[2].valorFechaHora\", `${f_inicial}T00:00:00.000Z`);\r\n\r\n formdata.append(\"comando.instanciasAtributo_Crear[3].atributoID\", `${this.esquemasServices.obtener_Id_esquema_busqueda_de_imagenes(codigoInternoEsquemas.fecha_final)}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[3].valorFechaHora\", `${f_final}T00:00:00.000Z`);\r\n\r\n\r\n //!Cobertuta de nubosidad\r\n\r\n formdata.append(\"comando.instanciasAtributo_Crear[4].atributoID\", `${this.esquemasServices.obtener_Id_esquema_busqueda_de_imagenes(codigoInternoEsquemas.cobertura_nubosidad_final)}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[4].valorNumerico\", `${c_nubosidad}`);\r\n\r\n// console.log(formdata);\r\n\r\n //TODO: Realizar peticion\r\n let token = localStorage.getItem('jwt_token')\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n const options = {\r\n headers: headers\r\n };\r\n\r\n return this.http.post(`${environment.URL_API}/Instancia/Crear`,formdata,options)\r\n\r\n }\r\n\r\n consulta_imagenes(id:string){\r\n\r\n let token = localStorage.getItem('jwt_token')\r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n const options = {\r\n headers: headers\r\n };\r\n\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarInstanciaEsquemaPorID/${id}/IncluirInstanciasAtributo`,options)\r\n\r\n }\r\n\r\n retornar_imagen(id_imagen:number): Observable{\r\n\r\n \r\n\r\n let token = localStorage.getItem('jwt_token')\r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n const options = {\r\n headers: headers,\r\n responseType: 'blob' as 'json'\r\n };\r\n\r\n return this.http.get(`${environment.URL_API}/Instancia/ObtenerArchivoInstanciaAtributo/${id_imagen}/GeoRaster`,options)\r\n\r\n }\r\n\r\n total_imagenes_consultar:number = 0\r\n imagenes_consultadas:number = 0\r\n\r\n procesarDataDeImagenes(datos:any,proveedor:any){\r\n\r\n const data_procesada:any = []\r\n\r\n // console.log(datos);\r\n \r\n datos.forEach((data:any, index:number)=>{\r\n\r\n let cord = data.valor.coordenadas2D\r\n let dat = data.valor.propiedades\r\n let propiedades = dat\r\n let id = data.id\r\n let indetificador_tarjeta = data.valor.imagenId\r\n\r\n const imagen = {\r\n identificador:id,\r\n proveedor:proveedor,\r\n url: '',\r\n id_tarjeta: `id_${indetificador_tarjeta}`,\r\n nombreArchivoOriginal: data.valor.nombreArchivoOriginal,\r\n propiedades: propiedades,\r\n bBoxLongitudMin: data.valor.bBoxLongitudMin,\r\n bBoxLatitudMin: data.valor.bBoxLatitudMin,\r\n bBoxLongitudMax: data.valor.bBoxLongitudMax,\r\n bBoxLatitudMax: data.valor.bBoxLatitudMax,\r\n referenciaEspacial: data.valor.referenciaEspacial,\r\n coordenadas2D: cord\r\n } \r\n\r\n if(index <= 2 ){\r\n\r\n if(data.valor.imagenUrl == null){\r\n\r\n this.total_imagenes_consultar ++\r\n\r\n this.retornar_imagen(id).subscribe({\r\n\r\n next:(imagenBlob: Blob)=>{\r\n \r\n this.imagenes_consultadas++\r\n \r\n if(this.imagenes_consultadas >= this.total_imagenes_consultar / 1.053){\r\n this.progresoImagenesSubject.next(false);\r\n // console.log('termine de cargar');\r\n }\r\n \r\n if(imagenBlob == null ){\r\n imagen.url = './assets/image.jpg'\r\n }else{\r\n const imageUrl = URL.createObjectURL(imagenBlob);\r\n imagen.url = imageUrl\r\n \r\n //Disminucion de calidad\r\n \r\n // this.comprimirImagen(imagenBlob, 0.1).then((imageUrl) => {\r\n // imagen.url = imageUrl;\r\n // });\r\n\r\n \r\n data_procesada.push(imagen)\r\n } \r\n \r\n this.progresoImagenes_count_Subject.next(`${this.imagenes_consultadas} de ${this.total_imagenes_consultar}`) \r\n \r\n },\r\n error:(res)=>{\r\n console.log(res);\r\n imagen.url = './assets/image.jpg'\r\n data_procesada.push(imagen)\r\n }\r\n })\r\n \r\n \r\n\r\n }else{\r\n imagen.url = data.valor.imagenUrl\r\n data_procesada.push(imagen)\r\n }\r\n }\r\n \r\n })\r\n\r\n \r\n return data_procesada \r\n\r\n }\r\n\r\n reiniciarProgreso() {\r\n this.progresoImagenesSubject.next(true);\r\n }\r\n \r\n comprimirImagen(imagenBlob: Blob, calidad: number): Promise {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = () => {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n const ctx = canvas.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\r\n canvas.toBlob(\r\n (blob) => {\r\n if (blob) {\r\n resolve(URL.createObjectURL(blob));\r\n } else {\r\n reject('Error al comprimir la imagen.');\r\n }\r\n },\r\n 'image/jpeg', // formato de salida\r\n calidad // calidad de la compresión, 0.5 para reducir al 50%\r\n );\r\n } else {\r\n reject('No se pudo obtener el contexto del canvas.');\r\n }\r\n };\r\n img.onerror = reject;\r\n img.src = URL.createObjectURL(imagenBlob);\r\n });\r\n }\r\n\r\n\r\n}\r\n\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { environment } from 'src/environments/environment';\r\nimport { noop } from 'rxjs';\r\nimport { EsquemasService } from 'src/app/auth/services/esquemas.service';\r\nimport { codigoInternoEsquemas } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GenerarCotizacionService {\r\n\r\n constructor(private http:HttpClient, private esquemasServices:EsquemasService) { }\r\n\r\n listado_imagenes_a_cotizar_planet:any[] = []\r\n listado_imagenes_a_cotizar_maxar:any[] = []\r\n nombre_cotizacion = ''\r\n\r\n id_cotizacion = ''\r\n id_busqueda = ''\r\n id_busquedaPoligonoGeo = ''\r\n\r\n\r\n agregar_imagen_planet_lista(data:any){\r\n this.listado_imagenes_a_cotizar_planet.push(data.propiedades.id)\r\n }\r\n\r\n agregar_imagen_maxar_lista(data:any){\r\n this.listado_imagenes_a_cotizar_maxar.push(data.propiedades.id)\r\n\r\n }\r\n\r\n agregar_nombre_a_cotizacion(nombre:string){\r\n this.nombre_cotizacion = nombre\r\n }\r\n\r\n agregar_id_cotizacion(id:any){\r\n this.id_cotizacion = id\r\n } \r\n\r\n agregar_id_de_busqueda(id:any){\r\n this.id_busqueda = id\r\n } \r\n\r\n agregar_id_de_busqueda_polignoGeo(id:any){\r\n this.id_busquedaPoligonoGeo = id\r\n } \r\n\r\n \r\n crear_cotizacion(){\r\n\r\n //!Id usuario\r\n let id_user = localStorage.getItem('id_user')\r\n\r\n var formdata = new FormData();\r\n formdata.append(\"comando.nombre\", this.nombre_cotizacion);\r\n formdata.append(\"comando.esquemaID\", `${this.esquemasServices.obtener_Id_Esquema_Por_Nombre(codigoInternoEsquemas.cotizacion)}`);\r\n\r\n formdata.append(\"comando.usuarioPropietarioID\", `${id_user}`);\r\n\r\n //Total de creditos debe ser 0\r\n \r\n formdata.append(\"comando.instanciasAtributo_Crear[0].atributoID\", `${this.esquemasServices.obtener_Id_esquema_Cotizacion(codigoInternoEsquemas.total_creditos)}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[0].valorNumerico\", '0');\r\n\r\n //datos de la busqueda en donde se encontro la imagen a añadir (BusquedaImagenArchivo)\r\n // formdata.append(\"comando.instanciasAtributo_Crear[1].atributoID\", `${this.esquemasServices.obtener_Id_esquema_Cotizacion(codigoInternoEsquemas.busqueda_imagen_archivo)}`);\r\n // formdata.append(\"comando.instanciasAtributo_Crear[1].valorTipoInstanciaEsquemaID\",this.id_busqueda);\r\n\r\n //TODO: Realizar peticion\r\n let token = localStorage.getItem('jwt_token')\r\n\r\n const headers = new HttpHeaders({\r\n\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n \r\n var options = {\r\n headers: headers,\r\n };\r\n\r\n return this.http.post(`${environment.URL_API}/Instancia/Crear`,formdata,options)\r\n\r\n\r\n }\r\n\r\n añadir_imagenes_a_cotizacion(id_imagen:string,proveedor:string){\r\n\r\n console.log(proveedor);\r\n\r\n\r\n //! Formatear fecha\r\n const fechaActual = new Date();\r\n const dia = ('0' + fechaActual.getDate()).slice(-2);\r\n const mes = ('0' + (fechaActual.getMonth() + 1)).slice(-2);\r\n const anio = fechaActual.getFullYear();\r\n const hora = ('0' + fechaActual.getHours()).slice(-2);\r\n const minutos = ('0' + fechaActual.getMinutes()).slice(-2);\r\n const fechaFormateada = `${dia}_${mes}_${anio}_${hora}_${minutos}`;\r\n\r\n let numeroAleatorio = Math.floor(Math.random() * 50) + 1;\r\n let aleatorio = this.generarCadenaAleatoria()\r\n\r\n //!Id usuario\r\n let id_user = localStorage.getItem('id_user')\r\n\r\n var formdata = new FormData();\r\n\r\n formdata.append(\"comando.nombre\", `imagen_${aleatorio}_${id_user}_${fechaFormateada}_${numeroAleatorio}_${numeroAleatorio}`);\r\n \r\n if(proveedor == 'Otros Productos'){\r\n\r\n\r\n //!IMAGENES DE OTROS PRODUCTOS\r\n\r\n // ID (DetalleCotizacionPoligonoGEO) \"DetalleCotizacionPoligonoGeo\"\r\n formdata.append(\"comando.esquemaID\", `${this.esquemasServices.obtener_Id_Esquema_Por_Nombre('DetalleCotizacionPoligonoGeo')}`);\r\n\r\n //ID cotizacion creada a la cual se añadiran las imagenes (EncabezadoCotizacion)\r\n formdata.append(\"comando.instanciasAtributo_Crear[0].atributoID\", `${this.esquemasServices.obtener_Ids_PoligonoGeograficoCotizacion('EncabezadoCotizacion')}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[0].valorTipoInstanciaEsquemaID\",this.id_cotizacion);\r\n\r\n //ID de la busqueda en donde se encontro la imagen a añadir (BusquedaPoligonoGeo)\r\n formdata.append(\"comando.instanciasAtributo_Crear[1].atributoID\", `${this.esquemasServices.obtener_Ids_PoligonoGeograficoCotizacion('BusquedaPoligonoGeo')}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[1].valorTipoInstanciaEsquemaID\",this.id_busquedaPoligonoGeo);\r\n\r\n //id imagen (PoligonoGeografico) id de coleccion 4291/4292 - mismo id GeoRaster\r\n formdata.append(\"comando.instanciasAtributo_Crear[2].atributoID\", `${this.esquemasServices.obtener_Ids_PoligonoGeograficoCotizacion('PoligonoGeografico')}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[2].valorTipoInstanciaEsquemaID\", id_imagen);\r\n\r\n //id imagen (IdentificadorPoligono)\r\n formdata.append(\"comando.instanciasAtributo_Crear[3].atributoID\", `${this.esquemasServices.obtener_Ids_PoligonoGeograficoCotizacion('IdentificadorPoligono')}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[3].valorCadena\", '20230930_152025_49_249a');\r\n\r\n }else{\r\n\r\n //!IMAGENES DE ARCHIVO\r\n\r\n // ID (DetalleCotizacionImagenArchivo)\r\n formdata.append(\"comando.esquemaID\", `${this.esquemasServices.obtener_Id_Esquema_Por_Nombre(codigoInternoEsquemas.detalle_cotizacion)}`);\r\n\r\n //datos cotizacion creada a la cual se añadiran las imagenes (EncabezadoCotizacion)\r\n formdata.append(\"comando.instanciasAtributo_Crear[0].atributoID\", `${this.esquemasServices.obtener_Id_esquema_Cotizacion_imagen_archivo(codigoInternoEsquemas.encabezado_cotizacion)}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[0].valorTipoInstanciaEsquemaID\",this.id_cotizacion);\r\n\r\n //datos de la busqueda en donde se encontro la imagen a añadir (BusquedaImagenArchivo)\r\n formdata.append(\"comando.instanciasAtributo_Crear[1].atributoID\", `${this.esquemasServices.obtener_Id_esquema_Cotizacion_imagen_archivo(codigoInternoEsquemas.busqueda_imagen_archivo)}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[1].valorTipoInstanciaEsquemaID\",this.id_busqueda);\r\n\r\n //id imagen (identificador_imagen)\r\n formdata.append(\"comando.instanciasAtributo_Crear[2].atributoID\", `${this.esquemasServices.obtener_Id_esquema_Cotizacion_imagen_archivo(codigoInternoEsquemas.identificador_imagen)}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[2].valorCadena\", id_imagen);\r\n\r\n //plataforma de busqueda (Identificador Proveedor) 2679\r\n formdata.append(\"comando.instanciasAtributo_Crear[3].atributoID\", `${this.esquemasServices.obtener_Id_esquema_Cotizacion_imagen_archivo(codigoInternoEsquemas.plataforma_busqueda)}`);\r\n\r\n //535\r\n formdata.append(\"comando.instanciasAtributo_Crear[3].listadoOpcionEnumeracionId[0]\", `${this.esquemasServices.obtener_pataformas_cotizacion(proveedor)}`);\r\n }\r\n\r\n \r\n\r\n //TODO: Realizar peticion\r\n let token = localStorage.getItem('jwt_token')\r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n \r\n var options = {\r\n headers: headers,\r\n };\r\n\r\n return this.http.post(`${environment.URL_API}/Instancia/Crear`,formdata,options)\r\n\r\n }\r\n\r\n generarCadenaAleatoria(minLength = 6) {\r\n // Genera una cadena aleatoria inicial de longitud suficiente\r\n let cadenaAleatoria = Math.random().toString(36).substr(2, minLength);\r\n\r\n // Si la longitud de la cadena es menor que minLength, sigue agregando más caracteres\r\n while (cadenaAleatoria.length < minLength) {\r\n cadenaAleatoria += Math.random().toString(36).substr(2);\r\n }\r\n\r\n // Devuelve la cadena cortada a la longitud mínima requerida\r\n return cadenaAleatoria.substr(0, minLength);\r\n}\r\n\r\n\r\n\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { EsquemasService } from 'src/app/auth/services/esquemas.service';\r\nimport { codigoInternoEsquemas } from 'src/environments/environment';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ProgramacionDeImagenesService {\r\n\r\n constructor( private http:HttpClient, private esquemasServices:EsquemasService) { }\r\n nombre_cotizacion = ''\r\n\r\n generarCadenaAleatoria(minLength = 6) {\r\n // Genera una cadena aleatoria inicial de longitud suficiente\r\n let cadenaAleatoria = Math.random().toString(36).substr(2, minLength);\r\n\r\n // Si la longitud de la cadena es menor que minLength, sigue agregando más caracteres\r\n while (cadenaAleatoria.length < minLength) {\r\n cadenaAleatoria += Math.random().toString(36).substr(2);\r\n }\r\n\r\n // Devuelve la cadena cortada a la longitud mínima requerida\r\n return cadenaAleatoria.substr(0, minLength);\r\n}\r\n\r\n\r\n cotizacion_programar_Imagen(nombre:any){\r\n\r\n let numeroAleatorio = this.generarCadenaAleatoria()\r\n\r\n //!Id usuario\r\n let id_user = localStorage.getItem('id_user')\r\n var formdata = new FormData();\r\n\r\n formdata.append(\"comando.nombre\", nombre);\r\n formdata.append(\"comando.esquemaID\", `${this.esquemasServices.obtener_Id_Esquema_Por_Nombre(codigoInternoEsquemas.cotizacion)}`);\r\n formdata.append(\"comando.usuarioPropietarioID\", `${id_user}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[0].atributoID\", `${this.esquemasServices.obtener_Id_esquema_Cotizacion(codigoInternoEsquemas.total_creditos)}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[0].valorNumerico\", '0');\r\n\r\n\r\n //TODO: Realizar peticion\r\n let token = localStorage.getItem('jwt_token')\r\n\r\n const headers = new HttpHeaders({\r\n\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n var options = {\r\n headers: headers,\r\n };\r\n\r\n return this.http.post(`${environment.URL_API}/Instancia/Crear`,formdata,options)\r\n\r\n }\r\n\r\n\r\n programar_Imagen(id:number,f_inicial:any,f_final:any,poligono:any, id_referencia:any){\r\n\r\n\r\n\r\n let numeroAleatorio = this.generarCadenaAleatoria()\r\n let id_user = localStorage.getItem('id_user')\r\n\r\n var formdata = new FormData();\r\n\r\n //! Nombre imagen programada\r\n formdata.append(\"comando.nombre\", `imag_prog_${numeroAleatorio}`);\r\n\r\n //! ID esquema (DetalleCotizacionImagenProgramacion)\r\n formdata.append(\"comando.esquemaID\", `${this.esquemasServices.obtener_Id_Esquema_Por_Nombre('DetalleCotizacionImagenProgramacion')}`); \r\n\r\n //! Usuario popietario\r\n formdata.append(\"comando.usuarioPropietarioID\",`${id_user}`);\r\n\r\n //! Cotizacion a la que se le agregara la imagen (EncabezadoCotizacion)\r\n formdata.append(\"comando.instanciasAtributo_Crear[0].atributoID\", `${this.esquemasServices.obtener_Ids_ImagenProgramacion('EncabezadoCotizacion')}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[0].valorTipoInstanciaEsquemaID\", `${id}`);\r\n\r\n //! Codigo Referencia a cotizar \r\n formdata.append(\"comando.instanciasAtributo_Crear[1].atributoID\", `${this.esquemasServices.obtener_Ids_ImagenProgramacion('CodigoReferencia')}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[1].valorTipoInstanciaEsquemaID\", id_referencia);\r\n\r\n //Todo: Verificacion AOI \r\n\r\n formdata.append(\"comando.instanciasAtributo_Crear[2].atributoID\", `${this.esquemasServices.obtener_Ids_ImagenProgramacion('AreaDeInteres')}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[2].valorGeoVectorPoligono2D.referenciaEspacial\", \"Wgs84\");\r\n\r\n poligono[0].forEach((coor:any,i:number)=>{\r\n\r\n formdata.append(`comando.instanciasAtributo_Crear[2].valorGeoVectorPoligono2D.coordenadas2D[${i}].orden`, `${i}`);\r\n formdata.append(`comando.instanciasAtributo_Crear[2].valorGeoVectorPoligono2D.coordenadas2D[${i}].longitud`,`${coor[0]}`);\r\n formdata.append(`comando.instanciasAtributo_Crear[2].valorGeoVectorPoligono2D.coordenadas2D[${i}].latitud`, `${coor[1]}`);\r\n\r\n })\r\n\r\n //! Fecha inicial (FechaInicialAdquisicion)\r\n formdata.append(\"comando.instanciasAtributo_Crear[3].atributoID\", `${this.esquemasServices.obtener_Ids_ImagenProgramacion('FechaInicialAdquisicion')}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[3].valorFechaHora\", `${f_inicial}T00:00:00.000Z`);\r\n\r\n //! Fecha final (FechaFinalAdquisicion)\r\n formdata.append(\"comando.instanciasAtributo_Crear[4].atributoID\", `${this.esquemasServices.obtener_Ids_ImagenProgramacion('FechaFinalAdquisicion')}`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[4].valorFechaHora\", `${f_final}T00:00:00.000Z`);\r\n\r\n // //TODO: Realizar peticion\r\n let token = localStorage.getItem('jwt_token')\r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n \r\n var options = {\r\n headers: headers,\r\n };\r\n\r\n return this.http.post(`${environment.URL_API}/Instancia/Crear`,formdata,options)\r\n\r\n }\r\n\r\n consultaServiciosProfecionales(){\r\n\r\n let token = localStorage.getItem('jwt_token')\r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n \r\n var options = {\r\n headers: headers,\r\n };\r\n\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarConjuntoInstanciasEsquemaPorPropNavEsquemaCodInt/PRYMAP/CatalogoReferencia/IncluirInstanciasAtributo`, options);\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { environment } from 'src/environments/environment';\r\nimport { EsquemasService } from 'src/app/auth/services/esquemas.service';\r\nimport { Observable,Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BusquedaPoligonosGeoService {\r\n\r\n constructor(private http: HttpClient, private esquemasServices: EsquemasService) { }\r\n\r\n busquedaPoligonosGeo(aoi:any,fecha_inicial:any,fecha_final:any,ProductosABuscar:any){\r\n\r\n let productosABuscar = ProductosABuscar.getValue()\r\n console.log();\r\n\r\n //! Formatear fecha\r\n const fechaActual = new Date();\r\n const dia = ('0' + fechaActual.getDate()).slice(-2);\r\n const mes = ('0' + (fechaActual.getMonth() + 1)).slice(-2);\r\n const anio = fechaActual.getFullYear();\r\n const hora = ('0' + fechaActual.getHours()).slice(-2);\r\n const minutos = ('0' + fechaActual.getMinutes()).slice(-2);\r\n const fechaFormateada = `${dia}_${mes}_${anio}_${hora}_${minutos}`;\r\n let numeroAleatorio = Math.floor(Math.random() * 20) + 1;\r\n\r\n let area_de_interes = aoi[0]\r\n let id_user = localStorage.getItem('id_user')\r\n\r\n\r\n var formdata = new FormData();\r\n\r\n //!Id Usuario\r\n formdata.append(\"comando.usuarioPropietarioID\", `${id_user}`);\r\n\r\n //!Nombre\r\n formdata.append(\"comando.nombre\", `GEO_Id_${id_user}_Fecha_${fechaFormateada}_${numeroAleatorio}`);\r\n\r\n //!CodigoReferenciaEsquema\r\n formdata.append(\"comando.esquemaID\", `${this.esquemasServices.obtener_Id_Esquema_Por_Nombre('BusquedaPoligonoGeografico')}`);\r\n\r\n //!AreaDeInteres\r\n formdata.append(\"comando.instanciasAtributo_Crear[0].atributoID\", `2900`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[0].valorGeoVectorPoligono2D.referenciaEspacial\", \"Wgs84\");\r\n\r\n area_de_interes.forEach((coor:any,i:number)=>{\r\n\r\n formdata.append(`comando.instanciasAtributo_Crear[0].valorGeoVectorPoligono2D.coordenadas2D[${i}].orden`, `${i}`);\r\n formdata.append(`comando.instanciasAtributo_Crear[0].valorGeoVectorPoligono2D.coordenadas2D[${i}].longitud`,`${coor[0]}`);\r\n formdata.append(`comando.instanciasAtributo_Crear[0].valorGeoVectorPoligono2D.coordenadas2D[${i}].latitud`, `${coor[1]}`);\r\n\r\n })\r\n\r\n //!FechaInicialAdquisicion\r\n formdata.append(\"comando.instanciasAtributo_Crear[1].atributoID\", `2901`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[1].valorFechaHora\", `${fecha_inicial}T00:00:00.000Z`);\r\n\r\n //!FechaFinalAdquisicion\r\n formdata.append(\"comando.instanciasAtributo_Crear[2].atributoID\", `2902`);\r\n formdata.append(\"comando.instanciasAtributo_Crear[2].valorFechaHora\", `${fecha_final}T00:00:00.000Z`);\r\n\r\n //!Tipo producto\r\n\r\n formdata.append(\"comando.instanciasAtributo_Crear[3].atributoID\", `2903`);\r\n // formdata.append(`comando.instanciasAtributo_Crear[3].listadoOpcionEnumeracionId[0]`, '587')\r\n\r\n\r\n productosABuscar.forEach((i:any,index:any)=>{\r\n \r\n if(i.seleccionado){\r\n formdata.append(`comando.instanciasAtributo_Crear[3].listadoOpcionEnumeracionId[${index}]`,`${i.id}`) \r\n }\r\n\r\n })\r\n\r\n // console.log(formdata);\r\n\r\n let token = localStorage.getItem('jwt_token')\r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n const options = {\r\n headers: headers\r\n };\r\n\r\n return this.http.post(`${environment.URL_API}/Instancia/Crear`,formdata,options)\r\n\r\n }\r\n\r\n consultarTipoProducto(){\r\n\r\n let token = localStorage.getItem('jwt_token')\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n const options = {\r\n headers: headers\r\n };\r\n\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarEsquemaPorID/${this.esquemasServices.obtener_Id_Esquema_Por_Nombre('BusquedaPoligonoGeografico')}/IncluirAtributos`,options)\r\n }\r\n\r\n \r\n consultaProductos(id:any){\r\n\r\n let token = localStorage.getItem('jwt_token')\r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n const options = {\r\n headers: headers\r\n };\r\n\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarInstanciaEsquemaPorID/${id}/IncluirInstanciasAtributo`,options)\r\n\r\n\r\n }\r\n\r\n retornar_imagen(id_imagen:number): Observable{\r\n\r\n \r\n\r\n let token = localStorage.getItem('jwt_token')\r\n \r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n const options = {\r\n headers: headers,\r\n responseType: 'blob' as 'json'\r\n };\r\n\r\n return this.http.get(`${environment.URL_API}/Instancia/ObtenerArchivoInstanciaAtributo/${id_imagen}/GeoRaster`,options)\r\n\r\n }\r\n\r\n}\r\n\r\n\r\n","
\r\n \"Loading...\"\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n\r\n
Archivo
\r\n\r\n
Programación
\r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

Cargue o dibuje su area de interes. Extensiones permitidas: .geojson, .zip/shapefile\r\n Área: min 25 km2 - max 50 km2\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n\r\n \r\n\r\n
\r\n\r\n

Imágenes de archivo:

\r\n\r\n
\r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n \r\n
\r\n \r\n No aplica\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n

Modo imagen:

\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n

Cobertura de nubosidad - {{cobertura}}%

\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n

Rango de Fechas minimo 15 días

\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n

Cargue o dibuje su area de interes. Extensiones permitidas: .geojson, .zip/shapefile\r\n Área: min 25 km2 - max 50 km2\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n

Rango de Fechas minimo 15 días

\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n \r\n La fecha seleccionada debe ser posterior a hoy y con al menos 15 días de diferencia entre las fechas. \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n \r\n
\r\n \r\n\r\n
\r\n \r\n \r\n

\r\n Nombre:\r\n

\r\n\r\n {{item.Nombre}} \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n\r\n\r\n\r\n \r\n
\r\n\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n\r\n
\r\n\r\n \r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n

Lorem ipsum dolor sit amet.

\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n

Lorem ipsum dolor sit amet.

\r\n
\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n

Lorem ipsum dolor sit amet.

\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n \r\n \r\n\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n
\r\n\r\n\r\n
\r\n \r\n

{{imagen.tipoProducto}}

\r\n\r\n
\r\n\r\n
\r\n \"\"\r\n
\r\n \r\n
\r\n\r\n Nombre:\r\n \r\n {{imagen.nombre}}\r\n \r\n \r\n Fecha Adquisicion:\r\n \r\n {{imagen.fechaAdquisicion}}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \"\"\r\n
\r\n\r\n
\r\n \r\n \r\n {{imagen.propiedades.instruments}} - \r\n {{imagen.propiedades.item_type}}\r\n {{imagen.propiedades.constellation}}\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n\r\n Cloud cover:\r\n \r\n {{imagen.propiedades[\"eo:cloud_cover\"] | number: '1.0-0'}}\r\n {{imagen.propiedades.cc}}\r\n {{imagen.propiedades.cloud_percent}} \r\n {{imagen.propiedades.cloudCoverage}} \r\n \r\n
\r\n\r\n Fecha: \r\n \r\n {{imagen.propiedades.datetime | date:'yyyy-MM-dd'}}\r\n {{imagen.propiedades.time | date:'yyyy-MM-dd'}}\r\n {{imagen.propiedades.acquired | date:'yyyy-MM-dd'}}\r\n \r\n
\r\n\r\n GSD: \r\n \r\n {{imagen.propiedades.imageGsd | number: '1.2-2'}}\r\n {{imagen.propiedades.gsd | number: '1.2-2'}}\r\n {{imagen.propiedades[\"capella:resolution_ground_range\"]}}\r\n {{imagen.propiedades.resolution}}\r\n \r\n
\r\n\r\n ONA: \r\n \r\n {{imagen.propiedades.off_nadir_avg | number: '1.2-2'}}\r\n {{imagen.propiedades.ona | number: '1.2-2'}}\r\n {{imagen.propiedades.view_angle | number: '1.2-2'}}\r\n {{imagen.propiedades[\"sar:resolution_azimuth\"]}}\r\n {{imagen.propiedades.snowCover| number: '1.2-2'}}\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n {{imagen.propiedades.id}}\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n\r\n
\r\n\r\n

Manual de uso

\r\n\r\n \r\n\r\n \r\n\r\n

{{estado_cotizacion}}

\r\n\r\n
\r\n\r\n
\r\n
\r\n

Nombre -

\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n Tipo\r\n Imagen\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {{imagen.proveedor}}\r\n\r\n \r\n\r\n \r\n\r\n
\r\n
.
\r\n

Agregada

\r\n
\r\n \r\n
\r\n
{{imagen.estado}}
\r\n
\r\n\r\n \r\n\r\n\r\n\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n \r\n\r\n \r\n

{{mensaje_programacion}}

\r\n\r\n
\r\n\r\n
\r\n
\r\n

Nombre -

\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n\r\n \r\n \r\n Descripción\r\n Plataforma\r\n Unidad\r\n \r\n \r\n\r\n \r\n \r\n {{imagen.Descripcion}}\r\n {{imagen.Plataforma}}\r\n {{imagen.UnidadMedida}}\r\n \r\n\r\n \r\n\r\n \r\n\r\n
\r\n
.
\r\n

Agregado

\r\n
\r\n \r\n
\r\n
{{estadoErrorImagenaProgramar}}
\r\n \r\n
\r\n\r\n \r\n\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n
","import { Component, ChangeDetectorRef} from '@angular/core';\r\nimport Swal from 'sweetalert2'\r\nimport { BuscarImagenesService } from '../../services/buscar-imagenes.service';\r\nimport { EsquemasService } from 'src/app/auth/services/esquemas.service';\r\nimport { Esquemas } from 'src/app/models/esquema-permisos';\r\nimport { codigoInternoEsquemas } from 'src/environments/environment';\r\nimport { findIndex, map } from 'rxjs/operators';\r\nimport { AccionesGeograficasService } from '../../services/acciones-geograficas.service';\r\nimport { GenerarCotizacionService } from '../../services/generar-cotizacion.service';\r\nimport * as toGeoJSON from '@tmcw/togeojson';\r\nimport * as JSZip from 'jszip';\r\nimport { BarraNavegacionComponent } from 'src/app/barra-navegacion/barra-navegacion.component';\r\nimport { ProgramacionDeImagenesService } from '../../services/programacion-de-imagenes.service';\r\nimport { retry } from 'rxjs/operators';\r\nimport { planarArea } from '@arcgis/core/geometry/geometryEngine';\r\nimport { BusquedaPoligonosGeoService } from '../../services/busqueda-poligonos-geo.service';\r\nimport { lngLatToXY } from '@arcgis/core/geometry/support/webMercatorUtils';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ControlErrorService } from '../../services/control-error.service';\r\n\r\n@Component({\r\n selector: 'app-busqueda-de-imagenes',\r\n templateUrl: './busqueda-de-imagenes.component.html',\r\n styleUrls: ['./busqueda-de-imagenes.component.css']\r\n})\r\nexport class BusquedaDeImagenesComponent {\r\n\r\n constructor(private busqueda: BuscarImagenesService, private esquemas:EsquemasService, private arcgis: AccionesGeograficasService, private cotizacion:GenerarCotizacionService, private programacioDeImagenes:ProgramacionDeImagenesService, private busquedaPoligonosGeoService:BusquedaPoligonosGeoService, private cdr: ChangeDetectorRef, private controlError: ControlErrorService){}\r\n\r\n loading = false;\r\n cargaArchivo = false\r\n pasarela = false\r\n cotizacion_input = false\r\n cotizacion_label = true\r\n ver_selector_cotizacion = false\r\n imagen_carga = true\r\n seguir_Agregando = false\r\n formularioVisible = true\r\n dialogo:any = false\r\n\r\n id_encaezado_cotizacion = ''\r\n cobertura:number = 20\r\n fecha_inicial = ''\r\n fecha_final = ''\r\n id_busqueda = '0'\r\n nombre_cotizacion = ''\r\n AOI = ''\r\n btn_guardar_cotizacion:any = ''\r\n estado_cotizacion = ''\r\n datosGeoJSON: any;\r\n\r\n listaDeImagenesParaCotizar:any[] = []\r\n grupos_de_imagenes:any = []\r\n plataformas:any = []\r\n imagenesEnElMapa:any = []\r\n rangeDates: Date[] | undefined;\r\n resoluciones_de_busqueda:any = []\r\n catalogoProgramacion:any = []\r\n\r\n catalogoSeleccionado:boolean = true\r\n programacionSeleccionado:boolean = false\r\n \r\n\r\n botonDeBusquedaTexto = 'Buscar'\r\n\r\n\r\n\r\n selectedOption: string = 'Archivo';\r\n\r\n opcionArchivo = true\r\n opcionProgramacion = false\r\n opcionOtros = false\r\n\r\n seleccionimagenesProgramacionCotizar:any = []\r\n dialogoProgramacion = false\r\n nombre_cotizacionProgramacion:string = ''\r\n nombreCotizacionProgramacion:string = ''\r\n mensaje_programacion:string = ''\r\n barraProgresoItemsProgramacion:boolean = true\r\n estadoErrorImagenaProgramar:string = ''\r\n barraProgresoImagenes = true\r\n progresoImagenes_count:string = ''\r\n PoligonosGeoNoEncontrados:boolean = false\r\n\r\n tipoDeBusqueda(e:any){\r\n\r\n this.seleccionimagenesProgramacionCotizar = []\r\n\r\n this.selectedOption = e.target.innerText;\r\n\r\n if(this.selectedOption=='Archivo'){\r\n this.consultaTipoDeProductosGeo()\r\n this.nuevaBusqueda()\r\n this.arcgis.cambiarTipoDeBusqueda('archivo')\r\n this.opcionArchivo = true\r\n this.opcionProgramacion = false\r\n this.opcionOtros = false\r\n }else if (this.selectedOption=='Programación'){\r\n this.nuevaBusqueda()\r\n this.arcgis.cambiarTipoDeBusqueda('programacion')\r\n this.catalogoProgramacion = []\r\n this.opcionArchivo = false\r\n this.opcionProgramacion = true\r\n this.opcionOtros = false\r\n this.barraProgresoItemsProgramacion = true\r\n\r\n this.programacioDeImagenes.consultaServiciosProfecionales().subscribe({\r\n \r\n next: (data: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n data.dato.forEach((element:any)=>{\r\n\r\n let dato = element.instanciasAtributo\r\n let filtroItemProgramacion = dato.CategoriaProducto.valor.opcionEnumeracionIdentificadorAplicado\r\n\r\n if (filtroItemProgramacion == 'Imágen Programación'){\r\n\r\n this.catalogoProgramacion.push({\r\n \"Nombre\":dato.Nombre.valor,\r\n \"Descripcion\": dato.Descripcion.valor,\r\n \"Plataforma\": dato.ConstelacionPlataforma.valor.opcionEnumeracionIdentificadorAplicado,\r\n \"UnidadMedida\": dato.UnidadMedida.valor.opcionEnumeracionIdentificadorAplicado,\r\n \"Categoria\": dato.CategoriaProducto.valor.opcionEnumeracionIdentificadorAplicado,\r\n \"ValorUnitario\": dato.ValorUnitario.valor,\r\n \"CantidadMinima\":dato.CantidadMinima.valor,\r\n \"CantidadMaxima\":dato.CantidadMaxima.valor,\r\n \"Id_referencia\":element.id,\r\n \"Estado\": \"En espera\"\r\n })\r\n\r\n }\r\n\r\n })\r\n\r\n // this.dialogoProgramacion = true\r\n\r\n if (this.catalogoProgramacion.length > 0) {\r\n this.barraProgresoItemsProgramacion = false\r\n }\r\n },\r\n error: (err: any) => {\r\n console.log(err);\r\n }\r\n\r\n \r\n })\r\n }else if(this.selectedOption=='Otros'){\r\n alert('Próximamente...')\r\n // document.getElementById('archivo')?.click()\r\n this.opcionArchivo = false\r\n this.opcionProgramacion = false\r\n this.opcionOtros = true\r\n }\r\n\r\n\r\n\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.loading = true;\r\n\r\n setTimeout(() => {\r\n this.obtenerCodigosEsquemas()\r\n this.loading = false;\r\n\r\n }, 2500);\r\n\r\n\r\n setTimeout(() => {\r\n\r\n if(this.loading){\r\n this.loading = false\r\n } \r\n this.consultaTipoDeProductosGeo()\r\n\r\n }, 2500);\r\n\r\n this.busqueda.progresoImagenes$.subscribe((estado: boolean) => {\r\n this.barraProgresoImagenes = estado;\r\n });\r\n\r\n this.busqueda.progresoImagenes_count_Subject$.subscribe((estado: string) => {\r\n this.progresoImagenes_count = estado;\r\n });\r\n\r\n }\r\n\r\n selector_proveedores(dat:any,e:any){\r\n dat.activo = e.checked\r\n }\r\n\r\n busqueda_por_resolucion(e: any) {\r\n const id = e.id;\r\n const checked = e.checked;\r\n\r\n if (checked) {\r\n if (!this.resoluciones_de_busqueda.includes(id)) {\r\n this.resoluciones_de_busqueda.push(id);\r\n }\r\n } else {\r\n const index = this.resoluciones_de_busqueda.indexOf(id);\r\n if (index > -1) {\r\n this.resoluciones_de_busqueda.splice(index, 1);\r\n }\r\n }\r\n\r\n }\r\n\r\n modificar_plataformas(nombres: string[], estado: boolean) {\r\n this.plataformas.forEach((i: any) => {\r\n if (nombres.includes(i.nombre)) {\r\n i.activo = estado;\r\n }\r\n });\r\n }\r\n\r\n leer_check_carga_archivo(){\r\n if(this.cargaArchivo){\r\n this.arcgis.remover_widget_sketch()\r\n }\r\n if(this.cargaArchivo==false){\r\n this.arcgis.agregar_widget_sketch()\r\n }\r\n }\r\n\r\n formateoNombre(){\r\n // console.log('El valor del input ha cambiado:', this.nombre_cotizacion);\r\n\r\n const expresionRegular = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;\r\n\r\n if(!expresionRegular.test(this.nombre_cotizacion)){\r\n this.nombre_cotizacion = this.nombre_cotizacion.replace(/[^a-zA-Z0-9_$]/g, '')\r\n }\r\n }\r\n\r\n obtenerCodigosEsquemas(){\r\n\r\n //Obtener codigos esquema busqueda \r\n\r\n let id_esquema = this.esquemas.obtener_Id_Esquema_Por_Nombre(codigoInternoEsquemas.busqueda_imagenes)\r\n\r\n if (id_esquema !== undefined) {\r\n\r\n let id = id_esquema.toString();\r\n\r\n this.esquemas.generar_codigos_por_Esquema(id).pipe(\r\n \r\n map((data:Esquemas[])=>{\r\n return data.map(item=>({\r\n id:item.id,\r\n codigoInterno:item.codigoInterno\r\n }))\r\n })\r\n \r\n ).subscribe({\r\n next:(data:any)=>{\r\n // this.controlError.mensajeDeError(data)\r\n let esquema_data = JSON.stringify(data)\r\n localStorage.setItem('esquema_busqueda_de_imagenes',esquema_data)\r\n\r\n },\r\n error:(response)=>{\r\n console.log(response)\r\n }\r\n })\r\n\r\n\r\n } else {\r\n console.error('No se pudo encontrar el esquema con el nombre especificado.');\r\n }\r\n\r\n //Obtener codigos esquema cotizacion\r\n\r\n let id_esquema_cotizacion = this.esquemas.obtener_Id_Esquema_Por_Nombre(codigoInternoEsquemas.cotizacion)\r\n\r\n if (id_esquema_cotizacion !== undefined) {\r\n\r\n let id = id_esquema_cotizacion.toString();\r\n\r\n this.esquemas.generar_codigos_por_Esquema(id).pipe(\r\n map((data:Esquemas[])=>{\r\n return data.map(item=>({\r\n id:item.id,\r\n codigoInterno:item.codigoInterno\r\n }))\r\n })\r\n ).subscribe({\r\n next:(data:any)=>{\r\n // this.controlError.mensajeDeError(data)\r\n let esquema_data = JSON.stringify(data)\r\n localStorage.setItem('esquema_cotizacion',esquema_data)\r\n },\r\n error:(response)=>{\r\n console.log(response)\r\n }\r\n })\r\n\r\n\r\n try {\r\n this.obtenerplataformas()\r\n } catch (error) {\r\n console.log(error);\r\n this.obtenerplataformas()\r\n }\r\n\r\n }\r\n\r\n\r\n //Obtener codigos esquemas cotizacion_imagen_archivo\r\n\r\n let id_imagen_cotizacion = this.esquemas.obtener_Id_Esquema_Por_Nombre(codigoInternoEsquemas.detalle_cotizacion)\r\n\r\n if (id_imagen_cotizacion !== undefined) {\r\n\r\n let id = id_imagen_cotizacion.toString();\r\n\r\n this.esquemas.generar_codigos_por_Esquema(id).pipe(\r\n map((data:Esquemas[])=>{\r\n return data.map(item=>({\r\n id:item.id,\r\n codigoInterno:item.codigoInterno\r\n }))\r\n })\r\n ).subscribe({\r\n next:(data:any)=>{\r\n // this.controlError.mensajeDeError(data)\r\n let esquema_data = JSON.stringify(data)\r\n localStorage.setItem('esquema_cotizacion_imagen_archivo',esquema_data)\r\n },\r\n error:(response)=>{\r\n console.log(response)\r\n }\r\n })\r\n \r\n\r\n }\r\n\r\n //Obtener codigos esquemas programacion de imagenes\r\n\r\n let detalleCotizacionImagenProgramacion = this.esquemas.obtener_Id_Esquema_Por_Nombre('DetalleCotizacionImagenProgramacion')\r\n\r\n if (detalleCotizacionImagenProgramacion !== undefined) {\r\n\r\n let id = detalleCotizacionImagenProgramacion.toString();\r\n\r\n this.esquemas.generar_codigos_por_Esquema(id).pipe(\r\n map((data:Esquemas[])=>{\r\n return data.map(item=>({\r\n id:item.id,\r\n codigoInterno:item.codigoInterno\r\n }))\r\n })\r\n ).subscribe({\r\n next:(data:any)=>{\r\n // this.controlError.mensajeDeError(data)\r\n let esquema_data = JSON.stringify(data)\r\n localStorage.setItem('detalleCotizacionImagenProgramacion',esquema_data)\r\n },\r\n error:(response)=>{\r\n console.log(response)\r\n }\r\n })\r\n \r\n\r\n }\r\n\r\n //Obtener codigos esquemas poligonos geo\r\n\r\n let detallePoligonosGeo = this.esquemas.obtener_Id_Esquema_Por_Nombre('BusquedaPoligonoGeografico')\r\n\r\n if (detallePoligonosGeo !== undefined) {\r\n\r\n let id = detallePoligonosGeo.toString();\r\n\r\n this.esquemas.generar_codigos_por_Esquema(id).pipe(\r\n map((data:Esquemas[])=>{\r\n return data.map(item=>({\r\n id:item.id,\r\n codigoInterno:item.codigoInterno\r\n }))\r\n })\r\n ).subscribe({\r\n next:(data:any)=>{\r\n // this.controlError.mensajeDeError(data)\r\n let esquema_data = JSON.stringify(data)\r\n localStorage.setItem('PoligonoGeografico',esquema_data)\r\n },\r\n error:(response)=>{\r\n console.log(response)\r\n }\r\n })\r\n \r\n\r\n }\r\n\r\n //Obtener codigos esquemas poligonos geo\r\n\r\n let detallePoligonosGeoCotizacion = this.esquemas.obtener_Id_Esquema_Por_Nombre('DetalleCotizacionPoligonoGeo')\r\n\r\n if (detallePoligonosGeoCotizacion !== undefined) {\r\n \r\n let id = detallePoligonosGeoCotizacion.toString();\r\n \r\n this.esquemas.generar_codigos_por_Esquema(id).pipe(\r\n map((data:Esquemas[])=>{\r\n return data.map(item=>({\r\n id:item.id,\r\n codigoInterno:item.codigoInterno\r\n }))\r\n })\r\n ).subscribe({\r\n next:(data:any)=>{\r\n // this.controlError.mensajeDeError(data)\r\n let esquema_data = JSON.stringify(data)\r\n localStorage.setItem('DetalleCotizacionPoligonoGeo',esquema_data)\r\n },\r\n error:(response)=>{\r\n console.log(response)\r\n }\r\n })\r\n \r\n \r\n }\r\n \r\n\r\n }\r\n\r\n obtenerplataformas(){\r\n this.plataformas = this.esquemas.obtener_pataformas()\r\n }\r\n\r\n nuevaBusqueda(){\r\n this.pasarela = false\r\n this.formularioVisible = true\r\n this.ver_selector_cotizacion = false\r\n this.AOI = ''\r\n this.cargaArchivo = false\r\n this.arcgis.limpiar_mapa()\r\n this.arcgis.agregar_widget_sketch()\r\n this.grupos_de_imagenes = []\r\n this.fecha_inicial = ''\r\n this.fecha_final = ''\r\n this.resoluciones_de_busqueda = []\r\n this.seleccionimagenesProgramacionCotizar = []\r\n this.loading = false\r\n this.estado_cotizacion = ''\r\n this.listaDeImagenesParaCotizar = []\r\n this.dataProveedoresSinProcesar = []\r\n this.grupos_de_imagenes = []\r\n this.imagenesCargadas = []\r\n this.poligonosGeoEncontrados = []\r\n this.nombreCotizacionProgramacion = ''\r\n this.PoligonosGeoNoEncontrados = false\r\n }\r\n\r\n nuevaBusquedaSinEliminarParametros(){\r\n this.pasarela = false\r\n this.formularioVisible = true\r\n this.ver_selector_cotizacion = false\r\n this.cargaArchivo = false\r\n this.arcgis.agregar_widget_sketch()\r\n this.resoluciones_de_busqueda = []\r\n this.seleccionimagenesProgramacionCotizar = []\r\n this.loading = false\r\n this.estado_cotizacion = ''\r\n this.listaDeImagenesParaCotizar = []\r\n this.dataProveedoresSinProcesar = []\r\n this.grupos_de_imagenes = []\r\n this.imagenesCargadas = []\r\n this.poligonosGeoEncontrados = []\r\n this.PoligonosGeoNoEncontrados = false\r\n }\r\n\r\n busquedaimagenes(){\r\n\r\n this.nombreCotizacionProgramacion = `Cot_${this.programacioDeImagenes.generarCadenaAleatoria()}`\r\n\r\n this.obtenerplataformas()\r\n\r\n this.listaDeImagenesParaCotizar = []\r\n this.estado_cotizacion = ''\r\n this.barraProgresoImagenes = true\r\n this.progresoImagenes_count = ''\r\n\r\n this.AOI = this.arcgis.get_coord_aoi()\r\n\r\n if(this.cargaArchivo == true ){\r\n console.log('leyendo desde el file input');\r\n }\r\n \r\n let f_inicial = this.fecha_inicial\r\n let f_final = this.fecha_final\r\n let c_nubosidad = this.cobertura.toString()\r\n\r\n\r\n if(this.catalogoSeleccionado || this.programacionSeleccionado ){\r\n // console.log('ok');\r\n }else{\r\n this.alerta('seleccione el tipo de busqueda','warning')\r\n return\r\n }\r\n\r\n\r\n if(this.AOI== undefined ){\r\n this.alerta('seleccione un area de interés','warning')\r\n return\r\n }\r\n\r\n if(f_inicial == '' || f_final == ''){\r\n this.alerta('complete las fechas de adquisicion','warning')\r\n return\r\n }\r\n\r\n this.loading = true\r\n\r\n //Verificar productos seleccionados\r\n \r\n if(this.resoluciones_de_busqueda.length > 0){\r\n\r\n this.busqueda.busqueda(this.AOI,f_inicial,f_final,c_nubosidad,this.plataformas,this.resoluciones_de_busqueda).subscribe({\r\n\r\n next:(data:any)=>{\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n if(data.exitoso == true){\r\n this.id_busqueda = data.dato\r\n this.cotizacion.agregar_id_de_busqueda(this.id_busqueda)\r\n this.generacionTarjetas(this.id_busqueda)\r\n }else{\r\n console.log(data);\r\n this.nuevaBusquedaSinEliminarParametros()\r\n }\r\n },\r\n error:(res)=>{\r\n console.log(res)\r\n Swal.fire({\r\n text: 'Algo salió mal. Por favor, intente realizar la búsqueda nuevamente.',\r\n showDenyButton: false,\r\n showCancelButton: false,\r\n confirmButtonText: \"Ok\",\r\n backdrop: `rgba(0,0,0,0.5)`,\r\n }).then((result) => {\r\n \r\n if (result.isConfirmed) {\r\n \r\n this.nuevaBusquedaSinEliminarParametros()\r\n }\r\n \r\n });\r\n },\r\n complete: () => {\r\n this.pasarela = true\r\n this.formularioVisible = false\r\n this.loading = false; \r\n }\r\n\r\n })\r\n \r\n }else{\r\n console.log('No se seleccionó imágenes de archivo.');\r\n }\r\n\r\n if (this.productosGeo.getValue().every(item => item.seleccionado === false)) {\r\n console.log('No se seleccionó Poligonos GEO.')\r\n } else if (this.productosGeo.getValue().some(item => item.seleccionado === true)) {\r\n // this.busquedaPoligonosGeo()\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n dataProveedoresSinProcesar:any = []\r\n\r\n generacionTarjetas(id_busqueda:string){\r\n\r\n this.obtenerplataformas()\r\n\r\n let num = Math.random().toString(36).substring(2, 10);\r\n this.nombre_cotizacion = `Cot_${num}`\r\n \r\n this.cotizacion.agregar_id_de_busqueda(id_busqueda)\r\n\r\n this.loading = true; \r\n this.pasarela = true\r\n this.formularioVisible = false\r\n \r\n this.busqueda.consulta_imagenes(id_busqueda).pipe(\r\n retry(5)\r\n ).subscribe({\r\n \r\n next:(data:any)=>{\r\n \r\n this.controlError.mensajeDeError(data)\r\n\r\n if(data.exitoso){\r\n\r\n this.plataformas.forEach((grupo:any,index:number)=>{\r\n\r\n let datos = data.dato.instanciasAtributo\r\n let proveedor = grupo.codigoInterno\r\n let imagenes = datos[proveedor]\r\n\r\n\r\n //Todo: Refactorizacion:\r\n\r\n if(imagenes == null){\r\n // console.log(`${proveedor} : sin imagenes`);\r\n }else{\r\n\r\n this.dataProveedoresSinProcesar.push({\r\n proveedor: proveedor,\r\n imagenes: imagenes\r\n })\r\n\r\n }\r\n })\r\n\r\n this.cargarImagenes()\r\n\r\n this.visualizarPasarela()\r\n\r\n }\r\n\r\n },\r\n error:(error)=>{\r\n\r\n console.log(error)\r\n\r\n Swal.fire({\r\n text: 'Algo salió mal. Por favor, intente realizar la búsqueda nuevamente.',\r\n showDenyButton: false,\r\n showCancelButton: false,\r\n confirmButtonText: \"Ok\",\r\n backdrop: `rgba(0,0,0,0.5)`,\r\n }).then((result) => {\r\n \r\n if (result.isConfirmed) {\r\n\r\n this.pasarela = false\r\n this.formularioVisible = true\r\n this.ver_selector_cotizacion = false\r\n this.cargaArchivo = false\r\n this.grupos_de_imagenes = []\r\n this.loading = false\r\n\r\n }\r\n\r\n });\r\n },\r\n complete:()=>{\r\n this.loading = false; \r\n }\r\n })\r\n }\r\n\r\n visualizarPasarela(){\r\n this.ver_selector_cotizacion = true\r\n }\r\n\r\n cargarImagenes(){\r\n this.total_imagenes_por_proveedor = \"...\"\r\n\r\n this.imagenesCargadas = []\r\n\r\n this.plataformas.forEach((element:any, index:any) => {\r\n\r\n let dat = this.dataProveedoresSinProcesar.find( (i:any) => i.proveedor == element.codigoInterno )\r\n \r\n\r\n if(dat == undefined){\r\n\r\n console.log(`${element.codigoInterno} - sin imagenes`);\r\n\r\n }else{\r\n this.grupos_de_imagenes.push(\r\n {\r\n longitud: dat.imagenes.length,\r\n proveedor: element.nombre,\r\n imagenes: this.busqueda.procesarDataDeImagenes(dat.imagenes,element.nombre)\r\n }\r\n\r\n )\r\n }\r\n\r\n });\r\n\r\n // console.log(this.grupos_de_imagenes);\r\n \r\n }\r\n\r\n imagenesCargadas:any = []\r\n total_imagenes_por_proveedor:string = \"...\"\r\n\r\n cargarMasImagenes(provedor:string){\r\n\r\n let cont = 0\r\n\r\n let proveedor_sin_procesar = this.dataProveedoresSinProcesar.find( (i:any) => i.proveedor == `Imagenes${provedor}`)\r\n\r\n const proveedor = this.grupos_de_imagenes.find((i:any)=> i.proveedor === provedor)\r\n\r\n let imagenes_cargadas = proveedor.imagenes\r\n\r\n imagenes_cargadas.forEach((i:any)=>{\r\n this.imagenesCargadas.push(i.identificador)\r\n })\r\n\r\n proveedor_sin_procesar.imagenes.forEach((data:any, index:number)=>{\r\n\r\n if(cont >= 3){\r\n return\r\n }\r\n\r\n\r\n let cord = data.valor.coordenadas2D\r\n let dat = data.valor.propiedades\r\n let propiedades = dat\r\n let indetificador_tarjeta = data.valor.imagenId\r\n let preview = data.valor.imageUrl\r\n let id = data.id\r\n\r\n if(this.imagenesCargadas.includes(id)){\r\n // console.log(\"imagen ya cargada\");\r\n return\r\n }\r\n\r\n // console.log(preview);\r\n\r\n const imagen = {\r\n identificador:id,\r\n nombre:provedor,\r\n proveedor:provedor,\r\n url: preview,\r\n id_tarjeta: `id_${indetificador_tarjeta}`,\r\n nombreArchivoOriginal: data.valor.nombreArchivoOriginal,\r\n propiedades: propiedades,\r\n bBoxLongitudMin: data.valor.bBoxLongitudMin,\r\n bBoxLatitudMin: data.valor.bBoxLatitudMin,\r\n bBoxLongitudMax: data.valor.bBoxLongitudMax,\r\n bBoxLatitudMax: data.valor.bBoxLatitudMax,\r\n referenciaEspacial: data.valor.referenciaEspacial,\r\n coordenadas2D: cord\r\n } \r\n\r\n if(preview == null){\r\n\r\n this.busqueda.retornar_imagen(id).pipe(\r\n retry(3)\r\n ).subscribe({\r\n next:(imagenBlob: Blob)=>{\r\n\r\n\r\n\r\n // this.busqueda.comprimirImagen(imagenBlob, 0.5).then((imageUrl) => {\r\n // imagen.url = imageUrl;\r\n // });\r\n\r\n const imageUrl = URL.createObjectURL(imagenBlob);\r\n imagen.url = imageUrl;\r\n\r\n },\r\n error:(res)=>{\r\n console.log(res);\r\n }\r\n })\r\n }\r\n\r\n proveedor.imagenes.push(imagen)\r\n cont++\r\n \r\n })\r\n // console.log(this.grupos_de_imagenes);\r\n }\r\n\r\n agregarPoligonoAlMapa(data:any){\r\n let cord = data.coordenadas2D\r\n let coordArcgis:any = []\r\n let id = data.propiedades.id\r\n\r\n //formatear corrdenadas\r\n cord.forEach((e:any)=> {\r\n coordArcgis.push([e.longitud,e.latitud])\r\n });\r\n\r\n this.arcgis.agregar_poligono_planet(coordArcgis,id)\r\n\r\n }\r\n\r\n borrarPoligonoDelMapa(data:any){\r\n let id = data.propiedades.id\r\n this.arcgis.eliminar_pligono_planet(id)\r\n }\r\n\r\n agregarImagenAlMapa(data:any,){\r\n\r\n let id = data.id_tarjeta\r\n let id_tarjeta = id\r\n let nombre = data.nombre\r\n\r\n if(nombre == undefined){\r\n nombre = data.id_tarjeta\r\n }\r\n \r\n\r\n let proveedor = data.proveedor\r\n let tarjeta = document.getElementById(id_tarjeta);\r\n\r\n if (tarjeta) {\r\n tarjeta.style.backgroundColor = '#e2ebf7';\r\n }\r\n\r\n let x_min = data.bBoxLongitudMin\r\n let y_min = data.bBoxLatitudMin\r\n let x_max = data.bBoxLongitudMax\r\n let y_max = data.bBoxLatitudMax\r\n let url = data.url\r\n\r\n // console.log(id);\r\n \r\n if(this.imagenesEnElMapa.includes(id)){\r\n return\r\n }else{\r\n this.imagenesEnElMapa.push(id)\r\n this.arcgis.agregar_imagen_planet(id,x_min,y_min,x_max,y_max,url,proveedor,nombre)\r\n\r\n }\r\n\r\n }\r\n\r\n eliminarImagenDelMapa(id:string,data:any){\r\n\r\n\r\n let id_tarjeta = data.id_tarjeta\r\n\r\n let tarjeta = document.getElementById(id_tarjeta);\r\n\r\n if (tarjeta) {\r\n tarjeta.style.backgroundColor = '#f9fafb';\r\n }\r\n\r\n const index = this.imagenesEnElMapa.indexOf(`id_${id}`); \r\n\r\n if (index !== -1) {\r\n this.imagenesEnElMapa.splice(index, 1);\r\n }\r\n\r\n this.arcgis.eliminar_imagen_planet(`id_${id}`)\r\n\r\n }\r\n\r\n get_file(event:any,tipo:any){\r\n\r\n // archivo\r\n // programacion\r\n \r\n\r\n let aoi_file = ''\r\n\r\n \r\n let archivoSeleccionado = event.target.files[0];\r\n let nombre = event.target.files[0].name\r\n let extencion = nombre.split('.').pop()\r\n\r\n if (archivoSeleccionado) {\r\n\r\n if(extencion == 'geojson' || extencion == 'GEOJSON' ){\r\n\r\n const archivoSeleccionado = event.target.files[0]\r\n const lector = new FileReader();\r\n\r\n lector.onload = (e: any) => {\r\n const contenido = e.target.result;\r\n this.datosGeoJSON = JSON.parse(contenido);\r\n let coor = this.datosGeoJSON.features[0].geometry.coordinates\r\n this.arcgis.aoi_file(coor,tipo)\r\n\r\n aoi_file = coor\r\n this.arcgis.modificarMedida(coor,tipo)\r\n\r\n };\r\n\r\n lector.readAsText(archivoSeleccionado);\r\n }else if(extencion == 'kml' || extencion == 'KML'){\r\n\r\n const archivoSeleccionado = event.target.files[0]\r\n const lector = new FileReader();\r\n\r\n lector.onload = (e: any) => {\r\n const contenido = e.target.result;\r\n this.datosGeoJSON = new DOMParser().parseFromString(contenido, 'text/html');\r\n let geojson = toGeoJSON.kml(this.datosGeoJSON)\r\n // console.log(geojson);\r\n // this.arcgis.aoi_file(coor)\r\n // aoi_file = coor\r\n };\r\n\r\n lector.readAsText(archivoSeleccionado);\r\n\r\n }else if(extencion == 'zip' || extencion == 'ZIP'){\r\n\r\n // console.log('zip archivo');\r\n\r\n const archivoSeleccionado = event.target.files[0];\r\n const lector = new FileReader();\r\n\r\n lector.onload = async (e:any) => {\r\n const arrayBuffer = e.target.result;\r\n const zip = new JSZip();\r\n try {\r\n const zipFile = await zip.loadAsync(arrayBuffer);\r\n for (const [relativePath, file] of Object.entries(zipFile.files)) {\r\n if (relativePath.toLowerCase().endsWith('.shp')) {\r\n const contenido = await file.async('arraybuffer');\r\n \r\n const shapefile = require('shapefile');\r\n const shapes = await shapefile.open(contenido);\r\n let result;\r\n while (!(result = await shapes.read()).done) {\r\n let coor = result.value.geometry.coordinates \r\n this.arcgis.aoi_file(coor,tipo)\r\n\r\n aoi_file = coor\r\n this.arcgis.modificarMedida(coor,tipo)\r\n }\r\n }\r\n }\r\n }catch (error) {\r\n console.error('Error al leer el archivo ZIP:', error);\r\n }\r\n\r\n }\r\n \r\n lector.readAsArrayBuffer(archivoSeleccionado);\r\n\r\n }else{\r\n this.alerta('Extensión no valida','error')\r\n }\r\n\r\n \r\n }\r\n\r\n this.AOI = aoi_file\r\n }\r\n\r\n obtenerCoordenadas(datosGeoJSON: any) {\r\n const features = datosGeoJSON.features || [];\r\n\r\n features.forEach((feature: any, index: number) => {\r\n const coordenadas = feature.geometry.coordinates;\r\n // console.log(`Feature ${index + 1} - Coordenadas: ${coordenadas}`);\r\n });\r\n }\r\n\r\n btn_cotizacion(){\r\n this.cotizacion_label = false\r\n this.cotizacion_input = true\r\n }\r\n\r\n guardar_cotizacion(){\r\n\r\n // if(this.nombre_cotizacion==''){\r\n // this.alerta('Coloque un nombre a la cotizacion','warning')\r\n // return\r\n // }\r\n\r\n // if(this.barraProgresoImagenes){\r\n // this.alerta('Gracias por su paciencia. Espera unos segundos mientras cargan todas las imágenes para continuar.','info')\r\n // return\r\n // }\r\n\r\n const expresionRegular = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;\r\n\r\n if(!expresionRegular.test(this.nombre_cotizacion)){\r\n this.nombre_cotizacion = this.nombre_cotizacion.replace(/[^a-zA-Z0-9_$]/g, '')\r\n }\r\n\r\n //TODO: refactorizacion.\r\n\r\n this.dialogo = true\r\n\r\n }\r\n\r\n crearCotizacion(tipoCotizacion:string){\r\n\r\n // console.log(this.listaDeImagenesParaCotizar);\r\n\r\n // this.nombreCotizacionProgramacion = `Cot_${this.programacioDeImagenes.generarCadenaAleatoria()}`\r\n\r\n this.loading = true;\r\n\r\n if(tipoCotizacion=='archivo'){\r\n\r\n if(this.listaDeImagenesParaCotizar.length < 1){\r\n this.estado_cotizacion = \"Por favor, seleccione al menos una imagen para continuar con la cotización.\"\r\n this.loading = false\r\n return\r\n }\r\n\r\n if(this.seguir_Agregando){\r\n this.cotizacion.agregar_id_cotizacion(this.id_encaezado_cotizacion)\r\n this.guardarImagenesEnCotizacion()\r\n this.seguir_Agregando = false\r\n this.btn_guardar_cotizacion = document.getElementById('btn_guardar_cotizacion')\r\n this.btn_guardar_cotizacion.disabled = true\r\n return\r\n }\r\n \r\n this.cotizacion.agregar_nombre_a_cotizacion(this.nombre_cotizacion)\r\n \r\n this.cotizacion.crear_cotizacion().pipe(\r\n retry(3)\r\n ).subscribe({\r\n \r\n next:(data:any)=>{\r\n\r\n console.log(data);\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n if(data.exitoso){\r\n let exitoso:boolean = data.exitoso\r\n this.id_encaezado_cotizacion = (data.dato)\r\n this.cotizacion.agregar_id_cotizacion(data.dato)\r\n this.estado_cotizacion = `Cotización creada - ${this.id_encaezado_cotizacion}`\r\n this.btn_guardar_cotizacion = document.getElementById('btn_guardar_cotizacion')\r\n this.btn_guardar_cotizacion.disabled = true\r\n\r\n if(exitoso){\r\n this.guardarImagenesEnCotizacion()\r\n }\r\n\r\n }else{\r\n let mensaje = data.mensajes[0]\r\n this.estado_cotizacion = `error al crear, intente nuevamente`\r\n this.loading = false;\r\n // this.btn_guardar_cotizacion.disabled = false\r\n }\r\n \r\n },\r\n error:(err)=>{\r\n console.log(err)\r\n\r\n this.estado_cotizacion = \"error al crear, intente nuevamente\"\r\n this.loading = false;\r\n\r\n }\r\n \r\n })\r\n\r\n }else if(tipoCotizacion == 'programacion'){\r\n\r\n \r\n if(this.seleccionimagenesProgramacionCotizar.length === 0 ){\r\n alert('Seleccione al menos un item ')\r\n this.loading = false\r\n return\r\n }\r\n\r\n //Validaciones\r\n\r\n let nombre = this.nombreCotizacionProgramacion\r\n let f_inicial = this.fecha_inicial\r\n let f_final = this.fecha_final\r\n let poligono = this.arcgis.get_coord_aoi()\r\n\r\n let hoy = new Date()\r\n hoy.setHours(0, 0, 0, 0); \r\n\r\n let fechaInicialDate = new Date(f_inicial)\r\n fechaInicialDate.setHours(0, 0, 0, 0); \r\n\r\n if (fechaInicialDate < hoy) {\r\n alert('La fecha inicial debe ser mayor a hoy.');\r\n this.loading = false\r\n return;\r\n }\r\n\r\n let diferencia_inicial_final = this.calculateDateDiff(f_inicial,f_final)\r\n\r\n if(diferencia_inicial_final < 15){\r\n this.alerta('La diferencia entre las fechas debe ser mayor a 15 días.','warning')\r\n this.loading = false\r\n return\r\n }\r\n\r\n if(poligono == undefined){\r\n this.alerta('Agruegue AOI','warning')\r\n this.loading = false\r\n return\r\n }\r\n\r\n if(f_inicial == '' || this.fecha_final == ''){\r\n this.alerta('Complete el rango de fechas','warning')\r\n this.loading = false\r\n return\r\n }\r\n\r\n\r\n this.programacioDeImagenes.cotizacion_programar_Imagen(nombre).subscribe({\r\n next:(data:any)=>{\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n if(data.exitoso){\r\n let id = data.dato\r\n this.estado_cotizacion = `Cotización creada - ${id}`\r\n \r\n let listado = this.seleccionimagenesProgramacionCotizar\r\n \r\n listado.forEach((item:any)=>{\r\n \r\n item.estado = \"procesando\"\r\n \r\n let id_referencia = item.Id_CodigoReferencia\r\n \r\n this.programacioDeImagenes.programar_Imagen(id,f_inicial,f_final,poligono,id_referencia).subscribe({\r\n next:(data:any)=>{\r\n this.controlError.mensajeDeError(data)\r\n if(data.exitoso){\r\n item.estado = 'imagen agregada'\r\n this.loading = false;\r\n this.mensaje_programacion = 'Se creo ítem de cotización para programación de imágenes'\r\n }else{\r\n this.loading = false;\r\n item.estado = 'Error'\r\n }\r\n\r\n },\r\n error:(err)=>{\r\n \r\n console.log(err.error.mensajes[0]);\r\n this.estadoErrorImagenaProgramar = err.error.mensajes[0]\r\n item.estado = 'Error'\r\n this.loading = false;\r\n this.nombreCotizacionProgramacion = `Cot_${this.programacioDeImagenes.generarCadenaAleatoria()}`\r\n \r\n }\r\n })\r\n \r\n })\r\n \r\n \r\n }else{\r\n this.loading = false;\r\n }\r\n\r\n\r\n\r\n },\r\n error:(err)=>{\r\n console.log(err)\r\n this.nombreCotizacionProgramacion = `Cot_${this.programacioDeImagenes.generarCadenaAleatoria()}`\r\n }\r\n })\r\n\r\n\r\n }else{\r\n alert('Tipo de cotización desconocida')\r\n\r\n }\r\n \r\n }\r\n\r\n guardarImagenesEnCotizacion(){\r\n\r\n if(this.nombre_cotizacion==''){\r\n this.alerta('Coloque un nombre a la cotizacion','warning')\r\n return\r\n }\r\n\r\n const expresionRegular = /^[a-zA-Z_$][a-zA-Z_$]*$/;\r\n\r\n if(!expresionRegular.test(this.nombre_cotizacion)){\r\n this.nombre_cotizacion = this.nombre_cotizacion.replace(/[^a-zA-Z0-9_$]/g, '')\r\n }\r\n\r\n\r\n this.listaDeImagenesParaCotizar.forEach((i)=>{\r\n\r\n if (i.estado == 'Agregada'){\r\n // console.log('imagen saltada');\r\n }else{\r\n\r\n i.estado = 'procesando'\r\n this.loading = false;\r\n\r\n this.cotizacion.añadir_imagenes_a_cotizacion(i.id,i.proveedor).pipe(\r\n retry(3) // Intenta hasta 3 veces\r\n ).subscribe({\r\n next:(data:any)=>{\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n if(data.exitoso){\r\n\r\n i.estado = 'Agregada'\r\n this.loading = false;\r\n\r\n }else{\r\n console.log(data);\r\n this.loading = false;\r\n i.estado = 'Algo salió mal, intenta cargar la imagen nuevamente.'\r\n this.btn_guardar_cotizacion.disabled = false\r\n }\r\n \r\n },\r\n error:(res)=>{\r\n console.log(res)\r\n i.estado = 'Algo salió mal, intenta cargar la imagen nuevamente.'\r\n this.loading = false;\r\n this.btn_guardar_cotizacion.disabled = false\r\n }\r\n })\r\n }\r\n \r\n this.loading = false;\r\n\r\n })\r\n \r\n }\r\n\r\n agregarImagenParaCotizar(data:any){\r\n\r\n // console.log(data.proveedor);\r\n\r\n if(data.proveedor == 'PlanetSkySat'){\r\n this.alerta('Imagen temporalmente no disponible','error')\r\n return\r\n }\r\n\r\n\r\n let id_tarjeta = data.id_tarjeta\r\n\r\n let tarjeta = document.getElementById(id_tarjeta);\r\n if (tarjeta) {\r\n tarjeta.style.backgroundColor = '#fde8e1';\r\n }\r\n\r\n // console.log(data);\r\n\r\n let id_imagen = ''\r\n \r\n if(data.proveedor === 'OMEO'){\r\n id_imagen = data.propiedades.sceneId\r\n }else if(data.proveedor == 'Otros Productos'){\r\n id_imagen = data.id_imagen\r\n }else{\r\n id_imagen = data.propiedades.id\r\n }\r\n\r\n\r\n if(this.listaDeImagenesParaCotizar.some(imagen => imagen.id === id_imagen)){\r\n this.alerta(`Ya agrego esta imagen`,'error')\r\n return\r\n }else{\r\n\r\n this.listaDeImagenesParaCotizar.push({\r\n id: id_imagen,\r\n url: data.url,\r\n nombre:data.nombre,\r\n proveedor:data.proveedor,\r\n estado: 'En espera'\r\n })\r\n \r\n this.alerta(`Imagen ${id_imagen} agregada`,'success')\r\n }\r\n \r\n }\r\n\r\n eliminar_cotizacion(){\r\n this.loading = false\r\n this.cotizacion_label = true\r\n this.cotizacion_input = false\r\n this.listaDeImagenesParaCotizar = []\r\n this.alerta('Cotización cancelada','success')\r\n // this.nuevaBusqueda()\r\n }\r\n\r\n eliminar_imagen_de_cotizacion(arreglo:any,id:any){\r\n const indice = arreglo.findIndex((elemento:any) => elemento.id === id);\r\n arreglo.splice(indice,1)\r\n }\r\n\r\n seguirAgregando(){\r\n this.dialogo = false\r\n this.seguir_Agregando = true\r\n this.btn_guardar_cotizacion = document.getElementById('btn_guardar_cotizacion')\r\n this.btn_guardar_cotizacion.disabled = false\r\n \r\n }\r\n\r\n finalizarCotizacion(){\r\n this.dialogo = false\r\n this.seguir_Agregando = false\r\n this.id_encaezado_cotizacion = ''\r\n this.btn_guardar_cotizacion = document.getElementById('btn_guardar_cotizacion')\r\n this.btn_guardar_cotizacion.disabled = false\r\n this.listaDeImagenesParaCotizar = []\r\n this.grupos_de_imagenes = []\r\n this.nuevaBusqueda()\r\n }\r\n\r\n alerta(text:string,icono:any){\r\n Swal.fire({\r\n title: text,\r\n icon:icono,\r\n timer: 3000,\r\n toast: true,\r\n showConfirmButton: false,\r\n })\r\n \r\n }\r\n\r\n alertaBusqueda(text:string){\r\n Swal.fire({\r\n title:`${text}...`,\r\n timer: 7000,\r\n toast: true,\r\n showConfirmButton: false,\r\n background: 'rgba(0,0,0,0)',\r\n })\r\n \r\n }\r\n\r\n mostrar_metadatos(data:any){\r\n\r\n const jsonString = JSON.stringify(data, null, 2);\r\n\r\n Swal.fire({\r\n title: 'Metadata',\r\n html: '
' + jsonString + '
',\r\n confirmButtonText: 'Cerrar'\r\n });\r\n }\r\n\r\n modoImagen = 'Unica'\r\n\r\n calculateDateDiff(fechaIni: string, fechaFin?: string){\r\n let currentDate = new Date();\r\n const dateSent = new Date(fechaIni);\r\n\r\n if(fechaFin){\r\n currentDate = new Date(fechaFin);\r\n }\r\n \r\n return Math.floor((Date.UTC(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()) - Date.UTC(dateSent.getFullYear(), dateSent.getMonth(), dateSent.getDate()) ) /(1000 * 60 * 60 * 24));\r\n }\r\n\r\n modoImagenProgramacion(e:any){\r\n\r\n let btn_unica = document.getElementById('Unica')\r\n let btn_stereo = document.getElementById('Stereo')\r\n let btn_triStereo = document.getElementById('TriStereo')\r\n\r\n if (!btn_unica) return;\r\n if (!btn_stereo) return;\r\n if (!btn_triStereo) return;\r\n\r\n //! Unica\r\n\r\n if(e.id === 'Unica'){\r\n\r\n this.modoImagen = 'Unica'\r\n\r\n btn_unica.style.backgroundColor = '#006db0'\r\n btn_unica.style.color = '#fff'\r\n\r\n btn_stereo.style.backgroundColor = '#fff'\r\n btn_stereo.style.color = '#333333'\r\n\r\n btn_triStereo.style.backgroundColor = '#fff'\r\n btn_triStereo.style.color = '#333333'\r\n\r\n }\r\n\r\n //! Stereo\r\n \r\n if (e.id === 'Stereo'){\r\n\r\n this.modoImagen = 'Stereo'\r\n\r\n btn_stereo.style.backgroundColor = '#006db0'\r\n btn_stereo.style.color = '#fff'\r\n\r\n btn_unica.style.backgroundColor = '#fff'\r\n btn_unica.style.color = '#333333'\r\n\r\n btn_triStereo.style.backgroundColor = '#fff'\r\n btn_triStereo.style.color = '#333333'\r\n\r\n }\r\n\r\n //! TriStereo\r\n\r\n if (e.id === 'TriStereo'){\r\n\r\n this.modoImagen = 'TriStereo'\r\n\r\n btn_triStereo.style.backgroundColor = '#006db0'\r\n btn_triStereo.style.color = '#fff'\r\n\r\n btn_unica.style.backgroundColor = '#fff'\r\n btn_unica.style.color = '#333333'\r\n\r\n btn_stereo.style.backgroundColor = '#fff'\r\n btn_stereo.style.color = '#333333'\r\n\r\n }\r\n \r\n }\r\n\r\n agregarImageProgramacionaCotizacion(item:any){\r\n\r\n const expresionRegular = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;\r\n\r\n if(!expresionRegular.test(this.nombre_cotizacion)){\r\n this.nombre_cotizacionProgramacion = this.nombre_cotizacion.replace(/[^a-zA-Z0-9_$]/g, '')\r\n }\r\n\r\n const exists = this.seleccionimagenesProgramacionCotizar.some((imagen: any) =>\r\n imagen.Id_CodigoReferencia === item.Id_referencia\r\n );\r\n\r\n if (!exists) {\r\n this.seleccionimagenesProgramacionCotizar.push({\r\n \"Nombre\": item.Nombre,\r\n \"Descripcion\": item.Descripcion,\r\n \"Plataforma\": item.Plataforma,\r\n \"UnidadMedida\": item.UnidadMedida,\r\n \"ValorUnitario\": item.ValorUnitario,\r\n \"Id_CodigoReferencia\": item.Id_referencia,\r\n \"estado\": \"En espera\"\r\n });\r\n\r\n Swal.fire({\r\n title: 'El elemento agregado a cotización.',\r\n timer: 7000,\r\n icon: 'success',\r\n toast: true,\r\n position: 'top',\r\n showConfirmButton: false,\r\n })\r\n } else {\r\n Swal.fire({\r\n title: 'El elemento ya existe y no se puede agregar de nuevo.',\r\n timer: 7000,\r\n icon: 'error',\r\n toast: true,\r\n position: 'top',\r\n showConfirmButton: false,\r\n })\r\n }\r\n\r\n\r\n }\r\n\r\n verCotizacionImagenProgramcion(){\r\n this.nombreCotizacionProgramacion = `Prog_${this.programacioDeImagenes.generarCadenaAleatoria()}`\r\n this.dialogoProgramacion = true\r\n }\r\n\r\n finalizarCotizacion_programacion(){\r\n this.listaDeImagenesParaCotizar = []\r\n this.dialogoProgramacion = false\r\n this.nombre_cotizacionProgramacion = ''\r\n this.nombreCotizacionProgramacion = ''\r\n this.mensaje_programacion = ''\r\n this.nuevaBusqueda()\r\n document.getElementById('archivo')?.click()\r\n }\r\n\r\n infoImagenPrpgramacion(item:any){\r\n // console.log(item);\r\n\r\n Swal.fire({\r\n html: `\r\n \r\n
\r\n \r\n

\r\n Nombre:\r\n

\r\n\r\n ${item.Nombre}\r\n\r\n
\r\n\r\n

\r\n Descripción:\r\n

\r\n\r\n ${item.Descripcion}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n
PlataformaUnidadValor unitarioMínimoMáximo
${item.Plataforma}${item.UnidadMedida}${item.ValorUnitario}${item.CantidadMinima}${item.CantidadMaxima}
\r\n
\r\n\r\n
\r\n\r\n `,\r\n confirmButtonText: 'Cerrar'\r\n });\r\n\r\n \r\n }\r\n\r\n busquedaPoligonosGeo(){\r\n \r\n this.AOI = this.arcgis.get_coord_aoi()\r\n this.busquedaPoligonosGeoService.busquedaPoligonosGeo(this.AOI,this.fecha_inicial,this.fecha_final,this.productosGeo).subscribe({\r\n\r\n next:(data:any)=>{\r\n // this.controlError.mensajeDeError(data)\r\n if(data.exitoso){\r\n this.ConsultaPoligonosGeo(data.dato)\r\n this.barraProgresoImagenes = false\r\n }else{\r\n\r\n if(this.resoluciones_de_busqueda.length == 0){\r\n this.alerta(\"No se encontraron 'Otros productos' con los parámetros suministrados.\",'warning')\r\n this.loading = false;\r\n this.PoligonosGeoNoEncontrados = false \r\n }else{\r\n this.PoligonosGeoNoEncontrados = true\r\n }\r\n\r\n }\r\n \r\n },\r\n error:(res)=>{\r\n console.log(res)\r\n this.barraProgresoImagenes = false\r\n }\r\n })\r\n }\r\n\r\n productosGeo = new BehaviorSubject([]);\r\n\r\n consultaTipoDeProductosGeo(){\r\n\r\n if(this.productosGeo.getValue().length > 0){\r\n console.log('productos cargados');\r\n return\r\n }\r\n\r\n this.busquedaPoligonosGeoService.consultarTipoProducto().pipe(\r\n retry(5)\r\n ).subscribe({\r\n\r\n next:(data:any)=>{\r\n // this.controlError.mensajeDeError(data)\r\n let dataEsquemaProductosGeo = data.dato.atributos\r\n let TipoDeProductos = dataEsquemaProductosGeo.filter((item:any) => item.codigoInterno === \"TipoProducto\");\r\n\r\n const productos = TipoDeProductos[0].atributoEnumeracion.opcionesEnumeracion.map((i: any) => ({\r\n id: i.id,\r\n identificador: i.identificador,\r\n seleccionado: true,\r\n }));\r\n\r\n // Emitir los datos procesados al BehaviorSubject una sola vez\r\n this.productosGeo.next(productos);\r\n\r\n this.cdr.detectChanges();\r\n },\r\n error:(res)=>{\r\n console.log(res)\r\n },\r\n complete: () => {\r\n // console.log('termine');\r\n }\r\n })\r\n }\r\n\r\n selectorProductoGeo(e:any,id:any){\r\n let productoSeleccionado = this.productosGeo.getValue().filter((item:any)=>item.id === id)\r\n productoSeleccionado[0].seleccionado = e.checked\r\n }\r\n\r\n poligonosGeoEncontrados:any = []\r\n\r\n ConsultaPoligonosGeo(id:any){\r\n \r\n this.cotizacion.agregar_id_de_busqueda_polignoGeo(id)\r\n\r\n this.busquedaPoligonosGeoService.consultaProductos(id).subscribe({\r\n \r\n next:(data:any)=>{\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n let datosEncontrados = data.dato.instanciasAtributo.PoligonosGeograficos\r\n\r\n datosEncontrados.forEach((i:any)=>{\r\n\r\n this.busquedaPoligonosGeoService.consultaProductos(i.valor.tipoInstanciaEsquemaID).pipe(\r\n retry(5)\r\n ).subscribe({\r\n \r\n next:(data:any)=>{\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n let info = data.dato\r\n \r\n let id_imagen = info.instanciasAtributo.Preview.id\r\n let url_imagen_ok \r\n\r\n this.busquedaPoligonosGeoService.retornar_imagen(id_imagen).pipe(\r\n retry(3)\r\n ).subscribe({\r\n next:(imagenBlob: Blob)=>{\r\n\r\n try{\r\n const imageUrl = URL.createObjectURL(imagenBlob);\r\n url_imagen_ok = imageUrl;\r\n }catch{\r\n url_imagen_ok = './assets/image.jpg';\r\n }\r\n\r\n\r\n this.poligonosGeoEncontrados.push(\r\n {\r\n proveedor: 'Otros Productos',\r\n nombre:info.nombre,\r\n tipoProducto: info.instanciasAtributo.TipoProducto.valor.opcionEnumeracionIdentificadorAplicado,\r\n id_imagen:info.id,\r\n id_proveedor:info.instanciasAtributo.Preview.valor.imagenId,\r\n url: url_imagen_ok,\r\n propiedades:info.instanciasAtributo.Preview.valor,\r\n fechaAdquisicion:info.instanciasAtributo.FechaAdquisicion.valor,\r\n identificador:info.nombre,\r\n id_tarjeta: `id_${info.id}`,\r\n bBoxLongitudMin: info.instanciasAtributo.Preview.valor.bBoxLongitudMin,\r\n bBoxLatitudMin: info.instanciasAtributo.Preview.valor.bBoxLatitudMin,\r\n bBoxLongitudMax: info.instanciasAtributo.Preview.valor.bBoxLongitudMax,\r\n bBoxLatitudMax: info.instanciasAtributo.Preview.valor.bBoxLatitudMax,\r\n coordenadas2D: info.instanciasAtributo.Preview.valor.coordenadas2D\r\n }\r\n )\r\n\r\n },\r\n error:(res)=>{\r\n console.log(res);\r\n }\r\n })\r\n\r\n\r\n },\r\n error:(error)=>{\r\n console.log(error);\r\n }\r\n\r\n })\r\n\r\n })\r\n \r\n this.grupos_de_imagenes.push({\r\n longitud: datosEncontrados.length,\r\n proveedor: 'Otros Productos',\r\n imagenes: this.poligonosGeoEncontrados\r\n }) \r\n\r\n console.log(this.grupos_de_imagenes);\r\n },\r\n error:(error)=>{\r\n console.log(error);\r\n },\r\n complete:()=>{\r\n // this.loading = false; \r\n }\r\n })\r\n\r\n \r\n }\r\n\r\n ver(){\r\n console.log(this.poligonosGeoEncontrados);\r\n }\r\n\r\n\r\n seleccionarTodoProductosGeo(e:any){\r\n \r\n let tipoProductos = this.productosGeo.getValue()\r\n\r\n if(e.checked){\r\n tipoProductos.forEach((i:any)=>{\r\n i.seleccionado = true\r\n })\r\n }else{\r\n tipoProductos.forEach((i:any)=>{\r\n i.seleccionado = false\r\n })\r\n }\r\n }\r\n\r\n}\r\n\r\n\r\n","import { Component } from '@angular/core';\r\nimport { AuthService } from 'src/app/auth/services/auth.service';\r\nimport { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport { Router } from '@angular/router';\r\nimport { ChangePasswordComponent } from 'src/app/auth/components/change-password/change-password.component';\r\nimport { environment } from 'src/environments/environment';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport Swal from 'sweetalert2'\r\n\r\n@Component({\r\n selector: 'app-nav-bar',\r\n templateUrl: './nav-bar.component.html',\r\n styleUrls: ['./nav-bar.component.css']\r\n})\r\nexport class NavBarComponent {\r\n constructor(private auth: AuthService, private router: Router,private modalService: NgbModal , private http: HttpClient) {}\r\n\r\n visible: boolean = false;\r\n userNombre:any = ''\r\n entorno:string = `${environment.Entorno}`\r\n\r\n actualPassword = ''\r\n nuevoPassword = ''\r\n confirmarPassword = ''\r\n\r\n\r\n ngOnInit(): void {\r\n\r\n // let data:any = this.authService.getDataUser()\r\n // this.userNombre = data.nombre\r\n\r\n }\r\n salir(){\r\n this.auth.deleteSesion()\r\n }\r\n\r\n redireccion(url:string){\r\n this.auth.redireccion(url)\r\n }\r\n \r\n\r\n\r\n cambioDeContrasena(){\r\n this.visible = true\r\n }\r\n\r\n confirmarCambioContrasena(){\r\n let token = localStorage.getItem('jwt_token')\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n const options = {\r\n headers: headers\r\n };\r\n\r\n if(this.nuevoPassword !== this.confirmarPassword ){\r\n this.alerta('Las contraseñas no coinciden','error')\r\n return\r\n }else{\r\n let data = {\r\n claveAnterior: this.actualPassword,\r\n claveNueva: this.nuevoPassword,\r\n claveNuevaConfirmada: this.confirmarPassword\r\n }\r\n this.http.put(`${environment.URL_API}/Usuario/CambiarClave`,data,options).subscribe({\r\n next:(response:any)=>{\r\n let mensaje = response.mensajes[0]\r\n this.alerta(`${mensaje}`,'success')\r\n this.visible = false\r\n },\r\n error:(response)=>{\r\n let mensaje = response.error.mensajes[0]\r\n this.alerta(`${mensaje}`,'error')\r\n }\r\n })\r\n }\r\n }\r\n \r\n\r\n alerta(text:string,icono:any){\r\n Swal.fire({\r\n title: text,\r\n icon:icono,\r\n timer: 3000,\r\n toast: true,\r\n position: 'top',\r\n showConfirmButton: false,\r\n })\r\n \r\n }\r\n\r\n}\r\n","\r\n","import { Component } from '@angular/core';\r\nimport { InactividadService } from 'src/app/auth/services/inactividad.service';\r\nimport { BarraNavegacionComponent } from 'src/app/barra-navegacion/barra-navegacion.component';\r\n\r\n@Component({\r\n selector: 'app-home-view',\r\n templateUrl: './home-view.component.html',\r\n styleUrls: ['./home-view.component.css']\r\n})\r\nexport class HomeViewComponent {\r\n\r\n constructor(private inactividad: InactividadService){}\r\n\r\n // ngOnInit(): void {\r\n // this.inactividad.init()\r\n \r\n // }\r\n\r\n}\r\n","
\r\n\r\n \r\n\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n\r\n","import { inject } from '@angular/core';\r\nimport { CanActivateFn, Router } from '@angular/router';\r\nimport { AuthService } from '../auth/services/auth.service';\r\n\r\nexport const authSesionGuard: CanActivateFn = (route, state) => {\r\n\r\n const authService = inject(AuthService)\r\n const router = inject(Router)\r\n \r\n if(authService.usuarioAutenticado()){\r\n return true\r\n }else{\r\n\r\n router.navigateByUrl('/auth/login')\r\n return false\r\n }\r\n \r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RegistroService {\r\n\r\n constructor(private http:HttpClient) {}\r\n\r\n enviarCorreo(datos: any):Observable {\r\n\r\n const url = `${environment.URL_API_CORREO}/enviar-correo`\r\n\r\n return this.http.post(url, datos);\r\n\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport Swal from 'sweetalert2'\r\nimport { FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { User } from '../../models/user';\r\nimport { jwtDecode } from \"jwt-decode\";\r\nimport { Esquemas } from 'src/app/models/esquema-permisos';\r\nimport { map } from 'rxjs/operators';\r\nimport { EsquemasService } from '../../services/esquemas.service';\r\nimport { RegistroService } from '../../services/registro.service';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\n\r\n@Component({\r\n selector: 'app-sign-up',\r\n templateUrl: './sign-up.component.html',\r\n styleUrl: './sign-up.component.css'\r\n})\r\nexport class SignUpComponent {\r\n\r\n url =\"https://webto.salesforce.com/servlet/servlet.WebToCase?encoding=UTF-8\";\r\n formEnviado = true\r\n\r\n registro = {\r\n nombre: '',\r\n apellido:'',\r\n correo:'',\r\n telefono:'',\r\n organizacion:''\r\n }\r\n\r\n repetir_contrasena = ''\r\n \r\n data:[] = []\r\n\r\n ngOnInit(): void {\r\n localStorage.clear()\r\n }\r\n\r\n constructor(\r\n private fb: FormBuilder, private auth:AuthService, private esquemasServices:EsquemasService, private solicitudregistro: RegistroService, private http: HttpClient){}\r\n\r\n // signUpForm = this.fb.group({\r\n // usuario:['',[Validators.required]],\r\n // clave:['',[Validators.required]]\r\n // })\r\n\r\n\r\n enviarDatos():void{\r\n\r\n const datos = {\r\n nombre: this.registro.nombre,\r\n apellidos: this.registro.apellido,\r\n correo: this.registro.correo,\r\n telefono: this.registro.telefono,\r\n organizacion: this.registro.organizacion\r\n };\r\n\r\n this.enviarSolicitud(datos)\r\n\r\n }\r\n\r\n alerta(text:string,icono:any){\r\n Swal.fire({\r\n title: text,\r\n icon:icono,\r\n timer: 2000,\r\n toast: true,\r\n showConfirmButton: false,\r\n })\r\n \r\n }\r\n\r\n\r\n // TODO: Ver contraseña en el formulario\r\n\r\n data_incompleta_mensaje:boolean = false\r\n inputType: string = 'password';\r\n \r\n toggleInputType(isHovered: boolean){\r\n if (isHovered) {\r\n this.inputType = 'text';\r\n } else {\r\n this.inputType = 'password';\r\n }\r\n }\r\n\r\n redireccion(ruta:string){\r\n this.auth.redireccion(ruta)\r\n }\r\n\r\n\r\n enviarSolicitud(datos:any){\r\n\r\n if(datos.nombre == '' || datos.apellido == '' || datos.correo == '' || datos.telefono == '' || datos == '' ){\r\n this.alerta('Complete todos los datos','error')\r\n \r\n return\r\n }\r\n\r\n let tipo_numero = typeof(datos.telefono)\r\n\r\n if(tipo_numero != 'number'){\r\n this.alerta(\"El campo 'Numero de contacto' debe ser numerico\",'error')\r\n return\r\n }\r\n\r\n let validEmail = /^\\w+([.-_+]?\\w+)*@\\w+([.-]?\\w+)*(\\.\\w{2,10})+$/;\r\n if(!validEmail.test(datos.correo)){\r\n this.alerta(\"Formato 'Correo de contacto' invalido\",'error')\r\n return\r\n }\r\n\r\n\r\n\r\n\r\n \r\n this.auth.redireccion('auth/login')\r\n\r\n this.solicitudregistro.enviarCorreo(datos).subscribe({\r\n\r\n \r\n next:(res:any)=>{\r\n console.log(res)\r\n this.alerta('Solicitud enviada, en breve recibirá respuesta','successful')\r\n },\r\n error:(response)=>{\r\n console.log(response)\r\n }\r\n });\r\n \r\n }\r\n\r\n formData = {\r\n orgid: '00D5w000000WYgP',\r\n program: '000 - General',\r\n name: '',\r\n company: '',\r\n email: '',\r\n phone: '',\r\n type: 'Mapas.co',\r\n termsAccepted: false\r\n };\r\n\r\n\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \"\"\r\n \r\n
\r\n\r\n \r\n
\r\n\r\n \r\n \r\n\r\n
\r\n\r\n
\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n

¿ya tiene cuenta? Ingresa aquí

\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { EsquemasService } from 'src/app/auth/services/esquemas.service';\r\nimport { Esquemas } from 'src/app/models/esquema-permisos';\r\nimport { environment } from 'src/environments/environment';\r\nimport jsPDF from 'jspdf';\r\nimport autoTable from 'jspdf-autotable'\r\nimport { RequestInfo } from 'undici-types';\r\nimport { formatDate } from '@angular/common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DashboardService {\r\n row!: number;\r\n lMargin!: number;\r\n rMargin!: number;\r\n pdfInMM!: number;\r\n pdfMaxWidth!: number;\r\n httpHeaders: HttpHeaders | { [header: string]: string | string[]; } | undefined;\r\n\r\n constructor(private http: HttpClient, private esquemasServices: EsquemasService ) { }\r\n\r\n public getAtributos(obj: any) {\r\n\r\n let atributos: any[] = []\r\n\r\n obj.instanciasAtributo.forEach((res: any) => {\r\n\r\n let valor: any\r\n if(res.atributo.tipoDato == 'Cadena'){\r\n valor = res.instanciaAtributoCadena.valor\r\n }\r\n else{\r\n if(res.atributo.tipoDato == 'Enumeracion'){\r\n valor = res.instanciaAtributoEnumeracion.opcionesEnumeracion[0].identificador\r\n }\r\n else{\r\n if(res.atributo.tipoDato == 'FechaHora'){\r\n valor = res.instanciaAtributoFechaHora.valor\r\n }\r\n else{\r\n if(res.atributo.tipoDato == 'Numerico'){\r\n valor = res.instanciaAtributoNumerico.valor\r\n }\r\n else{\r\n if(res.atributo.tipoDato == 'Esquema'){\r\n if(res.atributo.codigoInterno == 'CodigoReferencia'){\r\n valor = res.instanciaAtributoEsquema.tipoInstanciaEsquema.nombre\r\n }\r\n else{\r\n valor = res.instanciaAtributoEsquema.tipoInstanciaEsquema.id\r\n }\r\n }\r\n else{\r\n if(res.atributo.tipoDato == 'GeoRaster'){ \r\n const props = JSON.parse(res.instanciaAtributoGeoRaster.propiedades); \r\n let id = '';\r\n\r\n if(res.atributo.codigoInterno == 'ImagenesOnyx'){\r\n id = props.sceneId;\r\n }\r\n else{\r\n id = props.id;\r\n }\r\n\r\n const bbox = {\r\n bBoxLatitudMax: res.instanciaAtributoGeoRaster.bBoxLatitudMax,\r\n bBoxLatitudMin: res.instanciaAtributoGeoRaster.bBoxLatitudMin,\r\n bBoxLongitudMax: res.instanciaAtributoGeoRaster.bBoxLongitudMax,\r\n bBoxLongitudMin: res.instanciaAtributoGeoRaster.bBoxLongitudMin\r\n }\r\n \r\n const obj = {\r\n id: id,\r\n area: props.areaCoberturaGeodetic,\r\n bbox: bbox,\r\n coordenadas: res.instanciaAtributoGeoRaster.coordenadas2D,\r\n idArchivo: res.instanciaAtributoGeoRaster.id\r\n }\r\n valor = obj\r\n }\r\n else{\r\n if(res.atributo.tipoDato == 'GeoVectorPoligono2D'){ \r\n valor = res.instanciaAtributoGeoVectorPoligono2D.coordenadas2D;\r\n }\r\n else{\r\n if(res.atributo.tipoDato == 'Archivo'){ \r\n valor = res.instanciaAtributoArchivo.id;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n const att = {\r\n nombre: res.atributo.codigoInterno,\r\n valor: valor,\r\n tipo: res.atributo.tipoDato\r\n };\r\n\r\n atributos.push(att)\r\n })\r\n\r\n return atributos;\r\n }\r\n\r\n public getOptions() {\r\n let token = localStorage.getItem('jwt_token')\r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n const options = {\r\n headers: headers\r\n };\r\n\r\n return options;\r\n }\r\n\r\n public getHeaders() {\r\n let token = localStorage.getItem('jwt_token')\r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n return headers;\r\n }\r\n\r\n public getCotizaciones(pagina: number, idCotizacion: any): Observable {\r\n //return this.http.get(`${environment.URL_API}/Instancia/EncontrarConjuntoInstanciasEsquemaPorPropNavEsquemaCodInt/PRYMAP/EncabezadoCotizacion/IncluirInstanciasAtributo`, this.getOptions());\r\n //console.log(`${environment.URL_API}/Instancia/EncontrarConjuntoInstanciasEsquemaPorPropNavEsquemaPaginado/${pagina}/10/${idCotizacion}/IncluirInstanciasAtributo/ID_Desc`);\r\n \r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarConjuntoInstanciasEsquemaPorPropNavEsquemaCodIntPaginado/${pagina}/10/PRYMAP/EncabezadoCotizacion/IncluirInstanciasAtributo/ID_Desc`, this.getOptions());\r\n }\r\n\r\n public getImagenesCotizacion(idCotizacion: any): Observable {\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarConjuntoInstEsqDependienteDeInstEsqPrincipalPorCodInt/PRYMAP/DetalleCotizacionImagenArchivo/EncabezadoCotizacion/${idCotizacion}/IncluirInstanciasAtributo`, this.getOptions());\r\n }\r\n\r\n public getBolsas(): Observable {\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarConjuntoInstanciasEsquemaPorPropNavEsquemaCodInt/PRYMAP/UsuarioOrganizacionBolsa/IncluirInstanciasAtributo`, this.getOptions());\r\n }\r\n\r\n public getSaldoBolsa(idBolsa: any): Observable {\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarConjuntoInstEsqDependienteDeInstEsqPrincipalPorCodInt/PRYMAP/SaldoBolsa/Bolsa/${idBolsa}/IncluirInstanciasAtributo`, this.getOptions());\r\n }\r\n\r\n public getCompraCotizacion(idCotizacion: any): Observable {\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarConjuntoInstEsqDependienteDeInstEsqPrincipalPorCodInt/PRYMAP/COMPRA/EncabezadoCotizacion/${idCotizacion}/IncluirInstanciasAtributo`, this.getOptions());\r\n }\r\n\r\n public getEsquemaPorId(id: any): Observable {\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarEsquemaPorID/${id}/IncluirAtributos`, this.getOptions());\r\n }\r\n\r\n public getReporteCotizacion(idCotizacion: any): Observable {\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarConjuntoInstEsqDependienteDeInstEsqPrincipalPorCodInt/PRYMAP/Reporte/EncabezadoCotizacion/${idCotizacion}/IncluirInstanciasAtributo`, this.getOptions());\r\n }\r\n\r\n public getOtrosProductosCotizacion(idCotizacion: any): Observable {\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarConjuntoInstEsqDependienteDeInstEsqPrincipalPorCodInt/PRYMAP/DetalleCotizacionOtrosProductos/EncabezadoCotizacion/${idCotizacion}/IncluirInstanciasAtributo`, this.getOptions());\r\n }\r\n\r\n public getDetalleCotizacionImagenProgramacion(idCotizacion: any): Observable {\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarConjuntoInstEsqDependienteDeInstEsqPrincipalPorCodInt/PRYMAP/DetalleCotizacionImagenProgramacion/EncabezadoCotizacion/${idCotizacion}/IncluirInstanciasAtributo`, this.getOptions());\r\n }\r\n\r\n public getDetallesCotizacion(idCotizacion: any, detalleCotizacion: string): Observable {\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarConjuntoInstEsqDependienteDeInstEsqPrincipalPorCodInt/PRYMAP/${detalleCotizacion}/EncabezadoCotizacion/${idCotizacion}/IncluirInstanciasAtributo`, this.getOptions());\r\n }\r\n\r\n public deleteInstancia(id: any, rowVersion: any): Observable {\r\n const options = {\r\n headers: this.getHeaders(),\r\n body: {\r\n id: id,\r\n rowVersion: rowVersion,\r\n },\r\n };\r\n\r\n return this.http.delete(`${environment.URL_API}/Instancia/Eliminar`, options) \r\n }\r\n\r\n public updateInstancia(id: any, data: any): Observable {\r\n const options = {\r\n headers: this.getHeaders(),\r\n };\r\n\r\n return this.http.put(`${environment.URL_API}/Instancia/Actualizar/${id}`, data, options) \r\n }\r\n\r\n public crearInstancia(data: any): Observable {\r\n const options = {\r\n headers: this.getHeaders(),\r\n };\r\n\r\n return this.http.post(`${environment.URL_API}/Instancia/Crear`, data, options) \r\n }\r\n\r\n getInstanciaPorID(id:string){\r\n const options = {\r\n headers: this.getHeaders(),\r\n };\r\n\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarInstanciaEsquemaPorID/${id}/IncluirInstanciasAtributo,IncluirUsuarioPropietario`,options);\r\n }\r\n\r\n getEsquemaPorNombre(codigoInterno: string){\r\n const esquemas:any = localStorage.getItem('esquemas')\r\n const codigosEsquemas = JSON.parse(esquemas)\r\n\r\n const objetoEncontrado: Esquemas | undefined = codigosEsquemas.find((objeto: Esquemas) => objeto.codigoInterno === codigoInterno);\r\n return objetoEncontrado;\r\n }\r\n\r\n enviarCorreo(datos: any):Observable {\r\n const url = `${environment.URL_API_CORREO}/enviar-correo/precompra`; \r\n return this.http.post(url, datos);\r\n }\r\n\r\n async getImage(url: string, fileName: string | undefined) {\r\n // on the first then you will return blob from response\r\n return await fetch(url).then(r => r.blob())\r\n .then((blob) => { \r\n return new File([blob], fileName+'.'+ blob.type.split('/')[1]) ;\r\n });\r\n }\r\n\r\n getArchivo(idArchivo:number): Observable{\r\n let token = localStorage.getItem('jwt_token')\r\n\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}` \r\n });\r\n\r\n const options = {\r\n headers: headers,\r\n responseType: 'blob' as 'json'\r\n };\r\n\r\n return this.http.get(`${environment.URL_API}/Instancia/ObtenerArchivoInstanciaAtributo/${idArchivo}/Archivo`, options)\r\n }\r\n\r\n downloadCotizacion(nombreCotizacion: any, imagenes: any, dataMapas: any, coberturaAOI: number){\r\n const doc = new jsPDF();\r\n let listaImagenes: any[][] = []\r\n let totalCreditos = 0\r\n\r\n const params = JSON.parse(dataMapas)\r\n\r\n imagenes.forEach((img: any) => {\r\n totalCreditos += img.valorCreditos\r\n let cobertura = 0 \r\n let listaArea = [] \r\n\r\n if(img.proveedor == environment.PLANET){\r\n listaArea = params.imagenesPlanet.filter((s: { id: any; }) => s.id == img.idData)\r\n }\r\n else{\r\n if(img.proveedor == environment.MAXAR){\r\n listaArea = params.imagenesMaxar.filter((s: { id: any; }) => s.id == img.idData)\r\n }\r\n }\r\n\r\n if(listaArea.length > 0){\r\n cobertura = listaArea[0].cobertura.toFixed(0)\r\n }\r\n\r\n const props = JSON.parse(img.propiedades)\r\n listaImagenes.push([img.proveedor, img.temporalidad, `${cobertura} Km2`, `${cobertura} Km2`, props.cloud_cover, props.gsd.toFixed(2), img.valorCreditos.toLocaleString()])\r\n });\r\n\r\n const usuario = localStorage.getItem('nombres') + \" \" + localStorage.getItem('apellidos')\r\n const correo = localStorage.getItem('correo')\r\n\r\n this.lMargin = 15;\r\n\t\tthis.rMargin = 15;\r\n\t\tthis.pdfInMM = 210;\r\n\t\tthis.pdfMaxWidth = this.pdfInMM - this.lMargin - this.rMargin;\r\n\r\n const logoPath = './assets/logo mapas-02.png';\r\n const imgWidth = 4;\r\n const imgHeight = 1;\r\n\r\n this.row = 60\r\n\r\n doc.addImage(logoPath, 'PNG', doc.internal.pageSize.width / 2 - 50, this.row, 100, 30);\r\n\r\n this.row += 60\r\n\r\n doc.setFont('helvetica', 'bold'); \r\n doc.setFontSize(18);\r\n doc.text('COTIZACIÓN DE IMÁGENES',\r\n doc.internal.pageSize.width / 2, this.row, {\r\n align: 'center',\r\n });\r\n\r\n this.row += 10\r\n\r\n doc.setFontSize(14);\r\n doc.text(`${nombreCotizacion}`,\r\n doc.internal.pageSize.width / 2, this.row, {\r\n align: 'center',\r\n });\r\n\r\n this.newPage(doc, 40)\r\n\r\n this.setFuente(doc, 'bold', 18)\r\n this.addTextoCentrado(doc, this.row, 'INFORMACIÓN TÉCNICA')\r\n\r\n this.row += 10\r\n\r\n autoTable(doc, {\r\n styles: { fillColor: [255, 255, 255], textColor: [0, 0, 0], lineColor: [255, 255, 255], lineWidth: 0.2, fontSize: 8 },\r\n headStyles: { minCellHeight: 2, halign: 'center', fillColor: [255, 255, 255] },\r\n bodyStyles: { fontSize: 8 },\r\n columnStyles: { 0: { fontStyle: 'bold', fontSize: 10, halign: 'left', cellWidth: 40 }, 1: { fontStyle: 'normal', fontSize: 10, halign: 'left' }},\r\n theme: 'grid',\r\n startY: this.row,\r\n head: [],\r\n body: [\r\n ['Nombre:', `${usuario}`],\r\n ['Organización:', ''],\r\n ['Correo:', `${correo}`],\r\n ]\r\n });\r\n\r\n this.row += 40\r\n\r\n this.setFuente(doc, 'bold', 14)\r\n this.addTextoCentrado(doc, this.row, 'LOCALIZACIÓN GENERAL')\r\n\r\n this.row += 10\r\n \r\n this.setFuente(doc, 'normal', 10)\r\n doc.text('La siguiente sección muestra el cubrimiento de las imágenes ofrecidas sobre el área de interés:', 15, this.row, {\r\n align: 'left',\r\n });\r\n\r\n this.row += 10\r\n\r\n let coberturaPlanet = 0\r\n let coberturaMaxar = 0\r\n \r\n params.imagenesPlanet.forEach((item: any) => {\r\n coberturaPlanet += item.cobertura\r\n });\r\n\r\n params.imagenesMaxar.forEach((item: any) => {\r\n coberturaMaxar += item.cobertura\r\n });\r\n\r\n const coberturaTotal = coberturaPlanet + coberturaMaxar\r\n\r\n autoTable(doc, {\r\n styles: { fillColor: [255, 255, 255], textColor: [0, 0, 0], lineColor: [255, 255, 255], lineWidth: 0.2, fontSize: 8 },\r\n headStyles: { minCellHeight: 2, halign: 'center', fillColor: [255, 255, 255] },\r\n bodyStyles: { fontSize: 8 },\r\n columnStyles: { 0: { fontStyle: 'bold', fontSize: 10, halign: 'left', cellWidth: 40 }, 1: { fontStyle: 'normal', fontSize: 10, halign: 'left' }},\r\n theme: 'grid',\r\n startY: this.row,\r\n head: [],\r\n body: [\r\n ['Cobertura Total:', `${coberturaTotal.toFixed(0)} Km2`],\r\n ['Cobertura Planet:', `${coberturaPlanet.toFixed(0)} Km2`],\r\n ['Cobertura Maxar:', `${coberturaMaxar.toFixed(0)} Km2`],\r\n ['AOI:', `${coberturaAOI.toFixed(0)} Km2`],\r\n ]\r\n });\r\n\r\n this.row += 40\r\n\r\n doc.addImage(params.mapaReferencia, 'PNG', 15, this.row, 50, 50)\r\n doc.addImage(params.mapaGeneral, 'PNG', 80, this.row, 50, 50)\r\n\r\n this.row += 60\r\n\r\n this.setFuente(doc, 'bold', 10)\r\n doc.text('Características generales', 15, this.row, {\r\n align: 'left',\r\n });\r\n\r\n this.row += 5\r\n\r\n doc.text(`Total créditos en ésta cotización: ${totalCreditos.toLocaleString()}`, 15, this.row, {\r\n align: 'left',\r\n });\r\n\r\n this.row += 5\r\n\r\n autoTable(doc, {\r\n styles: { lineWidth: 0.2, fontSize: 8 },\r\n headStyles: { minCellHeight: 2, halign: 'center' },\r\n bodyStyles: { fontSize: 8 },\r\n columnStyles: { 0: { fontStyle: 'bold', fontSize: 8, halign: 'left', cellWidth: 20 }, 1: { fontStyle: 'normal', fontSize: 8, halign: 'left' }},\r\n theme: 'striped',\r\n startY: this.row,\r\n head: [['Proveedor', 'Temporalidad', 'Área Imagen', 'Cobertura', 'Nubosidad', 'Ángulo Nadir', 'Créditos MPC']],\r\n body: listaImagenes\r\n });\r\n\r\n //Planet\r\n if(params.imagenesPlanet.length > 0){\r\n this.newPage(doc, 40)\r\n\r\n this.setFuente(doc, 'bold', 18)\r\n this.addTextoCentrado(doc, this.row, 'IMÁGENES PLANET')\r\n \r\n this.row += 10\r\n \r\n doc.addImage(params.mapaPlanet, 'PNG', doc.internal.pageSize.width / 2 - 25, this.row, 50, 50)\r\n \r\n this.row += 60\r\n \r\n const textoPlanet = 'Las imágenes se entregarán en el modo MULTIESPECTRAL, con resolución espectral de hasta 8 bandas1, organizadas'+\r\n 'de la siguiente forma: 6 bandas en el espectro visible (Costal, Azul, Verde l, Verde, Amarillo y Rojo) y 2 banda en el'+\r\n 'Infrarrojo (Red Edge e infrarrojo cercano) y resolución espacial de 3.125 mt . Las imágenes serán entregadas en el'+\r\n 'siguiente modo de procesamiento:'+ '\\n\\n' +\r\n 'Planetscope Scene – El producto PlanetScope Scene esta corregido radiométricamente, geométricamente, con'+\r\n 'correcciones para el ángulo del sol y con corrección de color (usando una curva de color). Viene con ortorectificación'+\r\n 'utilizando GCP y DEMs finos (30 m a 90 m posting) a <10 m RMSE de precisión posicional. Las imágenes se'+\r\n 'ortorrectifican y se proyectan a una proyección UTM WGS84.'+ '\\n\\n' +\r\n 'Este producto ha sido procesado para eliminar las distorsiones causadas por el terreno y puede ser utilizado para'+\r\n 'propósitos de mapeo y visualización cartográfica. Esta corrección también elimina el efecto de perspectiva en el suelo (no'+\r\n 'en edificios), la restauración de la geometría de un tiro vertical. Además, se hace una corrección para el ángulo de sol.'+\r\n 'PlanetScope Scene es óptimo para un uso simple y directo de una imagen. Se diseña y se hace visualmente atractivo'+\r\n 'para una amplia variedad de aplicaciones que requieren imágenes con una geolocalización exacta y proyección'+\r\n 'cartográfica. El producto se puede utilizar y se ingiere directamente en un Sistema de Información Geográfica.'\r\n \r\n this.setFuente(doc, 'normal', 10)\r\n this.addTextoJustificado(doc, this.row, textoPlanet);\r\n \r\n this.row += 40\r\n \r\n params.imagenesPlanet.forEach((item: any, i: number) => {\r\n const imgData = imagenes.filter((s: { idData: any; }) => s.idData == item.id)[0]\r\n const props = JSON.parse(imgData.propiedades) \r\n \r\n let image_map_planet = new Image()\r\n image_map_planet.src = `${item.url}`\r\n \r\n this.row += 50\r\n\r\n this.setFuente(doc, 'bold', 10)\r\n doc.text(`Imagen ${i+1}.`, 15, this.row+10, {\r\n align: 'left',\r\n });\r\n\r\n this.row += 5\r\n \r\n if(this.row > 220){\r\n this.newPage(doc, 30)\r\n }\r\n\r\n doc.addImage(image_map_planet, 20, this.row, 50, 50) \r\n autoTable(doc, {\r\n styles: { fillColor: [255, 255, 255], textColor: [0, 0, 0], lineColor: [255, 255, 255], lineWidth: 0.1, fontSize: 8 },\r\n headStyles: { minCellHeight: 1, halign: 'center', fillColor: [255, 255, 255] },\r\n bodyStyles: { fontSize: 8 },\r\n columnStyles: { 0: { fontStyle: 'bold', fontSize: 8, halign: 'left', cellWidth: 25, minCellHeight: 1 }, 1: { fontStyle: 'normal', fontSize: 9, halign: 'left' }},\r\n theme: 'grid',\r\n margin: { left: 80},\r\n startY: this.row + 3,\r\n head: [],\r\n body: [\r\n ['Nubosidad:', props.cloud_cover],\r\n ['Sensor:', props.instrument],\r\n ['Satélite:', props.satellite_id],\r\n ['ID:', props.id],\r\n ['Ángulo Nadir:', props.gsd.toFixed(2)],\r\n ['Código:', imgData.codigoReferencia],\r\n ['Créditos MPC:', imgData.valorCreditos.toLocaleString()],\r\n ],\r\n });\r\n })\r\n }\r\n \r\n //Maxar\r\n if(params.imagenesMaxar.length > 0){\r\n this.newPage(doc, 40)\r\n\r\n this.setFuente(doc, 'bold', 18)\r\n this.addTextoCentrado(doc, this.row, 'IMÁGENES MAXAR')\r\n \r\n this.row += 10\r\n \r\n doc.addImage(params.mapaMaxar, 'PNG', doc.internal.pageSize.width / 2 - 25, this.row, 50, 50)\r\n \r\n this.row += 60\r\n \r\n const textoMaxar = 'Las imágenes se entregarán en el modo MULTIESPECTRAL, con resolución espectral de hasta 4 bandas1, organizadas'+\r\n 'de la siguiente forma: 3 bandas en el espectro visible (Azul, Verde y Rojo) y 1 banda en el Infrarrojo (infrarrojo cercano) y'+\r\n 'resolución espacial submétrica que va desde los 0.5 m hasta los 0.3 m gracias a la fusión entre la imagen espectral y la'+\r\n 'potente captura nativa de los sensores pancromáticos presentes en todos los satélites de la constelación MAXAR, la cual'+\r\n 'se compone de los satélites WorldView-3, WorldView-2 y GeoEye-1.'+ '\\n\\n' +\r\n 'Las imágenes se entregan corregidas radiométrica y geométricamente y con una ortorectificacion al vuelo que garantiza'+\r\n 'una precisión de localización absoluta de 10 m. Están listas para integrar en un flujo de trabajo GIS, con fines como la'+\r\n 'creación y revisión de bases de datos de cartografía o actualización de capas ya existentes.'\r\n \r\n this.setFuente(doc, 'normal', 10)\r\n this.addTextoJustificado(doc, this.row, textoMaxar);\r\n\r\n params.imagenesMaxar.forEach((item: any, i: number) => {\r\n const imgData = imagenes.filter((s: { idData: any; }) => s.idData == item.id)[0]\r\n const props = JSON.parse(imgData.propiedades) \r\n \r\n let image_map = new Image()\r\n image_map.src = `${item.url}`\r\n \r\n this.row += 50\r\n\r\n if(this.row > 200){\r\n this.newPage(doc, 30)\r\n }\r\n\r\n this.setFuente(doc, 'bold', 10)\r\n doc.text(`Imagen ${i+1}.`, 15, this.row, {\r\n align: 'left',\r\n });\r\n\r\n this.row += 5\r\n \r\n \r\n\r\n doc.addImage(image_map, 20, this.row, 50, 80) \r\n autoTable(doc, {\r\n styles: { fillColor: [255, 255, 255], textColor: [0, 0, 0], lineColor: [255, 255, 255], lineWidth: 0.1, fontSize: 8 },\r\n headStyles: { minCellHeight: 1, halign: 'center', fillColor: [255, 255, 255] },\r\n bodyStyles: { fontSize: 8 },\r\n columnStyles: { 0: { fontStyle: 'bold', fontSize: 8, halign: 'left', cellWidth: 25, minCellHeight: 1 }, 1: { fontStyle: 'normal', fontSize: 9, halign: 'left' }},\r\n theme: 'grid',\r\n margin: { left: 80},\r\n startY: this.row + 3,\r\n head: [],\r\n body: [\r\n ['ID:', props.id],\r\n ['Código:', imgData.codigoReferencia],\r\n ['Créditos MPC:', imgData.valorCreditos.toLocaleString()],\r\n ],\r\n });\r\n\r\n this.row += 40\r\n })\r\n } \r\n\r\n this.addFooters(doc);\r\n\r\n return doc.output('blob');\r\n }\r\n\r\n setFuente(doc: any, tipo: any, size: number) {\r\n doc.setFontSize(size);\r\n doc.setFont('helvetica', tipo); \r\n }\r\n\r\n newPage(doc: any, value: any) {\r\n doc.addPage();\r\n this.row = value;\r\n }\r\n\r\n addHeaders(doc: any, title: string): void {\r\n const pageCount = doc.internal.getNumberOfPages();\r\n for (let i = 1; i <= pageCount; i++) {\r\n doc.setDrawColor(0);\r\n doc.setFillColor(255, 255, 255);\r\n doc.rect(5, 6, 40, 20, 'FD');\r\n doc.rect(40, 6, 165, 20, 'FD');\r\n const img = new Image();\r\n //img.src = 'assets/images/logo_municipio.png';\r\n //doc.addImage(img, 'png', 13, 7, 22, 18);\r\n doc.setFontSize(6);\r\n doc.setFont(undefined, 'bold');\r\n const col = doc.internal.pageSize.width / 2 + 18;\r\n doc.text('PROCESO GESTIÓN DE ORDENAMIENTO TERRITORIAL', col, 9, {\r\n align: 'center',\r\n });\r\n doc.setFontSize(6);\r\n doc.setFont(undefined, 'normal');\r\n doc.text('NOMBRE DEL FORMATO', col, 13, {\r\n align: 'center',\r\n });\r\n doc.setFontSize(6);\r\n doc.setFont(undefined, 'bold');\r\n doc.text(title, col, 17, {\r\n align: 'center',\r\n });\r\n doc.setFontSize(6);\r\n doc.text('VIGENCIA', 42, 21, {\r\n align: 'left',\r\n });\r\n doc.text('VERSIÓN', 82, 21, {\r\n align: 'left',\r\n });\r\n doc.text('CODIGO', 132, 21, {\r\n align: 'left',\r\n });\r\n doc.text('CONSECUTIVO', 175, 21, {\r\n align: 'left',\r\n });\r\n doc.text('7-oct-16', 43, 24, {\r\n align: 'left',\r\n });\r\n doc.text('01', 85, 24, {\r\n align: 'left',\r\n });\r\n doc.text('GOT-F-009', 131, 24, {\r\n align: 'left',\r\n });\r\n // doc.text(this.consecutive, 176, 24, {\r\n // align: 'left',\r\n // });\r\n doc.setFont(undefined, 'normal');\r\n }\r\n }\r\n \r\n addFooters(doc: any): void {\r\n const pageCount = doc.internal.getNumberOfPages();\r\n for (let i = 1; i <= pageCount; i++) {\r\n doc.setPage(i)\r\n\r\n doc.setFontSize(6);\r\n doc.setFont(undefined, 'normal');\r\n this.addTextoCentrado(doc, doc.internal.pageSize.height - 19, 'www.procalculo.com - info@procalculo.com')\r\n this.addTextoCentrado(doc, doc.internal.pageSize.height - 16, 'PBX. + 57 (601) 745 1145')\r\n this.addTextoCentrado(doc, doc.internal.pageSize.height - 13, 'Calle 90 No. 13 A - 20 Piso 4')\r\n this.addTextoCentrado(doc, doc.internal.pageSize.height - 10, 'Bogotá - Colombia')\r\n }\r\n }\r\n\r\n addTextoCentrado(doc: any, row: number, texto: string): void {\r\n doc.text(texto, doc.internal.pageSize.width / 2, row, { align: \"center\" });\r\n }\r\n\r\n addTextoJustificado(doc: any, row: number, texto: string): void {\r\n const lines = doc.splitTextToSize(texto, this.pdfMaxWidth);\r\n doc.text(lines, this.lMargin, row, { align: \"justify\", maxWidth: this.pdfMaxWidth, lineHeightFactor: 1.5 });\r\n }\r\n\r\n consultaServiciosProfecionales(){\r\n return this.http.get(`${environment.URL_API}/Instancia/EncontrarConjuntoInstanciasEsquemaPorPropNavEsquemaCodInt/PRYMAP/CatalogoReferencia/IncluirInstanciasAtributo`, this.getOptions());\r\n }\r\n\r\n\r\n agregarServicioProfecionalAcotizacion(idsEsquemas:any,id_cotizacion:any,cantidad:any,codigoReferencia:any){\r\n\r\n console.log(idsEsquemas);\r\n\r\n let cadenaAleatoria = Math.random().toString(36).substr(2, 6);\r\n \r\n var formdata = new FormData();\r\n formdata.append(\"comando.esquemaID\", idsEsquemas[0].idEsquema);\r\n formdata.append(\"comando.nombre\", `Servicio_${cadenaAleatoria}`);\r\n\r\n //Encabezado cotizacion \r\n formdata.append(\"comando.instanciasAtributo_Crear[0].atributoID\",idsEsquemas[0].EncabezadoCotizacion );\r\n formdata.append(\"comando.instanciasAtributo_Crear[0].ValorTipoInstanciaEsquemaID\", id_cotizacion);\r\n\r\n //Codigo de referencia \r\n formdata.append(\"comando.instanciasAtributo_Crear[1].atributoID\", idsEsquemas[0].CodigoReferencia);\r\n formdata.append(\"comando.instanciasAtributo_Crear[1].ValorTipoInstanciaEsquemaID\", codigoReferencia);\r\n\r\n //Cantidad\r\n formdata.append(\"comando.instanciasAtributo_Crear[2].atributoID\", idsEsquemas[0].Cantidad);\r\n formdata.append(\"comando.instanciasAtributo_Crear[2].valorNumerico\", cantidad);\r\n\r\n\r\n return this.http.post(`${environment.URL_API}/Instancia/Crear`,formdata, this.getOptions());\r\n\r\n\r\n }\r\n\r\n}\r\n\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n

Bienvenido {{nombreUsuario}}

\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
{{ cotizacion.nombre }}\r\n
\r\n
\r\n \r\n {{ cotizacion.fechaCreacion | date:\r\n 'dd/MM/yyyy' }}\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n\r\n
\r\n
\r\n
Visualizando la página {{paginaCotizacion}} de {{totalPaginasCotizacion}} disponibles
\r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n\r\n
\r\n
\r\n\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n
Cotización seleccionada: {{nombreCotizacion}}
\r\n
Total Créditos MPC: \r\n \r\n {{ totalCreditos.toLocaleString() }}\r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n IMPORTANTE:  Para este proceso aplican términos y condiciones, por lo tanto, nos comunicaremos con usted para continuar con el proceso de cotización y compra \r\n \r\n \r\n \r\n \r\n En proceso de compra\r\n \r\n \r\n
\r\n\r\n \r\n \r\n \r\n \r\n Imágenes\r\n \r\n\r\n
\r\n Créditos MPC en imágenes: {{totalCreditosImagenes.toLocaleString()}}\r\n
\r\n\r\n
\r\n \r\n
\r\n La cotización posee {{imagenes.length}} imágenes, calculandose el total créditos MPC de la\r\n cotización seleccionada, por favor\r\n espere..\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n Ver Imagen\r\n Proveedor \r\n Temporalidad\r\n Créditos MPC \r\n Datos Adicionales
Eliminar
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n {{\r\n imagen.proveedor[0].toUpperCase() }}\r\n {{ imagen.proveedor }}\r\n \r\n \r\n {{ imagen.temporalidad }}\r\n \r\n \r\n {{ imagen.valorCreditos.toLocaleString()\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ID: {{ imagen.idData }}\r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n \r\n Servicios Adicionales\r\n \r\n\r\n
\r\n Créditos MPC en servicios adicionales: {{totalCreditosServicios.toLocaleString()}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n #\r\n Descripción\r\n Cantidad\r\n \r\n Créditos MPC \r\n \r\n \r\n \r\n \r\n \r\n {{ producto.index }}\r\n {{ producto.descripcion }}\r\n {{ producto.cantidad.toLocaleString() }} {{ producto.unidad }}(s)\r\n \r\n \r\n \r\n {{ producto.valorCreditos.toLocaleString()\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n Imágenes Programadas\r\n \r\n\r\n
\r\n Créditos MPC en imágenes programadas:\r\n {{totalCreditosImagenesProgramadas.toLocaleString()}}\r\n
\r\n\r\n \r\n \r\n \r\n #\r\n Código Referencia\r\n Fecha Inicio
Fecha Fin\r\n \r\n Duración\r\n Área Cobertura\r\n\r\n Créditos MPC \r\n \r\n \r\n
\r\n \r\n \r\n {{ programacion.index }}\r\n {{ programacion.codigoReferencia }}\r\n \r\n
\r\n {{programacion.fechaInicio}}\r\n
\r\n
\r\n {{programacion.fechaFin}}\r\n
\r\n \r\n \r\n {{ programacion.duracion }} días\r\n {{ programacion.areaCobertura }} Km2\r\n\r\n \r\n \r\n {{\r\n programacion.valorCreditos.toLocaleString()}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n {{ message.header }}\r\n \r\n

{{ message.message }}

\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n OMEO_L1: Bandas multiespectrales y pancromática separadas con correcciones radiométrica y atmosférica (TOA) sin corrección geométrica.\r\n
\r\n
\r\n OMEO_L3: Pansharpening a 4 bandas (RGB+NIR) con corrección radiométrica y atmosférica (TOA) y ortorrectificación al vuelo.\r\n
\r\n
\r\n OMEO_L5: Mosaico de las varias escenas seleccionadas a 4 bandas (RGB+NIR) con corrección radiométrica y atmosférica (TOA) y ortorrectificación al vuelo.\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n Realizando transacción, por favor espere..\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n Generando cotización, por favor espere..\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n Generar Compra\r\n
\r\n
\r\n\r\n
\r\n
\r\n Nombre Cotización: {{ nombreCotizacion }}\r\n
\r\n\r\n
\r\n A continuación se lista en su totalidad lo incluido en ésta cotización:\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
ImágenesServicios AdicionalesImágenes ProgramadasOtros Productos
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n Ésta cotización tiene un costo total de {{\r\n totalCreditos.toLocaleString() }} créditos MPC que se descontarán automáticamente de la\r\n totalidad de créditos existentes una vez la compra haya sido validada y confirmada.\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n
{{ selectedBolsaCreditos.nombre }}
\r\n
\r\n
\r\n \r\n
\r\n \r\n
{{ bolsa.nombre }}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n

0\">La bolsa seleccionada tiene un saldo disponible de {{ saldoBolsa.toLocaleString() }} créditos MPC

\r\n

No se ha seleccionado ninguna bolsa de créditos MPC o la bolsa seleccionada no posee créditos disponibles

\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n Si desea continuar con el proceso, dar clic en \"Generar Compra\"\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n Realizando transacción, por favor espere..\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n \r\n\r\n
\r\n
\r\n A continuación puede seleccionar la cantidad de horas requeridas de algún servicio profesional y adicionarlo a\r\n la cotización.\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n

Tiempo y materiales - TYM

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n

Procesamiento de imágenes - PIM

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n

Capas geográficas monitoreadas - CGM

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n
Servicio o ProductoValorCantidad
\r\n
\r\n \r\n
\r\n
\r\n {{item.descripcion}}\r\n
\r\n
{{item.valorUnitario}} créditos {{item.unidadDeMedida}}\r\n Mim {{item.cantidadMinima}} - Max {{item.cantidadMaxima}}\r\n \r\n \r\n
\r\n
\r\n
\r\n

Agregado

\r\n
\r\n
\r\n \r\n
\r\n
\r\n

{{item.estado}}

\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{item.descripcion}}\r\n
\r\n
{{item.valorUnitario}} créditos {{item.unidadDeMedida}}\r\n Mim {{item.cantidadMinima}} - Max {{item.cantidadMaxima}}\r\n \r\n \r\n
\r\n
\r\n
\r\n

Agregado

\r\n
\r\n
\r\n \r\n
\r\n
\r\n

{{item.estado}}

\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{item.descripcion}}\r\n
\r\n
{{item.valorUnitario}} créditos {{item.unidadDeMedida}}\r\n Mim {{item.cantidadMinima}} - Max {{item.cantidadMaxima}}\r\n \r\n \r\n
\r\n
\r\n
\r\n

Agregado

\r\n
\r\n
\r\n \r\n
\r\n
\r\n

{{item.estado}}

\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n El Servicio cuenta con una capacidad de {{horasServicios}} horas\r\n equivalentes a {{creditosServicios?.toLocaleString()}} Créditos MPC.\r\n\r\n
\r\n \r\n \r\n
\r\n {{maximasUnidades}}\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
{{imagenProveedor}}
\r\n
{{imagenId}}
\r\n
\r\n
\r\n \r\n

\r\n Consultando imagen...\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
{{tipoPoligonoGeo}}
\r\n
ID: {{imagenIdPoligonoGeo}}
\r\n
\r\n
\r\n \r\n

\r\n Consultando imagen...\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n \r\n A continuación puede modificar la fecha de programación de las imágenes. Recuerde que la diferencia entre la fecha\r\n inicial y la fecha final debe ser mínimo 15 días.\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { EsquemasService } from 'src/app/auth/services/esquemas.service';\r\nimport { DashboardService } from '../../services/dashboard.service';\r\nimport { TableRowSelectEvent } from 'primeng/table';\r\nimport { OverlayPanel } from 'primeng/overlaypanel';\r\nimport { Cotizacion } from '../../models/Cotizacion';\r\nimport { Imagen } from '../../models/Imagen';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\nimport { Esquemas } from 'src/app/models/esquema-permisos';\r\nimport { Observable, map } from 'rxjs';\r\nimport jsPDF from 'jspdf';\r\nimport { AuthService } from 'src/app/auth/services/auth.service';\r\nimport esriConfig from \"@arcgis/core/config.js\";\r\nimport { constantes } from 'src/environments/environment';\r\nimport { InactividadService } from 'src/app/auth/services/inactividad.service';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport Swal from 'sweetalert2'\r\nimport * as moment from 'moment';\r\n\r\n//ArcGIS\r\nimport Map from '@arcgis/core/Map';\r\nimport MapView from '@arcgis/core/views/MapView';\r\nimport Graphic from '@arcgis/core/Graphic';\r\nimport Polygon from '@arcgis/core/geometry/Polygon';\r\nimport BasemapGallery from \"@arcgis/core/widgets/BasemapGallery\";\r\nimport Expand from \"@arcgis/core/widgets/Expand\";\r\nimport GraphicsLayer from \"@arcgis/core/layers/GraphicsLayer.js\";\r\nimport LayerList from \"@arcgis/core/widgets/LayerList.js\";\r\nimport MediaLayer from \"@arcgis/core/layers/MediaLayer\";\r\nimport Extent from \"@arcgis/core/geometry/Extent\";\r\nimport ImageElement from \"@arcgis/core/layers/support/ImageElement\";\r\nimport ExtentAndRotationGeoreference from \"@arcgis/core/layers/support/ExtentAndRotationGeoreference\";\r\nimport { AccionesGeograficasService } from 'src/app/home/services/acciones-geograficas.service';\r\nimport { BuscarImagenesService } from 'src/app/home/services/buscar-imagenes.service';\r\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\r\nimport * as geometryEngine from \"@arcgis/core/geometry/geometryEngine.js\";\r\n\r\nimport { ChangePasswordComponent } from 'src/app/auth/components/change-password/change-password.component';\r\nimport { BolsaCreditos } from '../../models/BolsaCreditos';\r\nimport { PageEvent } from '../../models/PageEvent';\r\nimport { Producto } from '../../models/Producto';\r\nimport { ImagenProgramacion } from '../../models/ImagenProgramacion';\r\nimport { PoligonoGeografico } from '../../models/PoligonoGeografico';\r\nimport { ControlErrorService } from 'src/app/home/services/control-error.service';\r\n\r\ninterface PageEvent1 {\r\n first: number;\r\n rows: number;\r\n page: number;\r\n pageCount: number;\r\n}\r\n\r\n@Component({\r\n selector: 'app-dashboard-view',\r\n templateUrl: './dashboard-view.component.html',\r\n styleUrl: './dashboard-view.component.css',\r\n providers: [MessageService, ConfirmationService]\r\n})\r\n\r\nexport class DashboardViewComponent implements OnInit {\r\n public view: any = null;\r\n public viewGeneral: any = null;\r\n public viewPlanet: any = null;\r\n public viewMaxar: any = null;\r\n\r\n //@ViewChild('mapViewNodePlanet', { static: true }) private mapViewPlanetEl!: ElementRef;\r\n @ViewChild('mapViewNodePlanet', { static: true })\r\n mapViewPlanetEl!: ElementRef;\r\n //@ViewChild('mapViewNodeMaxar', { static: true }) private mapViewMaxarEl!: ElementRef;\r\n @ViewChild('mapViewNodeMaxar')\r\n mapViewMaxarEl!: ElementRef;\r\n @ViewChild('mapViewNodeGeneral', { static: true }) private mapViewGeneralEl!: ElementRef;\r\n @ViewChild('mapViewNodeReferencia', { static: true }) private mapViewReferenciaEl!: ElementRef;\r\n\r\n constructor(private dashboardService: DashboardService, private esquemasServices: EsquemasService, private confirmationService: ConfirmationService, private messageService: MessageService, private auth: AuthService, private agsService: AccionesGeograficasService, private busquedaService: BuscarImagenesService, private modalService: NgbModal, private inactividad: InactividadService, private http: HttpClient, private controlError:ControlErrorService) {\r\n esriConfig.apiKey = environment.ArcGis_Key,\r\n esriConfig.request.trustedServers?.push('https://tiles.planet.com/')\r\n }\r\n\r\n loading: boolean = false;\r\n loadingCompra: boolean = false;\r\n loadingCotizacion: boolean = false;\r\n loadingCargaCotizacion: boolean = false;\r\n loadingCargaImagenes: boolean = false;\r\n\r\n cotizacion!: Cotizacion;\r\n cotizaciones: Cotizacion[] = [];\r\n\r\n idCotizacion: string | undefined = '-';\r\n nombreCotizacion: string | undefined = '-';\r\n\r\n totalCreditos: number = 0;\r\n totalCreditosServicios: number = 0;\r\n totalCreditosImagenes: number = 0;\r\n totalCreditosImagenesProgramadas: number = 0;\r\n totalCreditosPoligonosGeograficos: number = 0;\r\n\r\n selectedCotizacion!: Cotizacion | undefined;\r\n usuarioCotizacionId: string | undefined = '-';\r\n rowVersionCotizacion: string | undefined = '-';\r\n itemCotizacion: any;\r\n\r\n imagen!: Imagen;\r\n imagenes: Imagen[] = [];\r\n arrayImagenes: Imagen[] = [];\r\n\r\n producto!: Producto;\r\n productos: Producto[] = [];\r\n arrayProductos: Producto[] = [];\r\n\r\n bolsaCreditos!: BolsaCreditos;\r\n bolsas: BolsaCreditos[] = [];\r\n saldoBolsa: number = 0;\r\n\r\n imagenProgramacion!: ImagenProgramacion;\r\n imagenesProgramacion: ImagenProgramacion[] = [];\r\n\r\n poligonoGeografico!: PoligonoGeografico;\r\n arrayPoligonosGeograficos: PoligonoGeografico[] = [];\r\n\r\n precotizacionDialog: boolean = false;\r\n mapasDialog: boolean = false;\r\n comprasDialog: boolean = false;\r\n serviciosDialog: boolean = false;\r\n imagenDialog: boolean = false;\r\n imagenProgramadaDialog: boolean = false;\r\n poligonoGeograficoDialog: boolean = false;\r\n\r\n selectedNivelProcesamiento!: any;\r\n selectedLicencia!: any;\r\n selectedTipoEntrega!: any;\r\n selectedBolsaCreditos!: any;\r\n\r\n nivelesProcesamiento!: any[];\r\n licencias!: any[];\r\n tiposEntrega!: any[];\r\n\r\n estadosCotizacion!: any[];\r\n\r\n atributos: any = {};\r\n atributosProgramacion!: any[];\r\n coberturaAOI: number = 0;\r\n\r\n imagenesProveedorPlanet!: any[];\r\n imagenesProveedorMaxar!: any[];\r\n\r\n observacionesCompra: string = '';\r\n tieneCompra: boolean = false;\r\n nombreUsuario: string = '';\r\n\r\n paginaCotizacion: number = 1;\r\n numRegistrosPagCotizacion: number = 10;\r\n totalPaginasCotizacion: number = 0;\r\n totalRegistrosCotizacion: number = 0;\r\n tienePaginaSiguiente: boolean = false;\r\n tienePaginaAnterior: boolean = false;\r\n\r\n capturaMapa: string = ''\r\n\r\n //Esquemas\r\n esquemaDetCotImgArchivo: any;\r\n esquemaCotizacion: any;\r\n esquemaCompra: any;\r\n esquemaReporte: any;\r\n esquemaOtrosProductos: any;\r\n esquemaDetCotImagenProgramacion: any;\r\n\r\n idEsquemaEncabezadoCotizacion: any;\r\n\r\n tieneReporteCotizacion: boolean = false;\r\n tieneReporteCotizacionTemp: boolean = false;\r\n instanciaArchivoCotizacion: any;\r\n idArchivoCotizacion: number = 0;\r\n\r\n //servicios profecionales\r\n poPup_serviciosProfecionales: boolean = false\r\n\r\n serviciosProfecionales_Todos: any[] = []\r\n serviciosPofecionales_TYM: any[] = []\r\n serviciosPofecionales_PIM: any[] = []\r\n serviciosPofecionales_CGM: any[] = []\r\n\r\n idsEsquemas: any = []\r\n cargaGif = false\r\n\r\n horasServicios: number | undefined = 0;\r\n creditosServicios: number | undefined = 0;\r\n nuevasHorasServicios: number | undefined = 0;\r\n maximasUnidades: string = '';\r\n\r\n fechaIni: Date | undefined;\r\n fechaFin: Date | undefined;\r\n minDateIni: Date | undefined;\r\n minDateFin: Date | undefined;\r\n disabledFechaIni: boolean = false;\r\n disabledFechaFin: boolean = false;\r\n\r\n urlImagen: string = ''; \r\n imagenProveedor: string | undefined = '';\r\n imagenId: string | undefined = '';\r\n\r\n urlPoligonoGeo: string = '';\r\n tipoPoligonoGeo: string | undefined = '';\r\n imagenIdPoligonoGeo: string | undefined = '';\r\n\r\n visibleTabArchivo: boolean = false;\r\n visibleTabProgramacion: boolean = false;\r\n visibleTabPoligonos: boolean = false;\r\n\r\n CALENDAR_CONFIG_ES = {\r\n closeText: \"Cerrar\",\r\n prevText: \"\",\r\n currentText: \"Hoy\",\r\n monthNames: [\"enero\", \"febrero\", \"marzo\", \"abril\", \"mayo\", \"junio\",\r\n \"julio\", \"agosto\", \"septiembre\", \"octubre\", \"noviembre\", \"diciembre\"],\r\n monthNamesShort: [\"ene\", \"feb\", \"mar\", \"abr\", \"may\", \"jun\",\r\n \"jul\", \"ago\", \"sep\", \"oct\", \"nov\", \"dic\"],\r\n dayNames: [\"domingo\", \"lunes\", \"martes\", \"miércoles\", \"jueves\", \"viernes\", \"sábado\"],\r\n dayNamesShort: [\"dom\", \"lun\", \"mar\", \"mié\", \"jue\", \"vie\", \"sáb\"],\r\n dayNamesMin: [\"D\", \"L\", \"M\", \"X\", \"J\", \"V\", \"S\"],\r\n weekHeader: \"Sm\",\r\n dateFormat: \"dd/mm/yy\",\r\n firstDay: 1,\r\n isRTL: false,\r\n showMonthAfterYear: false,\r\n yearSuffix: \"\"\r\n }\r\n\r\n es: any;\r\n ImagenesProveedores: any; \r\n PoligonosMapaProveedores: any; \r\n\r\n @ViewChild('mapaGeneral', { static: true }) private mapaGeneral!: ElementRef;\r\n\r\n\r\n ngOnInit() {\r\n this.es = {\r\n //date\r\n closeText: \"Cerrar\",\r\n prevText: \"\",\r\n currentText: \"Hoy\",\r\n monthNames: [\"enero\", \"febrero\", \"marzo\", \"abril\", \"mayo\", \"junio\",\r\n \"julio\", \"agosto\", \"septiembre\", \"octubre\", \"noviembre\", \"diciembre\"],\r\n monthNamesShort: [\"ene\", \"feb\", \"mar\", \"abr\", \"may\", \"jun\",\r\n \"jul\", \"ago\", \"sep\", \"oct\", \"nov\", \"dic\"],\r\n dayNames: [\"domingo\", \"lunes\", \"martes\", \"miércoles\", \"jueves\", \"viernes\", \"sábado\"],\r\n dayNamesShort: [\"dom\", \"lun\", \"mar\", \"mié\", \"jue\", \"vie\", \"sáb\"],\r\n dayNamesMin: [\"D\", \"L\", \"M\", \"X\", \"J\", \"V\", \"S\"],\r\n weekHeader: \"Sm\",\r\n dateFormat: \"dd/mm/yy\",\r\n firstDay: 1,\r\n isRTL: false,\r\n showMonthAfterYear: false,\r\n yearSuffix: \"\"\r\n };\r\n\r\n this.ImagenesProveedores = {\r\n CapellaSite: 'ImagenesCapellaSite',\r\n CapellaSpot: 'ImagenesCapellaSpot',\r\n CapellaStrip: 'ImagenesCapellaStrip',\r\n Maxar: 'ImagenesMaxar',\r\n Onyx: 'ImagenesOnyx',\r\n Planet: 'ImagenesPlanetScope',\r\n PlanetScope: 'ImagenesPlanetScope',\r\n PlanetSkySat: 'ImagenesPlanetSkySat',\r\n SentinelHub: 'ImagenesSentinel',\r\n Sentinel: 'ImagenesSentinel',\r\n UP42MA: 'ImagenesUP42MA',\r\n UP42A: 'ImagenesUP42A',\r\n UP42B: 'ImagenesUP42B',\r\n UP42M: 'ImagenesUP42M',\r\n OMEO: 'ImagenesOMEO'\r\n }\r\n\r\n this.PoligonosMapaProveedores = {\r\n CapellaSite: '#e34d14',\r\n CapellaSpot: '#e34d14',\r\n CapellaStrip: '#e34d14',\r\n Maxar: '#fbae1b',\r\n Onyx: '#8e8e8e',\r\n Planet: '#38e2db',\r\n PlanetScope: '#38e2db',\r\n PlanetSkySat: '#3897e2',\r\n SentinelHub: '#b3c336',\r\n Sentinel: '#b3c336',\r\n UP42MA: '#aa336a',\r\n UP42A: '#aa336a',\r\n UP42B: '#aa336a',\r\n UP42M: '#aa336a',\r\n OMEO: '#0a69ab'\r\n }\r\n\r\n this.loading = false\r\n this.loadingCompra = false\r\n this.loadingCotizacion = false\r\n this.loadingCargaCotizacion = false;\r\n this.loadingCargaImagenes = false;\r\n\r\n const idEsquema = this.esquemasServices.obtener_Id_Esquema_Por_Nombre(\"DetalleCotizacionImagenArchivo\")\r\n const idEsquemaCompra = this.esquemasServices.obtener_Id_Esquema_Por_Nombre(\"Compra\")\r\n const idOtrosProductos = this.esquemasServices.obtener_Id_Esquema_Por_Nombre(\"DetalleCotizacionOtrosProductos\")\r\n\r\n const idEncabezado = this.esquemasServices.obtener_Id_Esquema_Por_Nombre(\"EncabezadoCotizacion\")\r\n this.idEsquemaEncabezadoCotizacion = idEncabezado;\r\n\r\n //DetalleCotizacionImagenProgramacion\r\n const idImagenProgramacion = this.esquemasServices.obtener_Id_Esquema_Por_Nombre(\"DetalleCotizacionImagenProgramacion\")\r\n this.dashboardService.getEsquemaPorId(idImagenProgramacion).subscribe({\r\n next: (data: any) => {\r\n this.esquemaDetCotImagenProgramacion = data.dato;\r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n }\r\n })\r\n\r\n this.dashboardService.getEsquemaPorId(this.esquemasServices.obtener_Id_Esquema_Por_Nombre(\"PoligonoGeografico\")).subscribe({\r\n next: (data: any) => {\r\n console.log(data)\r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n }\r\n })\r\n this.dashboardService.getEsquemaPorId(this.esquemasServices.obtener_Id_Esquema_Por_Nombre(\"BusquedaPoligonoGeografico\")).subscribe({\r\n next: (data: any) => {\r\n console.log(data)\r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n }\r\n })\r\n this.dashboardService.getEsquemaPorId(this.esquemasServices.obtener_Id_Esquema_Por_Nombre(\"DetalleCotizacionPoligonoGeo\")).subscribe({\r\n next: (data: any) => {\r\n console.log(data)\r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n }\r\n })\r\n\r\n this.getCotizaciones(this.paginaCotizacion); \r\n\r\n this.dashboardService.getEsquemaPorId(this.idEsquemaEncabezadoCotizacion).subscribe({\r\n next: (data: any) => {\r\n // console.log(data);\r\n this.esquemaCotizacion = data;\r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n }\r\n })\r\n\r\n this.dashboardService.getEsquemaPorId(idEsquemaCompra).subscribe({\r\n next: (data: any) => {\r\n this.esquemaCompra = data;\r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n }\r\n })\r\n\r\n this.dashboardService.getEsquemaPorId(idOtrosProductos).subscribe({\r\n next: (data: any) => {\r\n this.esquemaOtrosProductos = data;\r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n }\r\n })\r\n\r\n if (idEsquema !== undefined) {\r\n let id = idEsquema.toString();\r\n\r\n this.esquemasServices.generar_codigos_por_Esquema(id).pipe(\r\n map((data: Esquemas[]) => {\r\n return data\r\n })\r\n ).subscribe({\r\n next: (data: any) => {\r\n this.esquemaDetCotImgArchivo = data\r\n\r\n const listaProcesamiento = data.filter((s: { tipoDato: string; codigoInterno: string; }) => s.tipoDato == \"Enumeracion\" && s.codigoInterno == \"Procesamiento\")\r\n const listaLicencia = data.filter((s: { tipoDato: string; codigoInterno: string; }) => s.tipoDato == \"Enumeracion\" && s.codigoInterno == \"Licencia\")\r\n const listaTipoEntrega = data.filter((s: { tipoDato: string; codigoInterno: string; }) => s.tipoDato == \"Enumeracion\" && s.codigoInterno == \"TipoEntrega\")\r\n\r\n this.nivelesProcesamiento = listaProcesamiento[0].atributoEnumeracion.opcionesEnumeracion\r\n this.licencias = listaLicencia[0].atributoEnumeracion.opcionesEnumeracion\r\n this.tiposEntrega = listaTipoEntrega[0].atributoEnumeracion.opcionesEnumeracion\r\n\r\n },\r\n error: (error) => {\r\n console.error(error)\r\n }\r\n })\r\n }\r\n\r\n this.dashboardService.consultaServiciosProfecionales().subscribe({\r\n\r\n next: (data: any) => {\r\n let arregloGeneral = data.dato;\r\n\r\n // arregloGeneral.forEach((element: any) => {\r\n\r\n // let elemento = element\r\n\r\n\r\n // element.instanciasAtributo.forEach((element: any) => {\t\r\n\r\n\r\n // // if (!element.instanciaAtributoEnumeracion) {\r\n // // return false\r\n // // }\r\n\r\n // element.instanciaAtributoEnumeracion.opcionesEnumeracion.forEach((element: any) => {\r\n\r\n\r\n // if (element.identificador == 'SSPP TyM' && element.valor == '2' || element.identificador == 'SSPP PIM' && element.valor == '3' || element.identificador == 'SSPP CGM' && element.valor == '4') {\r\n // let _valorUnitario = ''\r\n // let _descripcion = ''\r\n // let _unidadMedida = ''\r\n // let _cantidadMinima = ''\r\n // let _codigoReferencia = ''\r\n // let _cantidadMaxima = ''\r\n\r\n // elemento.instanciasAtributo.forEach((e: any) => {\r\n // if (e.atributo.codigoInterno == 'ValorUnitario') {\r\n // _valorUnitario = e.instanciaAtributoNumerico.valor\r\n // } else if (e.atributo.codigoInterno == 'UnidadMedida') {\r\n // _unidadMedida = e.instanciaAtributoEnumeracion.instanciasAtributoEnumeracionOpcionesEnumeracion[0].opcionEnumeracionIdentificadorAplicado\r\n // } else if (e.atributo.codigoInterno == 'CantidadMinima') {\r\n // _cantidadMinima = e.instanciaAtributoNumerico.valor\r\n // } else if (e.atributo.codigoInterno == 'Descripcion') {\r\n // _descripcion = e.instanciaAtributoCadena.valor\r\n // } else if (e.atributo.codigoInterno == 'CodigoReferencia') {\r\n // _codigoReferencia = e.instanciaEsquemaID\r\n // }else if(e.atributo.codigoInterno == 'CantidadMaxima'){\r\n // _cantidadMaxima = e.instanciaAtributoNumerico.valor\r\n // }\r\n // })\t\r\n\r\n // const serv_profecional = {\r\n // id: elemento.id,\r\n // codigoReferenciaId: _codigoReferencia,\r\n // identificador: elemento.nombre,\r\n // descripcion: _descripcion,\r\n // valorUnitario: _valorUnitario,\r\n // unidadDeMedida: _unidadMedida,\r\n // cantidadMinima: _cantidadMinima,\r\n // cantidadMaxima: _cantidadMaxima,\r\n // estado: 'En espera'\r\n // }\r\n\r\n // if(element.identificador == 'SSPP TyM' && element.valor == '2' ){\r\n // this.serviciosPofecionales_TYM.push(serv_profecional)\r\n // }else if(element.identificador == 'SSPP PIM' && element.valor == '3' ){\r\n // this.serviciosPofecionales_PIM.push(serv_profecional)\r\n // }else if(element.identificador == 'SSPP CGM' && element.valor == '4'){\r\n // this.serviciosPofecionales_CGM.push(serv_profecional)\r\n // }\t\t\t\t\t\r\n // }\r\n // })\r\n // })\r\n // });\r\n\r\n // this.serviciosProfecionales_Todos.push(this.serviciosPofecionales_CGM)\r\n // this.serviciosProfecionales_Todos.push(this.serviciosPofecionales_PIM)\r\n // this.serviciosProfecionales_Todos.push(this.serviciosPofecionales_TYM)\r\n\r\n this.serviciosProfecionales_Todos.push(arregloGeneral)\r\n\r\n },\r\n error: (err: any) => {\r\n console.log(err);\r\n }\r\n })\r\n }\r\n\r\n getCotizaciones(pagina: number) {\r\n this.loadingCargaCotizacion = true;\r\n\r\n this.cotizaciones = [];\r\n this.selectedCotizacion = undefined;\r\n this.nombreCotizacion = '-';\r\n this.imagenes = [];\r\n this.productos = [];\r\n this.totalCreditos = 0;\r\n this.totalCreditosImagenes = 0;\r\n this.totalCreditosServicios = 0;\r\n\r\n this.dashboardService.getCotizaciones(pagina, this.idEsquemaEncabezadoCotizacion).subscribe(\r\n {\r\n next: data => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n this.nombreUsuario = `${localStorage.getItem('nombres')}`;\r\n this.totalRegistrosCotizacion = data.totalRegistros;\r\n this.totalPaginasCotizacion = data.totalPaginas;\r\n this.tienePaginaSiguiente = data.tienePaginaSiguiente;\r\n this.tienePaginaAnterior = data.tienePaginaAnterior;\r\n\r\n if (data.dato.length > 0) {\r\n data.dato.forEach((item: any) => {\r\n this.cotizaciones.push(\r\n {\r\n id: item.id,\r\n nombre: item.nombre,\r\n rowVersion: item.rowVersion,\r\n usuarioPropietarioID: item.usuarioPropietarioID,\r\n fechaCreacion: item.fechaCreacion.split(\"T\")[0],\r\n item: item\r\n }\r\n );\r\n });\r\n\r\n if (this.selectedCotizacion == undefined || this.selectedCotizacion == null) {\r\n this.selectedCotizacion = this.cotizaciones[0]\r\n this.idCotizacion = this.selectedCotizacion.id\r\n }\r\n }\r\n },\r\n error: e => {\r\n this.loadingCargaCotizacion = false;\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n this.loadingCargaCotizacion = false;\r\n }\r\n }\r\n )\r\n }\r\n\r\n getMapView(container: any, map: any, zoom: any, coordenadas: any) {\r\n return new MapView({\r\n container: container,\r\n map: map,\r\n zoom: zoom,\r\n center: coordenadas\r\n });\r\n }\r\n\r\n getBaseMapGallery(view: any) {\r\n const basemapGallery = new BasemapGallery({\r\n view: view,\r\n container: document.createElement(\"div\")\r\n });\r\n\r\n const bgExpand = new Expand({\r\n expandIconClass: \"esri-icon-basemap\",\r\n view: view,\r\n content: basemapGallery\r\n });\r\n\r\n // close the expand whenever a basemap is selected\r\n basemapGallery.watch(\"activeBasemap\", () => {\r\n const mobileSize =\r\n view.heightBreakpoint === \"xsmall\" ||\r\n view.widthBreakpoint === \"xsmall\";\r\n\r\n if (mobileSize) {\r\n bgExpand.collapse();\r\n }\r\n });\r\n\r\n return bgExpand\r\n }\r\n\r\n getPoligonoMapa(cobertura: any, color: any){\r\n const fillSymbol = {\r\n type: \"simple-fill\",\r\n style: \"diagonal-cross\",\r\n color: color,\r\n outline: {\r\n color: color,\r\n width: 2\r\n }\r\n }\r\n\r\n const polygonGraphic = new Graphic({\r\n geometry: cobertura,\r\n symbol: fillSymbol\r\n });\r\n\r\n return polygonGraphic;\r\n }\r\n\r\n initializeMap(obj: any, is2D: boolean = true) {\r\n const AreaDeInteres = obj.AreaDeInteres;\r\n\r\n let arrPolygon: number[][] = []\r\n\r\n AreaDeInteres.valor?.coordenadas2D.forEach((coor: any) => {\r\n arrPolygon.push([coor.longitud, coor.latitud])\r\n });\r\n\r\n //Generar mapa y vista \r\n const containerMapaGeneral = this.mapaGeneral.nativeElement;\r\n\r\n const mapGeneral = new Map({\r\n basemap: \"arcgis-topographic\"\r\n });\r\n\r\n const mapViewGeneral = new MapView({\r\n container: containerMapaGeneral,\r\n map: mapGeneral,\r\n center: [-73.98, 4.92],\r\n zoom: 5\r\n });\r\n\r\n //Poligno AOI\r\n const polygon = new Polygon({ rings: [arrPolygon] })\r\n\r\n const fillSymbol = {\r\n type: \"simple-fill\",\r\n // style:\"diagonal-cross\",\r\n color: [255, 255, 255, 0.1],\r\n outline: {\r\n color: \"#000000\",\r\n width: 1\r\n }\r\n };\r\n\r\n const polygonGraphic = new Graphic({\r\n geometry: polygon,\r\n symbol: fillSymbol\r\n });\r\n\r\n const graphicsLayerAOI = new GraphicsLayer({\r\n title: `AOI`,\r\n id: `AOI`\r\n })\r\n\r\n mapGeneral.add(graphicsLayerAOI)\r\n graphicsLayerAOI.add(polygonGraphic);\r\n\r\n var polygonExtent = polygon.extent;\r\n\r\n var zoomedExtent = new Extent({\r\n xmin: polygonExtent.xmin - 0.1,\r\n ymin: polygonExtent.ymin - 0.1,\r\n xmax: polygonExtent.xmax + 0.1,\r\n ymax: polygonExtent.ymax + 0.1,\r\n spatialReference: mapViewGeneral.spatialReference\r\n });\r\n\r\n mapViewGeneral.extent = zoomedExtent;\r\n\r\n //widget mapas base\r\n mapViewGeneral.ui.add(this.getBaseMapGallery(mapViewGeneral), \"top-right\")\r\n\r\n let layerLisT = new LayerList({\r\n view: mapViewGeneral,\r\n });\r\n\r\n mapViewGeneral.ui.add(layerLisT, {\r\n position: \"top-right\"\r\n });\r\n\r\n layerLisT.selectionEnabled = true;\r\n\r\n //Obtener imagenes comparando ids cotizacion vs busqueda\r\n const imagenes_encontradas_en_cotizacion: any[] = []\r\n const coordArcgis: any[] = []\r\n\r\n this.imagenes.forEach((itemData: any) => {\r\n let data_img = itemData\r\n let id_a_buscar = itemData.idData\r\n\r\n const imgBusquedaProveedor = obj[this.ImagenesProveedores[`${itemData.proveedor}`]]; \r\n const elemBusquedaProveedor = imgBusquedaProveedor.filter((s: { valor: { imagenId: string | undefined; }; }) => s.valor.imagenId == itemData.idData);\r\n if (elemBusquedaProveedor.length > 0) {\r\n let cord_formato_arcgis: any[] = []\r\n\r\n elemBusquedaProveedor[0].valor?.coordenadas2D.forEach((coor: any) => {\r\n cord_formato_arcgis.push([coor.longitud, coor.latitud])\r\n });\r\n\r\n coordArcgis.push({\r\n id: `${itemData.idData}`,\r\n proveedor: itemData.proveedor,\r\n cooordenadas: cord_formato_arcgis\r\n })\r\n }\r\n })\r\n \r\n // Agregar data de imagenes al mapa\r\n coordArcgis.forEach((e) => {\r\n const graphicsLayerImagenes = new GraphicsLayer({\r\n title: `${e.proveedor}: ${e.id}`,\r\n id: `imagenes`\r\n })\r\n\r\n mapGeneral.add(graphicsLayerImagenes)\r\n const polygonImagen = new Polygon({ rings: [e.cooordenadas] })\r\n const cobertura: any = geometryEngine.intersect(polygon, polygonImagen)\r\n\r\n graphicsLayerImagenes.add(this.getPoligonoMapa(cobertura, this.PoligonosMapaProveedores[`${e.proveedor}`])); \r\n })\r\n\r\n console.log(this.arrayPoligonosGeograficos);\r\n if(this.arrayPoligonosGeograficos.length > 0){\r\n this.arrayPoligonosGeograficos.forEach((polGeo: any) => {\r\n const gLayer = new GraphicsLayer({\r\n title: `${polGeo.tipoProducto} - ${polGeo.codigoReferencia}`,\r\n id: `${polGeo.tipoProducto} - ${polGeo.codigoReferencia}`\r\n })\r\n\r\n let coords: any[] = [];\r\n polGeo.preview.valor?.coordenadas2D.forEach((coor: any) => {\r\n coords.push([coor.longitud, coor.latitud])\r\n });\r\n\r\n const polygonImagen = new Polygon({ rings: [coords] })\r\n const cobertura: any = geometryEngine.intersect(polygon, polygonImagen)\r\n \r\n mapGeneral.add(gLayer);\r\n gLayer.add(this.getPoligonoMapa(cobertura, '#dc02cb'));\r\n })\r\n }\r\n\r\n mapViewGeneral.on(\"drag\", function (event: any) {\r\n captura()\r\n });\r\n\r\n mapViewGeneral.on(\"resize\", function (event: any) {\r\n captura()\r\n });\r\n\r\n mapViewGeneral.on(\"pointer-move\", function (event: any) {\r\n captura()\r\n });\r\n\r\n mapViewGeneral.on(\"mouse-wheel\", function (event: any) {\r\n captura()\r\n });\r\n\r\n mapViewGeneral.on(\"blur\", function (event: any) {\r\n captura()\r\n });\r\n\r\n const self = this\r\n function captura() {\r\n mapViewGeneral.takeScreenshot({\r\n format: \"jpg\",\r\n quality: 100,\r\n width: 500,\r\n height: 500,\r\n }).then(function (screenshot) {\r\n let captura = screenshot.dataUrl\r\n self.capturaMapa = captura\r\n });\r\n }\r\n }\r\n\r\n getImagenesCotizacion(actualizaEncabezado: boolean) {\r\n this.loadingCargaImagenes = true;\r\n this.visibleTabArchivo = false;\r\n this.visibleTabProgramacion = false;\r\n this.visibleTabPoligonos = false;\r\n\r\n this.dashboardService.getImagenesCotizacion(this.idCotizacion).subscribe(\r\n {\r\n next: data => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n this.imagenes = []\r\n this.totalCreditos -= this.totalCreditosImagenes;\r\n this.totalCreditosImagenes = 0\r\n\r\n const indexFinal = data.dato.length - 1;\r\n\r\n if (data.dato.length > 0) {\r\n this.visibleTabArchivo = true;\r\n\r\n data.dato.forEach((res: any, index: number) => {\r\n const atributos = res.instanciasAtributo;\r\n console.log(atributos);\r\n \r\n this.atributos = atributos;\r\n\r\n let urlImagen = ''\r\n let sizeImage = '80'\r\n\r\n const proveedor = atributos.PlataformaBusqueda.valor.opcionEnumeracionIdentificadorAplicado;\r\n const idData = atributos.IdentificadorImagen.valor;\r\n const propiedades = atributos.PropiedadesImagen.valor;\r\n const procesamiento = atributos.Procesamiento;\r\n const licencia = atributos.Licencia;\r\n const tipoEntrega = atributos.TipoEntrega;\r\n \r\n let valorProcesamiento = ''\r\n let valorLicencia = ''\r\n let valorTipoEntrega = ''\r\n\r\n if (procesamiento) {\r\n valorProcesamiento = procesamiento.valor.opcionEnumeracionIdentificadorAplicado;\r\n }\r\n\r\n if (licencia) {\r\n valorLicencia = licencia.valor.opcionEnumeracionIdentificadorAplicado;\r\n }\r\n\r\n if (tipoEntrega) {\r\n valorTipoEntrega = tipoEntrega.valor.opcionEnumeracionIdentificadorAplicado;\r\n }\r\n\r\n let valorCreditos = 0;\r\n\r\n if(atributos.CreditosItem){\r\n valorCreditos = atributos.CreditosItem.valor;\r\n }\r\n\r\n this.totalCreditos += valorCreditos\r\n this.totalCreditosImagenes += valorCreditos\r\n\r\n //console.log(this.totalCreditos);\r\n \r\n\r\n let codReferencia = '-' \r\n if(atributos.CodigoReferencia){\r\n codReferencia = atributos.CodigoReferencia.valor.tipoInstanciaEsquemaNombre;\r\n }\r\n\r\n this.imagenes.push(\r\n {\r\n id: res.id,\r\n nombre: res.nombre,\r\n idData: idData,\r\n url: '',\r\n sizeImage: sizeImage,\r\n propiedades: propiedades,\r\n proveedor: proveedor,\r\n temporalidad: atributos.Temporalidad.valor,\r\n valorCreditos: valorCreditos,\r\n codigoReferencia: codReferencia,\r\n licencia: valorLicencia,\r\n nivelProcesamiento: valorProcesamiento,\r\n tipoEntrega: valorTipoEntrega,\r\n areaCobertura: atributos.AreaCoberturaKm2.valor.toFixed(2),\r\n idCotizacion: this.idCotizacion,\r\n rowVersion: res.rowVersion,\r\n usuarioPropietarioID: res.usuarioPropietarioID,\r\n data: res,\r\n index: index + 1\r\n }\r\n );\r\n\r\n });\r\n }\r\n\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n this.dashboardService.getOtrosProductosCotizacion(this.idCotizacion).subscribe({\r\n\r\n next: (data: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n this.totalCreditos -= this.totalCreditosServicios;\r\n this.productos = [];\r\n this.totalCreditosServicios = 0;\r\n\r\n if (data.dato.length > 0) {\r\n this.visibleTabArchivo = true;\r\n\r\n data.dato.forEach((res: any, index: number) => {\r\n const atributos = res.instanciasAtributo;\r\n //this.atributos = atributos;\r\n\r\n let valorCreditos = 0\r\n valorCreditos = atributos.CreditosItem.valor;\r\n\r\n this.totalCreditos += valorCreditos\r\n this.totalCreditosServicios += valorCreditos\r\n\r\n let codigoDeReferencia = atributos.CodigoReferencia.valor.tipoInstanciaEsquemaNombre;\r\n let data_adiccional: any = this.obtenerDatosDeServicios(codigoDeReferencia);\r\n\r\n this.productos.push(\r\n {\r\n id: res.id,\r\n nombre: res.nombre,\r\n descripcion: data_adiccional.descripcion,\r\n unidad: data_adiccional.unidad,\r\n cantidad: atributos.Cantidad.valor,\r\n valorCreditos: valorCreditos,\r\n codigoReferencia: codigoDeReferencia,\r\n idCotizacion: this.idCotizacion,\r\n rowVersion: res.rowVersion,\r\n usuarioPropietarioID: res.usuarioPropietarioID,\r\n data: res,\r\n index: index + 1\r\n }\r\n );\r\n })\r\n }\r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n },\r\n complete: () => {\r\n this.dashboardService.getDetalleCotizacionImagenProgramacion(this.idCotizacion).subscribe({\r\n\r\n next: (data: any) => { \r\n\r\n this.controlError.mensajeDeError(data) \r\n\r\n this.totalCreditos -= this.totalCreditosImagenesProgramadas;\r\n this.imagenesProgramacion = [];\r\n this.totalCreditosImagenesProgramadas = 0;\r\n\r\n if (data.dato.length > 0) {\r\n this.visibleTabProgramacion = true;\r\n\r\n data.dato.forEach((res: any, index: number) => {\r\n const atributos = res.instanciasAtributo;\r\n this.atributosProgramacion = atributos;\r\n\r\n let valorCreditos = 0;\r\n valorCreditos = atributos.CreditosItem.valor;\r\n\r\n this.totalCreditos += valorCreditos\r\n this.totalCreditosImagenesProgramadas += valorCreditos\r\n\r\n const fecIni = atributos.FechaInicialAdquisicion.valor;\r\n const fecFin = atributos.FechaFinalAdquisicion.valor;\r\n const duracionDias = this.calculateDateDiff(fecIni, fecFin);\r\n\r\n this.imagenesProgramacion.push(\r\n {\r\n id: res.id,\r\n valorCreditos: atributos.CreditosItem.valor,\r\n codigoReferencia: atributos.CodigoReferencia.valor.tipoInstanciaEsquemaNombre,\r\n areaCobertura: atributos.AreaCoberturaKm2.valor.toFixed(2),\r\n //modoImagen: modo,\r\n idCotizacion: this.idCotizacion,\r\n fechaInicio: fecIni.split(\"T\")[0],\r\n fechaFin: fecFin.split(\"T\")[0],\r\n duracion: duracionDias,\r\n rowVersion: res.rowVersion,\r\n usuarioPropietarioID: res.usuarioPropietarioID,\r\n data: res,\r\n index: index + 1\r\n }\r\n );\r\n })\r\n }\r\n },\r\n error: (error) => {\r\n console.log(error)\r\n },\r\n complete: () => {\r\n // console.log('DetalleCotizacionPoligonoGeo')\r\n this.dashboardService.getDetallesCotizacion(this.idCotizacion, \"DetalleCotizacionPoligonoGeo\").subscribe({\r\n next: (data: any) => { \r\n \r\n this.controlError.mensajeDeError(data)\r\n\r\n // console.log(data);\r\n this.arrayPoligonosGeograficos = [];\r\n this.totalCreditos -= this.totalCreditosPoligonosGeograficos;\r\n this.totalCreditosPoligonosGeograficos = 0;\r\n\r\n if (data.dato.length > 0) { \r\n this.visibleTabArchivo = true;\r\n\r\n data.dato.forEach((res: any, index: number) => {\r\n const att = res.instanciasAtributo;\r\n \r\n let valorCreditos = 0;\r\n valorCreditos = att.CreditosItem.valor;\r\n \r\n this.totalCreditos += valorCreditos\r\n this.totalCreditosPoligonosGeograficos += valorCreditos\r\n\r\n console.log(att.PoligonoGeografico.valor.tipoInstanciaEsquemaID);\r\n\r\n let tipoProducto = '-';\r\n\r\n this.dashboardService.getInstanciaPorID(att.PoligonoGeografico.valor.tipoInstanciaEsquemaID).subscribe({\r\n next: (dataInstancia: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n // console.log(dataInstancia);\r\n tipoProducto = dataInstancia.dato.instanciasAtributo.TipoProducto.valor.opcionEnumeracionIdentificadorAplicado;\r\n\r\n this.arrayPoligonosGeograficos.push(\r\n {\r\n id: res.id,\r\n valorCreditos: att.CreditosItem.valor,\r\n codigoReferencia: att.CodigoReferencia.valor.tipoInstanciaEsquemaNombre,\r\n areaCobertura: att.AreaCoberturaKm2.valor.toFixed(2),\r\n tipoProducto: tipoProducto,\r\n preview: dataInstancia.dato.instanciasAtributo.Preview,\r\n rowVersion: res.rowVersion,\r\n usuarioPropietarioID: res.usuarioPropietarioID,\r\n data: res,\r\n index: index + 1\r\n }\r\n );\r\n \r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n },\r\n });\r\n \r\n \r\n })\r\n }\r\n \r\n },\r\n error: (error) => {\r\n console.log(error)\r\n },\r\n complete: () => {\r\n console.log(\"complete DetalleCotizacionPoligonoGeo\");\r\n if(this.itemCotizacion.instanciasAtributo.TotalCreditos){\r\n if(this.itemCotizacion.instanciasAtributo.TotalCreditos.valor == this.totalCreditos){\r\n this.tieneReporteCotizacion = this.tieneReporteCotizacionTemp;\r\n }\r\n else{\r\n this.tieneReporteCotizacion = false;\r\n }\r\n }\r\n }\r\n })\r\n }\r\n })\r\n }\r\n })\r\n this.loadingCargaImagenes = false\r\n }\r\n }\r\n )\r\n\r\n }\r\n\r\n getLabelProveedor(proveedor: string) {\r\n switch (proveedor) {\r\n case 'Planet':\r\n return 'primary';\r\n case 'Maxar':\r\n return 'warning';\r\n case 'OUTOFSTOCK':\r\n return 'danger';\r\n }\r\n }\r\n\r\n getLabelCreditos() {\r\n return 'success';\r\n }\r\n\r\n abrirPrecotizacion(imagen: Imagen) {\r\n this.imagen = { ...imagen }; \r\n\r\n const opProcesamiento = this.nivelesProcesamiento.filter(s => s.identificador == this.imagen.nivelProcesamiento)\r\n const opLicencia = this.licencias.filter(s => s.identificador == this.imagen.licencia)\r\n const opTipoEntrega = this.tiposEntrega.filter(s => s.identificador == this.imagen.tipoEntrega)\r\n\r\n if (opProcesamiento.length > 0) {\r\n this.selectedNivelProcesamiento = opProcesamiento[0]\r\n }\r\n else {\r\n this.selectedNivelProcesamiento = null\r\n }\r\n\r\n if (opLicencia.length > 0) {\r\n this.selectedLicencia = opLicencia[0]\r\n }\r\n else {\r\n this.selectedLicencia = null\r\n }\r\n\r\n if (opTipoEntrega.length > 0) {\r\n this.selectedTipoEntrega = opTipoEntrega[0]\r\n }\r\n else {\r\n this.selectedTipoEntrega = null\r\n }\r\n\r\n if (this.imagenId != this.imagen.idData) {\r\n this.urlImagen = '';\r\n this.imagenProveedor = this.imagen.proveedor;\r\n this.imagenId = this.imagen.idData;\r\n this.precotizacionDialog = true;\r\n\r\n const idBusqueda = this.imagen.data.instanciasAtributo.BusquedaImagenArchivo.valor.tipoInstanciaEsquemaID;\r\n this.busquedaService.consulta_imagenes(idBusqueda).subscribe({\r\n next: (data: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n const att = data.dato.instanciasAtributo;\r\n const imgBusquedaProveedor = att[this.ImagenesProveedores[`${this.imagen.proveedor}`]]; \r\n const elemBusquedaProveedor = imgBusquedaProveedor.filter((s: { valor: { imagenId: string | undefined; }; }) => s.valor.imagenId == this.imagen.idData);\r\n\r\n if (elemBusquedaProveedor.length > 0) {\r\n const idArchivo = elemBusquedaProveedor[0].id\r\n\r\n this.busquedaService.retornar_imagen(idArchivo)\r\n .subscribe({\r\n next: (imagenBlob: any) => {\r\n const imageUrl = URL.createObjectURL(imagenBlob);\r\n this.urlImagen = imageUrl;\r\n },\r\n error: (res) => {\r\n console.log(res)\r\n },\r\n })\r\n }\r\n },\r\n error: (error) => {\r\n this.precotizacionDialog = true;\r\n console.log(error)\r\n },\r\n complete: () => {\r\n this.precotizacionDialog = true;\r\n }\r\n })\r\n }\r\n else {\r\n this.precotizacionDialog = true;\r\n }\r\n }\r\n\r\n abrirMapas() {\r\n if (this.nombreCotizacion == '-') {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'Debe seleccionar una cotización para poder generar el documento', life: 5000 });\r\n }\r\n else {\r\n if (this.visibleTabArchivo) {\r\n if (this.imagenes.length == 0) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'No se puede generar la cotización, la cotización no posee imágenes asociadas', life: 5000 });\r\n }\r\n else {\r\n let cambiarFechasProgramacion = false;\r\n\r\n if (this.imagenesProgramacion.length > 0) {\r\n this.imagenesProgramacion.forEach((item: any, index: number) => {\r\n const duracionDias = this.calculateDateDiff(item.fechaInicio!, item.fechaFin!);\r\n\r\n if (duracionDias < 15) {\r\n cambiarFechasProgramacion = true;\r\n }\r\n })\r\n }\r\n\r\n if (cambiarFechasProgramacion) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'No se puede generar la cotización, tiene que modificar las fechas en la programación de imágenes', life: 5000 });\r\n }\r\n else { \r\n const idBusqueda = this.atributos.BusquedaImagenArchivo.valor.tipoInstanciaEsquemaID;\r\n const validaGeneracion = this.validaGenerar()\r\n\r\n if (validaGeneracion.genera) {\r\n let imgSinCreditos = false;\r\n let idImgSinCreditos = '';\r\n let provImgSinCreditos = '';\r\n\r\n this.imagenes.forEach((item: any) => { \r\n if (item.valorCreditos == 0) {\r\n imgSinCreditos = true;\r\n idImgSinCreditos = item.idData;\r\n provImgSinCreditos = item.proveedor;\r\n }\r\n })\r\n\r\n if(imgSinCreditos){\r\n const msg = `Para poder generar la cotización es necesario completar los datos necesarios para las imágenes del proveedor ${provImgSinCreditos}`\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: msg, life: 7000 });\r\n }\r\n else{\r\n this.busquedaService.consulta_imagenes(idBusqueda).subscribe({\r\n next: (data: any) => { \r\n \r\n this.controlError.mensajeDeError(data)\r\n\r\n const atributos = data.dato.instanciasAtributo;\r\n this.coberturaAOI = atributos.CoberturaAOI.valor\r\n \r\n this.initializeMap(atributos);\r\n },\r\n error: (error) => {\r\n console.log(error)\r\n },\r\n complete: () => {\r\n this.mapasDialog = true;\r\n }\r\n })\r\n }\r\n \r\n }\r\n else {\r\n const msg = `Para poder generar la cotización, es necesario completar los datos adicionales de la imagen No. ${validaGeneracion.index}, con ID: ${validaGeneracion.idData}`\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: msg, life: 5000 });\r\n }\r\n }\r\n }\r\n }\r\n else {\r\n this.initializeMap(this.atributosProgramacion);\r\n this.mapasDialog = true;\r\n }\r\n\r\n }\r\n }\r\n\r\n validaGenerar() {\r\n let permiteGenerar = true\r\n let idData = ''\r\n let index = ''\r\n\r\n this.imagenes.forEach((item: any) => {\r\n // console.log(item);\r\n \r\n if (item.nivelProcesamiento == '' || item.licencia == '' || item.tipoEntrega == '') {\r\n permiteGenerar = false\r\n idData = item.idData\r\n index = item.index\r\n }\r\n })\r\n\r\n const obj = {\r\n genera: true,\r\n idData: idData,\r\n index: index\r\n };\r\n\r\n return obj\r\n }\r\n\r\n eliminarImagen(imagen: Imagen) {\r\n\r\n let id = imagen.idData\r\n let textoConfirmacion = 'Está seguro que desea eliminar la imagen con ID ' + id + '?'\r\n\r\n if(!id){\r\n id = imagen.data.nombre\r\n textoConfirmacion = 'Está seguro que desea eliminar el producto: ' + id + '?'\r\n }\r\n\r\n if (this.tieneCompra) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'La imagen no se puede eliminar debido a que la cotización se encuentra en proceso de compra', life: 5000 });\r\n }\r\n else {\r\n\r\n this.confirmationService.confirm({\r\n message: textoConfirmacion,\r\n header: 'Eliminar',\r\n icon: 'pi pi-info-circle',\r\n accept: () => {\r\n this.dashboardService.deleteInstancia(imagen.id, imagen.rowVersion).subscribe(\r\n {\r\n next: result => {\r\n\r\n const imgs = this.imagenes.filter(s => s.id != imagen.id)\r\n this.imagenes = imgs\r\n\r\n //Actualizar productos geo en cotizacion \r\n const prodGeo = this.arrayPoligonosGeograficos.filter(s => s.id != imagen.id)\r\n this.arrayPoligonosGeograficos = prodGeo\r\n\r\n const indexFinal = this.imagenes.length - 1;\r\n\r\n this.totalCreditos -= this.totalCreditosImagenes;\r\n this.totalCreditosImagenes = 0;\r\n this.imagenes.forEach((item: any, index: number) => {\r\n this.totalCreditos += item.valorCreditos\r\n this.totalCreditosImagenes += item.valorCreditos;\r\n // if(index == indexFinal){\r\n // this.actualizarCreditosCotizacion();\r\n // }\r\n })\r\n\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: 'Imagen eliminada', life: 5000 });\r\n this.tieneReporteCotizacion = false;\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.mensajes[0], life: 5000 });\r\n }\r\n }\r\n )\r\n }\r\n });\r\n }\r\n }\r\n\r\n eliminarCotizacion() {\r\n if (this.nombreCotizacion == '-') {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'Debe seleccionar una cotización para poder eliminarla', life: 5000 });\r\n }\r\n else {\r\n if (this.tieneCompra) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'La cotización no se puede eliminar debido a que ya se encuentra en proceso de compra', life: 5000 });\r\n }\r\n else {\r\n this.confirmationService.confirm({\r\n message: 'Está seguro que desea eliminar la cotización ' + this.nombreCotizacion + '?',\r\n header: 'Eliminar',\r\n icon: 'pi pi-info-circle',\r\n accept: () => {\r\n const numeroTransaccionesImagenes = this.imagenes.length;\r\n const numeroTransaccionesProductos = this.productos.length;\r\n let numeroTransaccionImagen = 0;\r\n let numeroTransaccionProducto = 0;\r\n\r\n if (this.imagenes.length > 0) {\r\n this.imagenes.forEach((item: any) => {\r\n //Elimina Imagen \r\n this.dashboardService.deleteInstancia(item.id, item.rowVersion).subscribe(\r\n {\r\n next: result => {\r\n numeroTransaccionImagen += 1;\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n if (numeroTransaccionImagen == numeroTransaccionesImagenes) {\r\n if (this.tieneReporteCotizacion) {\r\n //Elimina Reporte eliminarCotizacion\r\n this.dashboardService.deleteInstancia(this.instanciaArchivoCotizacion.id, this.instanciaArchivoCotizacion.rowVersion).subscribe(\r\n {\r\n next: result => {\r\n this.tieneReporteCotizacion = false;\r\n\r\n //Elimina Cotización\r\n this.dashboardService.deleteInstancia(this.idCotizacion, this.rowVersionCotizacion).subscribe(\r\n {\r\n next: result => {\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: result.mensajes[0].replace('Instancia', 'Cotización'), life: 5000 });\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n this.getCotizaciones(this.paginaCotizacion);\r\n }\r\n }\r\n )\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n // console.log('ok');\r\n }\r\n }\r\n )\r\n } else {\r\n //Elimina Cotización\r\n // this.dashboardService.deleteInstancia(this.selectedCotizacion?.id, this.selectedCotizacion?.rowVersion).subscribe(\r\n // {\r\n // next: result => {\r\n // this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: result.mensajes[0].replace('Instancia', 'Cotización'), life: 5000 }); \r\n // },\r\n // error: e => {\r\n // console.log(e);\r\n\r\n // this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n // }, \r\n // complete: () => {\r\n // this.getCotizaciones(this.paginaCotizacion);\r\n // }\r\n // }\r\n // ) \r\n if (this.productos.length > 0) {\r\n this.productos.forEach((item: any) => {\r\n //Elimina Servicio Adicional\r\n this.dashboardService.deleteInstancia(item.id, item.rowVersion).subscribe(\r\n {\r\n next: result => {\r\n numeroTransaccionProducto += 1;\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n if (numeroTransaccionProducto == numeroTransaccionesProductos) {\r\n if (this.tieneReporteCotizacion) {\r\n //Elimina Reporte\r\n this.dashboardService.deleteInstancia(this.instanciaArchivoCotizacion.id, this.instanciaArchivoCotizacion.rowVersion).subscribe(\r\n {\r\n next: result => {\r\n this.tieneReporteCotizacion = false;\r\n\r\n //Elimina Cotización\r\n this.dashboardService.deleteInstancia(this.idCotizacion, this.rowVersionCotizacion).subscribe(\r\n {\r\n next: result => {\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: result.mensajes[0].replace('Instancia', 'Cotización'), life: 5000 });\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n this.getCotizaciones(this.paginaCotizacion);\r\n }\r\n }\r\n )\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n // console.log('ok');\r\n }\r\n }\r\n )\r\n } else {\r\n //Elimina Cotización\r\n this.dashboardService.deleteInstancia(this.idCotizacion, this.rowVersionCotizacion).subscribe(\r\n {\r\n next: result => {\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: result.mensajes[0].replace('Instancia', 'Cotización'), life: 5000 });\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n this.getCotizaciones(this.paginaCotizacion);\r\n }\r\n }\r\n )\r\n }\r\n }\r\n }\r\n }\r\n )\r\n })\r\n } else {\r\n if (this.tieneReporteCotizacion) {\r\n //Elimina Reporte\r\n this.dashboardService.deleteInstancia(this.instanciaArchivoCotizacion.id, this.instanciaArchivoCotizacion.rowVersion).subscribe(\r\n {\r\n next: result => {\r\n this.tieneReporteCotizacion = false;\r\n\r\n //Elimina Cotización\r\n this.dashboardService.deleteInstancia(this.idCotizacion, this.rowVersionCotizacion).subscribe(\r\n {\r\n next: result => {\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: result.mensajes[0].replace('Instancia', 'Cotización'), life: 5000 });\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n this.getCotizaciones(this.paginaCotizacion);\r\n }\r\n }\r\n )\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n // console.log('ok');\r\n }\r\n }\r\n )\r\n } else {\r\n //Elimina Cotización\r\n this.dashboardService.deleteInstancia(this.idCotizacion, this.rowVersionCotizacion).subscribe(\r\n {\r\n next: result => {\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: result.mensajes[0].replace('Instancia', 'Cotización'), life: 5000 });\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n this.getCotizaciones(this.paginaCotizacion);\r\n }\r\n }\r\n )\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n )\r\n })\r\n } else {\r\n if (this.productos.length > 0) {\r\n this.productos.forEach((item: any) => {\r\n //Elimina Servicio Adicional \r\n this.dashboardService.deleteInstancia(item.id, item.rowVersion).subscribe(\r\n {\r\n next: result => {\r\n numeroTransaccionProducto += 1;\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n if (numeroTransaccionProducto == numeroTransaccionesProductos) {\r\n if (this.tieneReporteCotizacion) {\r\n //Elimina Reporte\r\n this.dashboardService.deleteInstancia(this.instanciaArchivoCotizacion.id, this.instanciaArchivoCotizacion.rowVersion).subscribe(\r\n {\r\n next: result => {\r\n this.tieneReporteCotizacion = false;\r\n\r\n //Elimina Cotización\r\n this.dashboardService.deleteInstancia(this.idCotizacion, this.rowVersionCotizacion).subscribe(\r\n {\r\n next: result => {\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: result.mensajes[0].replace('Instancia', 'Cotización'), life: 5000 });\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n this.getCotizaciones(this.paginaCotizacion);\r\n }\r\n }\r\n )\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n // console.log('ok');\r\n }\r\n }\r\n )\r\n } else {\r\n //Elimina Cotización\r\n this.dashboardService.deleteInstancia(this.idCotizacion, this.rowVersionCotizacion).subscribe(\r\n {\r\n next: result => {\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: result.mensajes[0].replace('Instancia', 'Cotización'), life: 5000 });\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n this.getCotizaciones(this.paginaCotizacion);\r\n }\r\n }\r\n )\r\n }\r\n }\r\n }\r\n }\r\n )\r\n })\r\n } else {\r\n if (this.tieneReporteCotizacion) {\r\n //Elimina Reporte\r\n this.dashboardService.deleteInstancia(this.instanciaArchivoCotizacion.id, this.instanciaArchivoCotizacion.rowVersion).subscribe(\r\n {\r\n next: result => {\r\n this.tieneReporteCotizacion = false;\r\n\r\n //Elimina Cotización\r\n this.dashboardService.deleteInstancia(this.idCotizacion, this.rowVersionCotizacion).subscribe(\r\n {\r\n next: result => {\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: result.mensajes[0].replace('Instancia', 'Cotización'), life: 5000 });\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n this.getCotizaciones(this.paginaCotizacion);\r\n }\r\n }\r\n )\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n // console.log('ok');\r\n }\r\n }\r\n )\r\n } else {\r\n //Elimina Cotización\r\n this.dashboardService.deleteInstancia(this.idCotizacion, this.rowVersionCotizacion).subscribe(\r\n {\r\n next: result => {\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: result.mensajes[0].replace('Instancia', 'Cotización'), life: 5000 });\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.message, life: 5000 });\r\n },\r\n complete: () => {\r\n this.getCotizaciones(this.paginaCotizacion);\r\n }\r\n }\r\n )\r\n }\r\n }\r\n\r\n }\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n generarCotizacion() {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'Implementando EndPoint Esquema Reporte', life: 5000 });\r\n }\r\n\r\n generarCotizacionReporte() {\r\n const self = this\r\n if (this.nombreCotizacion == '-') {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'Debe seleccionar una cotización para poder generar el documento', life: 5000 });\r\n }\r\n else {\r\n const self = this;\r\n this.loadingCotizacion = true;\r\n\r\n const item = this.itemCotizacion;\r\n const objTotalCreditos = item.instanciasAtributo.TotalCreditos;\r\n \r\n const idAtributo = objTotalCreditos.id\r\n const rowVersionAtributo = objTotalCreditos.rowVersion\r\n const tipoDatoAtributo = this.esquemaCotizacion.dato.atributos.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'TotalCreditos');\r\n \r\n let formDataCot = new FormData();\r\n formDataCot.append('comando.id', item.id);\r\n formDataCot.append('comando.nombre', item.nombre);\r\n formDataCot.append('comando.rowVersion', item.rowVersion);\r\n formDataCot.append('comando.usuarioPropietarioID', item.usuarioPropietarioID);\r\n\r\n formDataCot.append('comando.InstanciasAtributoActualizar_Actualizar[0].id', idAtributo);\r\n formDataCot.append('comando.instanciasAtributoActualizar_Actualizar[0].rowVersion', rowVersionAtributo);\r\n formDataCot.append('comando.instanciasAtributoActualizar_Actualizar[0].tipoDato', tipoDatoAtributo[0].tipoDato);\r\n formDataCot.append('comando.instanciasAtributoActualizar_Actualizar[0].valorNumerico', `${this.totalCreditos}`);\r\n\r\n //Actualizar Cotización\r\n this.dashboardService.updateInstancia(item.id, formDataCot).subscribe(\r\n {\r\n next: result => {\r\n // console.log(result);\r\n\r\n this.controlError.mensajeDeError(result)\r\n\r\n if(result.exitoso){\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: 'Cotización actualizada, generando pdf..', life: 6000 });\r\n\r\n const idEsquemaReporte = this.esquemasServices.obtener_Id_Esquema_Por_Nombre(\"Reporte\")\r\n this.dashboardService.getEsquemaPorId(idEsquemaReporte).subscribe({\r\n next: (data: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n this.esquemaReporte = data; \r\n \r\n let formData = new FormData();\r\n formData.append(\"comando.nombre\", `COT_${this.nombreCotizacion}_${this.getRandomKey(10)}`);\r\n formData.append(\"comando.esquemaID\", `${idEsquemaReporte}`);\r\n formData.append(\"comando.usuarioPropietarioID\", `${this.usuarioCotizacionId}`);\r\n \r\n const att = this.esquemaReporte.dato.atributos;\r\n \r\n //EncabezadoCotizacion\r\n const attEncabezadoCotizacion = att.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'EncabezadoCotizacion');\r\n formData.append(\"comando.instanciasAtributo_Crear[0].atributoID\", `${attEncabezadoCotizacion[0].id}`);\r\n formData.append(\"comando.instanciasAtributo_Crear[0].valorTipoInstanciaEsquemaID\", `${this.idCotizacion}`);\r\n \r\n //MapaGeneral\r\n const attMapaGeneral = att.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'MapaGeneral');\r\n \r\n formData.append(\"comando.instanciasAtributo_Crear[1].atributoID\", `${attMapaGeneral[0].id}`);\r\n formData.append(\"comando.instanciasAtributo_Crear[1].valorCadena\", `${this.capturaMapa}`);\r\n \r\n //Crear Archivo\r\n this.dashboardService.crearInstancia(formData).subscribe(\r\n {\r\n next: result => {\r\n console.log(result);\r\n \r\n this.dashboardService.getReporteCotizacion(this.idCotizacion).subscribe({\r\n next: (data: any) => { \r\n \r\n this.controlError.mensajeDeError(data)\r\n\r\n console.log(data);\r\n \r\n if (data.dato.length > 0) {\r\n this.tieneReporteCotizacion = true;\r\n \r\n data.dato.forEach((res: any, index: number) => {\r\n this.instanciaArchivoCotizacion = res;\r\n this.idArchivoCotizacion = res.instanciasAtributo.Cotizacion.id;\r\n })\r\n \r\n this.mapasDialog = false\r\n this.loadingCotizacion = false\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: 'Se ha generado la cotización, ya puede descargarla', life: 5000 });\r\n \r\n } else {\r\n this.tieneReporteCotizacion = false;\r\n this.idArchivoCotizacion = 0;\r\n }\r\n \r\n },\r\n error: (error: any) => {\r\n this.loadingCotizacion = false\r\n },\r\n })\r\n \r\n },\r\n error: e => {\r\n this.loadingCotizacion = false;\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.mensajes[0], life: 5000 });\r\n },\r\n complete: () => {\r\n this.dashboardService.getInstanciaPorID(item.id).subscribe({\r\n next: (data: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n this.itemCotizacion = data.dato; \r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n }\r\n })\r\n \r\n this.loadingCotizacion = false\r\n }\r\n }\r\n )\r\n },\r\n error: (error: any) => {\r\n this.loadingCotizacion = false;\r\n }\r\n })\r\n }\r\n else{\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: result.mensajes[0], life: 5000 });\r\n this.loadingCotizacion = false;\r\n }\r\n \r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.mensajes[0], life: 5000 });\r\n this.loadingCotizacion = false;\r\n },\r\n }\r\n )\r\n\r\n // this.view.takeScreenshot({\r\n // width: 150,\r\n // height: 150\r\n // }).then(function(screenshot: any) {\r\n // return screenshot.dataUrl \r\n // }).then(function(urlMapaReferencia: any) {\r\n\r\n // self.viewGeneral.takeScreenshot({\r\n // width: 150,\r\n // height: 150\r\n // }).then(function(urlMapaGeneral: any) {\r\n\r\n // self.viewPlanet.takeScreenshot({\r\n // width: 150,\r\n // height: 150\r\n // }).then(function(urlMapaPlanet: any) {\r\n // self.viewMaxar.takeScreenshot({\r\n // width: 150,\r\n // height: 150\r\n // }).then(function(urlMapaMaxar: any) { \r\n // let dataMapas = JSON.stringify({\r\n // mapaReferencia: urlMapaReferencia,\r\n // mapaGeneral: urlMapaGeneral.dataUrl,\r\n // mapaPlanet: urlMapaPlanet.dataUrl,\r\n // mapaMaxar: urlMapaMaxar.dataUrl,\r\n // imagenesPlanet: self.imagenesProveedorPlanet,\r\n // imagenesMaxar: self.imagenesProveedorMaxar\r\n // });\r\n\r\n // const blobPDF = self.dashboardService.downloadCotizacion(self.nombreCotizacion, self.imagenes, dataMapas, self.coberturaAOI);\r\n // self.downloadFile(blobPDF, `${self.nombreCotizacion}.pdf`);\r\n\r\n // }) \r\n\r\n // }) \r\n\r\n // }) \r\n // })\r\n }\r\n }\r\n\r\n guardarDatosAdicionales(imagen: Imagen) {\r\n if (this.tieneCompra) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'No se pueden editar los datos adicionales debido a que la cotización se encuentra en proceso de compra', life: 5000 });\r\n }\r\n else {\r\n this.imagen = { ...imagen };\r\n\r\n if (this.selectedNivelProcesamiento == null || this.selectedNivelProcesamiento == undefined) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'Debe seleccionar una opción de Nivel de Procesamiento', life: 5000 });\r\n }\r\n else {\r\n if (this.selectedLicencia == null || this.selectedLicencia == undefined) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'Debe seleccionar una opción de Licencia', life: 5000 });\r\n }\r\n else {\r\n if (this.selectedTipoEntrega == null || this.selectedTipoEntrega == undefined) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'Debe seleccionar una opción de Tipo de Entrega', life: 5000 });\r\n }\r\n else {\r\n this.loading = true\r\n var formdata = new FormData();\r\n\r\n formdata.append('comando.id', this.imagen.id!);\r\n formdata.append('comando.nombre', this.imagen.nombre!);\r\n formdata.append('comando.rowVersion', this.imagen.rowVersion!);\r\n formdata.append('comando.usuarioPropietarioID', this.imagen.usuarioPropietarioID!);\r\n\r\n const procesamiento = this.esquemaDetCotImgArchivo.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'Procesamiento')\r\n const licencia = this.esquemaDetCotImgArchivo.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'Licencia')\r\n const tipoEntrega = this.esquemaDetCotImgArchivo.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'TipoEntrega')\r\n\r\n const proveedor = this.esquemaDetCotImgArchivo.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'PlataformaBusqueda')\r\n //const plataforma = this.atributos.filter((s: { nombre: string; }) => s.nombre == 'PlataformaBusqueda')\r\n \r\n const prov = proveedor[0].atributoEnumeracion.opcionesEnumeracion.filter((s: { identificador: string; }) => s.identificador == this.imagen.proveedor)\r\n //const idInstancia = proveedor[0]\r\n\r\n //Plataforma Busqueda \r\n const idInstancia = this.imagen.data.instanciasAtributo.PlataformaBusqueda;\r\n\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[0].id\", idInstancia.id);\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[0].rowVersion\", idInstancia.rowVersion);\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[0].tipoDato\", constantes.OPCION_TIPO_ENUMERACION);\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[0].listadoOpcionEnumeracionId[0]\", this.imagen.data.instanciasAtributo.PlataformaBusqueda.valor.opcionEnumeracionId);\r\n\r\n if (this.imagen.nivelProcesamiento == '') {\r\n //Nivel de Procesamiento\r\n formdata.append(\"comando.InstanciasAtributoCrear_Actualizar[0].atributoID\", procesamiento[0].id);\r\n formdata.append(\"comando.InstanciasAtributoCrear_Actualizar[0].listadoOpcionEnumeracionId[0]\", this.selectedNivelProcesamiento.id);\r\n\r\n //Licencia\r\n formdata.append(\"comando.InstanciasAtributoCrear_Actualizar[1].atributoID\", licencia[0].id);\r\n formdata.append(\"comando.InstanciasAtributoCrear_Actualizar[1].listadoOpcionEnumeracionId[0]\", this.selectedLicencia.id);\r\n\r\n //Tipo Entrega\r\n formdata.append(\"comando.InstanciasAtributoCrear_Actualizar[2].atributoID\", tipoEntrega[0].id);\r\n formdata.append(\"comando.InstanciasAtributoCrear_Actualizar[2].listadoOpcionEnumeracionId[0]\", this.selectedTipoEntrega.id);\r\n }\r\n else { \r\n const idInstanciaProcesamiento = this.imagen.data.instanciasAtributo.Procesamiento;\r\n const idInstanciaLicencia = this.imagen.data.instanciasAtributo.Licencia;\r\n const idInstanciaTipoEntrega = this.imagen.data.instanciasAtributo.TipoEntrega;\r\n\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[1].id\", idInstanciaProcesamiento.id);\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[1].rowVersion\", idInstanciaProcesamiento.rowVersion);\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[1].tipoDato\", constantes.OPCION_TIPO_ENUMERACION);\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[1].listadoOpcionEnumeracionId[0]\", this.selectedNivelProcesamiento.id);\r\n\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[2].id\", idInstanciaLicencia.id);\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[2].rowVersion\", idInstanciaLicencia.rowVersion);\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[2].tipoDato\", constantes.OPCION_TIPO_ENUMERACION);\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[2].listadoOpcionEnumeracionId[0]\", this.selectedLicencia.id);\r\n\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[3].id\", idInstanciaTipoEntrega.id);\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[3].rowVersion\", idInstanciaTipoEntrega.rowVersion);\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[3].tipoDato\", constantes.OPCION_TIPO_ENUMERACION);\r\n formdata.append(\"comando.instanciasAtributoActualizar_Actualizar[3].listadoOpcionEnumeracionId[0]\", this.selectedTipoEntrega.id);\r\n }\r\n\r\n //Actualizar Imagen\r\n this.dashboardService.updateInstancia(this.imagen.id!, formdata).subscribe(\r\n {\r\n next: result => {\r\n this.loading = false\r\n\r\n this.controlError.mensajeDeError(result)\r\n \r\n\r\n if(result.exitoso){\r\n this.getImagenesCotizacion(true)\r\n\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: 'Datos actualizados', life: 5000 });\r\n this.tieneReporteCotizacion = false;\r\n }\r\n else{\r\n this.messageService.add({ severity: 'warn', summary: 'Transacción No Exitosa', detail: result.mensajes[0], life: 5000 });\r\n }\r\n },\r\n error: e => {\r\n this.loading = false\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.mensajes[0], life: 6000 });\r\n },\r\n complete: () => {\r\n this.precotizacionDialog = false\r\n }\r\n }\r\n )\r\n }\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n downloadFile(blob: Blob | MediaSource, fileName: string) {\r\n this.loadingCotizacion = false\r\n\r\n const url = window.URL || window.webkitURL;\r\n const link = url.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.setAttribute('download', fileName);\r\n a.setAttribute('href', link);\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n }\r\n\r\n abrirGenerarCompra() { \r\n\r\n //Solucion temporal tarea 8011 validacion para no permitir generar compra sin generar .pdf en programacion de imagenes\r\n if(!this.tieneReporteCotizacion){\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'Debe generar una cotización para poder generar la compra', life: 5000 });\r\n return\r\n }\r\n //-----------------------------------------------------------------------------\r\n\r\n this.selectedBolsaCreditos = undefined\r\n \r\n this.saldoBolsa = 0\r\n this.observacionesCompra = ''\r\n\r\n if (this.nombreCotizacion == '-') {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'Debe seleccionar una cotización para poder generar una compra', life: 5000 });\r\n }\r\n else {\r\n if (this.visibleTabArchivo) {\r\n if (this.imagenes.length == 0) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'No se puede generar la compra, la cotización no posee imágenes asociadas', life: 5000 });\r\n }\r\n else {\r\n if (!this.tieneReporteCotizacion) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'Debe generar una cotización para poder generar la compra', life: 5000 });\r\n } else {\r\n if (this.tieneCompra) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'La cotización no se puede comprar debido a que ya se encuentra en proceso de compra', life: 5000 });\r\n }\r\n else {\r\n const validaGeneracion = this.validaGenerar()\r\n\r\n if (validaGeneracion.genera) {\r\n this.dashboardService.getBolsas().subscribe(data => {\r\n this.bolsas = []\r\n \r\n data.dato.forEach((res: any, index: number) => {\r\n this.bolsas.push(\r\n {\r\n nombre: res.nombre,\r\n atributos: res.instanciasAtributo\r\n }\r\n );\r\n })\r\n })\r\n\r\n this.comprasDialog = true\r\n }\r\n else {\r\n const msg = `Para poder generar la compra, es necesario completar los datos adicionales de la imagen No. ${validaGeneracion.index}, con ID: ${validaGeneracion.idData}`\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: msg, life: 5000 });\r\n }\r\n }\r\n }\r\n }\r\n } else if (this.visibleTabProgramacion) {\r\n if (this.tieneCompra) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'La cotización no se puede comprar debido a que ya se encuentra en proceso de compra', life: 5000 });\r\n }\r\n else {\r\n // console.log(this.imagenesProgramacion);\r\n \r\n this.dashboardService.getBolsas().subscribe(data => {\r\n this.bolsas = []\r\n \r\n data.dato.forEach((res: any, index: number) => {\r\n this.bolsas.push(\r\n {\r\n nombre: res.nombre,\r\n atributos: res.instanciasAtributo\r\n }\r\n );\r\n })\r\n })\r\n\r\n this.comprasDialog = true\r\n }\r\n\r\n\r\n }\r\n }\r\n }\r\n\r\n onChangeBolsa() { \r\n const bolsaSeleccionada = this.selectedBolsaCreditos.atributos.Bolsa;\r\n\r\n if (bolsaSeleccionada) {\r\n this.dashboardService.getSaldoBolsa(bolsaSeleccionada.valor.tipoInstanciaEsquemaID).subscribe(data => {\r\n if(data.dato.length > 0){\r\n data.dato.forEach((res: any, index: number) => {\r\n const atributos = res.instanciasAtributo;\r\n \r\n const saldo = atributos.Saldo.valor;\r\n const valorBloqueado = atributos.ValorBloqueado.valor;\r\n this.saldoBolsa = saldo - valorBloqueado;\r\n })\r\n }\r\n else{\r\n this.saldoBolsa = 0;\r\n }\r\n \r\n })\r\n }\r\n }\r\n\r\n generarCompra() {\r\n\r\n if (this.selectedBolsaCreditos == null || this.selectedBolsaCreditos == undefined) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'Debe seleccionar una bolsa de créditos MPC para poder generar una compra', life: 5000 });\r\n }\r\n else {\r\n if (this.totalCreditos > this.saldoBolsa) {\r\n this.messageService.add({ severity: 'warn', summary: 'Advertencia', detail: 'No se puede generar la compra ya que la bolsa seleccionada no cuenta con saldo suficiente de creditos MPC', life: 5000 });\r\n }\r\n else {\r\n this.loadingCompra = true\r\n const item = this.itemCotizacion;\r\n\r\n // console.log(this.esquemaCotizacion);\r\n \r\n\r\n const objTotalCreditos = item.instanciasAtributo.TotalCreditos;\r\n const idAtributo = objTotalCreditos.id;\r\n const rowVersionAtributo = objTotalCreditos.rowVersion;\r\n const tipoDatoAtributo = this.esquemaCotizacion.dato.atributos.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'EncabezadoCotizacion');\r\n const totalCreditosCotizacion = objTotalCreditos.valor;\r\n\r\n const bolsaSeleccionada = this.selectedBolsaCreditos.atributos.Bolsa;\r\n const organizacionSeleccionada = this.selectedBolsaCreditos.atributos.Organizacion;\r\n\r\n let data = new FormData();\r\n data.append(\"comando.nombre\", `Compra_${this.nombreCotizacion}_${this.getRandomKey(10)}`);\r\n data.append(\"comando.esquemaID\", `${this.esquemasServices.obtener_Id_Esquema_Por_Nombre('Compra')}`);\r\n data.append(\"comando.usuarioPropietarioID\", `${this.usuarioCotizacionId}`);\r\n\r\n const att = this.esquemaCompra.dato.atributos;\r\n // console.log(att);\r\n \r\n\r\n //EncabezadoCotizacion\r\n const attEncabezadoCotizacion = att.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'EncabezadoCotizacion')\r\n data.append(\"comando.instanciasAtributo_Crear[0].atributoID\", `${attEncabezadoCotizacion[0].id}`);\r\n data.append(\"comando.instanciasAtributo_Crear[0].valorTipoInstanciaEsquemaID\", `${this.idCotizacion}`);\r\n\r\n //Bolsa\r\n const attBolsa = att.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'Bolsa')\r\n data.append(\"comando.instanciasAtributo_Crear[1].atributoID\", `${attBolsa[0].id}`);\r\n data.append(\"comando.instanciasAtributo_Crear[1].valorTipoInstanciaEsquemaID\", `${bolsaSeleccionada.valor.tipoInstanciaEsquemaID}`);\r\n\r\n //Organización\r\n const attOrganizacion = att.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'Organizacion')\r\n data.append(\"comando.instanciasAtributo_Crear[2].atributoID\", `${attOrganizacion[0].id}`);\r\n data.append(\"comando.instanciasAtributo_Crear[2].valorTipoInstanciaEsquemaID\", `${organizacionSeleccionada.valor.tipoInstanciaEsquemaID}`);\r\n\r\n //Estado\r\n const attEstado = att.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'Estado')\r\n const opPreCompra = attEstado[0].atributoEnumeracion.opcionesEnumeracion.filter((s: { identificador: string; }) => s.identificador == 'Precompra')\r\n\r\n data.append(\"comando.instanciasAtributo_Crear[3].atributoID\", `${attEstado[0].id}`);\r\n data.append(\"comando.instanciasAtributo_Crear[3].listadoOpcionEnumeracionId[0]\", `${opPreCompra[0].id}`);\r\n\r\n //Total Créditos\r\n const attTotalCreditos = att.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'TotalCreditos')\r\n data.append(\"comando.instanciasAtributo_Crear[4].atributoID\", `${attTotalCreditos[0].id}`);\r\n data.append(\"comando.instanciasAtributo_Crear[4].valorNumerico\", `${this.totalCreditos}`);\r\n\r\n //Observaciones\r\n const attObservaciones = att.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'Observaciones')\r\n data.append(\"comando.instanciasAtributo_Crear[5].atributoID\", `${attObservaciones[0].id}`);\r\n data.append(\"comando.instanciasAtributo_Crear[5].valorCadena\", `${this.observacionesCompra}`);\r\n\r\n //Licenciatario\r\n const attLicenciatario = att.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'Licenciatario')\r\n data.append(\"comando.instanciasAtributo_Crear[6].atributoID\", `${attLicenciatario[0].id}`);\r\n data.append(\"comando.instanciasAtributo_Crear[6].valorTipoInstanciaEsquemaID\", `${organizacionSeleccionada.valor.tipoInstanciaEsquemaID}`);\r\n\r\n if (this.visibleTabArchivo) { \r\n //Crear Compra\r\n this.dashboardService.crearInstancia(data).subscribe(\r\n {\r\n next: result => {\r\n // console.log(result);\r\n \r\n if(result.exitoso){\r\n this.loadingCompra = false\r\n this.comprasDialog = false\r\n this.tieneCompra = true;\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: 'Se ha generado orden de Pre-Compra, prontamente nos comunicaremos contigo para confirmar la compra', life: 5000 });\r\n\r\n const itemCot = this.itemCotizacion;\r\n this.dashboardService.getInstanciaPorID(itemCot.id).subscribe({\r\n next: (data: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n this.itemCotizacion = data.dato; \r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n },\r\n complete: () => {\r\n const dataCorreo = {\r\n \"nombre\": localStorage.getItem('nombres'),\r\n \"apellidos\": localStorage.getItem('apellidos'),\r\n \"correo\": localStorage.getItem('correo'),\r\n \"telefono\": `${this.itemCotizacion.usuarioPropietario.telefono == null ? '-' : this.itemCotizacion.usuarioPropietario.telefono}`,\r\n \"organizacion\": `${this.itemCotizacion.instanciasAtributo.Organizacion == null ? '-' : this.itemCotizacion.instanciasAtributo.Organizacion}`,\r\n \"nombre_cotizacion\": this.nombreCotizacion,\r\n \"total_creditos\": this.totalCreditos.toLocaleString()\r\n }\r\n \r\n this.dashboardService.enviarCorreo(dataCorreo).subscribe(\r\n {\r\n next: result => {\r\n // console.log(result);\r\n this.messageService.add({ severity: 'success', summary: 'Notificación', detail: 'Se ha notificado a SAC la solicitud de su orden de Pre-Compra', life: 5000 });\r\n },\r\n error: e => {\r\n console.log('error');\r\n console.log(e);\r\n },\r\n complete: () => {\r\n console.log('completo');\r\n }\r\n }\r\n )\r\n },\r\n })\r\n }\r\n else{\r\n let msg = ''\r\n if(result.mensajes.length > 0){\r\n msg = result.mensajes[0]\r\n }\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: `Transacción no realizada. ${msg}`, life: 5000 }); \r\n }\r\n \r\n },\r\n error: e => {\r\n this.loadingCompra = false\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.mensajes[0], life: 5000 });\r\n },\r\n complete: () => {\r\n this.loadingCompra = false \r\n }\r\n }\r\n )\r\n }\r\n else {\r\n // console.log('tabProgramadas');\r\n // console.log(totalCreditosCotizacion);\r\n // console.log(this.totalCreditos);\r\n \r\n if (totalCreditosCotizacion != this.totalCreditos) {\r\n let formData = new FormData();\r\n const tipoDatoAtt = this.esquemaCotizacion.dato.atributos.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'TotalCreditos');\r\n\r\n formData.append('comando.id', `${this.idCotizacion}`);\r\n formData.append('comando.nombre', `${this.nombreCotizacion}`);\r\n formData.append('comando.rowVersion', `${this.rowVersionCotizacion}`);\r\n formData.append('comando.usuarioPropietarioID', `${this.usuarioCotizacionId}`);\r\n\r\n formData.append('comando.InstanciasAtributoActualizar_Actualizar[0].id', idAtributo);\r\n formData.append('comando.instanciasAtributoActualizar_Actualizar[0].rowVersion', rowVersionAtributo);\r\n formData.append('comando.instanciasAtributoActualizar_Actualizar[0].tipoDato', tipoDatoAtt[0].tipoDato);\r\n formData.append('comando.instanciasAtributoActualizar_Actualizar[0].valorNumerico', `${this.totalCreditos}`);\r\n\r\n // Actualizar Cotización\r\n this.dashboardService.updateInstancia(this.idCotizacion, formData).subscribe(\r\n {\r\n next: result => {\r\n\r\n this.controlError.mensajeDeError(result)\r\n\r\n this.dashboardService.crearInstancia(data).subscribe(\r\n {\r\n next: result => {\r\n\r\n this.controlError.mensajeDeError(result)\r\n\r\n if(result.exitoso){\r\n this.loadingCompra = false\r\n this.comprasDialog = false\r\n this.tieneCompra = true;\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: 'Se ha generado orden de Pre-Compra, prontamente nos comunicaremos contigo para confirmar la compra', life: 5000 });\r\n \r\n const itemCot = this.itemCotizacion;\r\n this.dashboardService.getInstanciaPorID(itemCot.id).subscribe({\r\n next: (data: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n this.itemCotizacion = data.dato; \r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n },\r\n complete: () => {\r\n const dataCorreo = {\r\n \"nombre\": localStorage.getItem('nombres'),\r\n \"apellidos\": localStorage.getItem('apellidos'),\r\n \"correo\": localStorage.getItem('correo'),\r\n \"telefono\": `${this.itemCotizacion.usuarioPropietario.telefono == null ? '-' : this.itemCotizacion.usuarioPropietario.telefono}`,\r\n \"organizacion\": `${this.itemCotizacion.instanciasAtributo.Organizacion == null ? '-' : this.itemCotizacion.instanciasAtributo.Organizacion}`,\r\n \"nombre_cotizacion\": this.nombreCotizacion,\r\n \"total_creditos\": this.totalCreditos.toLocaleString()\r\n }\r\n \r\n this.dashboardService.enviarCorreo(dataCorreo).subscribe(\r\n {\r\n next: result => {\r\n // console.log(result);\r\n\r\n this.controlError.mensajeDeError(result)\r\n\r\n this.messageService.add({ severity: 'success', summary: 'Notificación', detail: 'Se ha notificado a SAC la solicitud de su orden de Pre-Compra', life: 5000 });\r\n },\r\n error: e => {\r\n console.log('error');\r\n console.log(e);\r\n },\r\n complete: () => {\r\n // console.log('completo');\r\n }\r\n }\r\n )\r\n },\r\n })\r\n }\r\n else{\r\n let msg = ''\r\n if(result.mensajes.length > 0){\r\n msg = result.mensajes[0]\r\n }\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: `Transacción no realizada. ${msg}`, life: 5000 }); \r\n }\r\n },\r\n error: e => {\r\n this.loadingCompra = false\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.mensajes[0], life: 5000 });\r\n },\r\n complete: () => {\r\n this.loadingCompra = false\r\n }\r\n }\r\n )\r\n },\r\n error: e => {\r\n this.loadingCompra = false\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.mensajes[0], life: 5000 });\r\n },\r\n complete: () => {\r\n this.loadingCompra = false\r\n }\r\n }\r\n )\r\n }\r\n else{\r\n this.dashboardService.crearInstancia(data).subscribe(\r\n {\r\n next: result => {\r\n \r\n this.controlError.mensajeDeError(result)\r\n\r\n if(result.exitoso){\r\n this.loadingCompra = false\r\n this.comprasDialog = false\r\n this.tieneCompra = true;\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: 'Se ha generado orden de Pre-Compra, prontamente nos comunicaremos contigo para confirmar la compra', life: 5000 });\r\n \r\n const itemCot = this.itemCotizacion;\r\n this.dashboardService.getInstanciaPorID(itemCot.id).subscribe({\r\n next: (data: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n this.itemCotizacion = data.dato; \r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n },\r\n complete: () => {\r\n const dataCorreo = {\r\n \"nombre\": localStorage.getItem('nombres'),\r\n \"apellidos\": localStorage.getItem('apellidos'),\r\n \"correo\": localStorage.getItem('correo'),\r\n \"telefono\": `${this.itemCotizacion.usuarioPropietario.telefono == null ? '-' : this.itemCotizacion.usuarioPropietario.telefono}`,\r\n \"organizacion\": `${this.itemCotizacion.instanciasAtributo.Organizacion == null ? '-' : this.itemCotizacion.instanciasAtributo.Organizacion}`,\r\n \"nombre_cotizacion\": this.nombreCotizacion,\r\n \"total_creditos\": this.totalCreditos.toLocaleString()\r\n }\r\n \r\n this.dashboardService.enviarCorreo(dataCorreo).subscribe(\r\n {\r\n next: result => {\r\n // console.log(result);\r\n this.controlError.mensajeDeError(result)\r\n\r\n this.messageService.add({ severity: 'success', summary: 'Notificación', detail: 'Se ha notificado a SAC la solicitud de su orden de Pre-Compra', life: 5000 });\r\n },\r\n error: e => {\r\n console.log('error');\r\n console.log(e);\r\n },\r\n complete: () => {\r\n console.log('completo');\r\n }\r\n }\r\n )\r\n },\r\n })\r\n }\r\n else{\r\n let msg = ''\r\n if(result.mensajes.length > 0){\r\n msg = result.mensajes[0]\r\n }\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: `Transacción no realizada. ${msg}`, life: 5000 }); \r\n }\r\n },\r\n error: e => {\r\n this.loadingCompra = false\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.mensajes[0], life: 5000 });\r\n },\r\n complete: () => {\r\n this.loadingCompra = false\r\n }\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n onClickCotizacion(event: any) {\r\n this.selectedCotizacion = event.option.item;\r\n this.nombreCotizacion = this.selectedCotizacion?.nombre;\r\n this.idCotizacion = this.selectedCotizacion?.id;\r\n this.usuarioCotizacionId = this.selectedCotizacion?.usuarioPropietarioID;\r\n this.rowVersionCotizacion = this.selectedCotizacion?.rowVersion;\r\n this.itemCotizacion = this.selectedCotizacion;\r\n this.tieneReporteCotizacionTemp = false; \r\n \r\n this.dashboardService.getCompraCotizacion(this.idCotizacion).subscribe(\r\n {\r\n next: result => {\r\n\r\n this.controlError.mensajeDeError(result)\r\n\r\n if (result.dato.length > 0) {\r\n this.tieneCompra = true;\r\n }\r\n else {\r\n this.tieneCompra = false;\r\n }\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: 'Error al consultar la cotización', life: 5000 });\r\n },\r\n complete: () => {\r\n this.getImagenesCotizacion(false);\r\n },\r\n }\r\n )\r\n\r\n this.dashboardService.getReporteCotizacion(this.idCotizacion).subscribe({\r\n next: (data: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n if (data.dato.length > 0) {\r\n //this.tieneReporteCotizacion = true; \r\n this.tieneReporteCotizacionTemp = true; \r\n\r\n data.dato.forEach((res: any, index: number) => {\r\n this.instanciaArchivoCotizacion = res;\r\n const atributos = res.instanciasAtributo;\r\n \r\n this.idArchivoCotizacion = atributos.Cotizacion.id;\r\n })\r\n\r\n } else {\r\n this.tieneReporteCotizacion = false;\r\n this.idArchivoCotizacion = 0;\r\n }\r\n\r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n }\r\n })\r\n }\r\n\r\n descargarCotizacion() {\r\n this.dashboardService.getArchivo(this.idArchivoCotizacion).subscribe({\r\n next: (blob: Blob) => {\r\n const url = window.URL || window.webkitURL;\r\n const link = url.createObjectURL(blob);\r\n const a = document.createElement('a');\r\n a.setAttribute('download', `COT_${this.nombreCotizacion}.pdf`);\r\n a.setAttribute('href', link);\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n\r\n }\r\n })\r\n }\r\n\r\n listarServiciosProfesionales(categoria: string) {\r\n let arrayServicios: any[] = [];\r\n const arraySP = this.serviciosProfecionales_Todos[0]\r\n .filter((s: { instanciasAtributo: { CategoriaProducto: { valor: { opcionEnumeracionIdentificadorAplicado: string; }; }; }; }) => \r\n s.instanciasAtributo.CategoriaProducto.valor.opcionEnumeracionIdentificadorAplicado == categoria);\r\n \r\n arraySP.forEach((item: any) => {\r\n const att = item.instanciasAtributo;\r\n\r\n const objServicio = {\r\n id: item.id,\r\n codigoReferenciaId: item.esquemaID,\r\n identificador: item.nombre,\r\n descripcion: att.Descripcion.valor,\r\n valorUnitario: att.ValorUnitario.valor,\r\n unidadDeMedida: att.UnidadMedida.valor.opcionEnumeracionIdentificadorAplicado,\r\n cantidadMinima: att.CantidadMinima.valor,\r\n cantidadMaxima: att.CantidadMaxima.valor,\r\n estado: 'En espera'\r\n }\r\n\r\n arrayServicios.push(objServicio)\r\n })\r\n\r\n return arrayServicios;\r\n }\r\n\r\n\r\n\r\n //Servicios Proefesionales\r\n agregarServiciosProfesionales(id_cotizacion: any) {\r\n\r\n this.idCotizacion = id_cotizacion\r\n\r\n if (this.nombreCotizacion == '-') {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'Debe seleccionar una cotización para poder agregar servicios', life: 5000 });\r\n }\r\n else {\r\n if (this.tieneCompra) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'No es posible agregar servicios debido a que la cotización se encuentra en proceso de compra', life: 5000 });\r\n }\r\n else {\r\n this.errorMensaje = false\r\n this.ok_mensaje = false\r\n\r\n this.selectedCotizacion?.id\r\n\r\n if (this.idsEsquemas.length == 0) {\r\n this.obteneridsdeEsquemasServiciosProfecionales()\r\n }\r\n\r\n //this.serviciosProfecionales_Todos = []\r\n this.serviciosPofecionales_TYM = []\r\n this.serviciosPofecionales_PIM = []\r\n this.serviciosPofecionales_CGM = []\r\n\r\n this.poPup_serviciosProfecionales = true\r\n\r\n let arrayServiciosProfesionales = this.serviciosProfecionales_Todos.flat();\r\n\r\n this.serviciosPofecionales_TYM = this.listarServiciosProfesionales(\"SSPP TyM\");\r\n this.serviciosPofecionales_PIM = this.listarServiciosProfesionales(\"SSPP PIM\");\r\n this.serviciosPofecionales_CGM = this.listarServiciosProfesionales(\"SSPP CGM\");\r\n\r\n }\r\n }\r\n }\r\n\r\n obtenerDatosDeServicios(codigo_Referencia: any) {\r\n let data;\r\n\r\n let todos = this.serviciosProfecionales_Todos.flat();\r\n const itemData = todos.filter(s => s.nombre == codigo_Referencia);\r\n\r\n if (itemData.length > 0) {\r\n data = {\r\n descripcion: itemData[0].instanciasAtributo.Descripcion.valor,\r\n unidad: itemData[0].instanciasAtributo.UnidadMedida.valor.opcionEnumeracionIdentificadorAplicado\r\n }\r\n }\r\n\r\n return data\r\n }\r\n\r\n cerrarPoup() {\r\n this.poPup_serviciosProfecionales = false\r\n }\r\n\r\n obteneridsdeEsquemasServiciosProfecionales() {\r\n\r\n let id_esquema = this.esquemasServices.obtener_Id_Esquema_Por_Nombre('DetalleCotizacionOtrosProductos')\r\n\r\n this.esquemasServices.generar_codigos_por_Esquema(`${id_esquema}`).subscribe({\r\n next: (data: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n\r\n let dataEsquema = data\r\n \r\n let _EcabezadoCotizacion = ''\r\n let _CodigoReferencia = ''\r\n let _Cantidad = ''\r\n\r\n dataEsquema.forEach((e: any) => {\r\n\r\n if (e.codigoInterno == 'EncabezadoCotizacion') {\r\n _EcabezadoCotizacion = e.atributoEsquema.id\r\n } else if (e.codigoInterno == 'CodigoReferencia') {\r\n _CodigoReferencia = e.atributoEsquema.id\r\n } else if (e.codigoInterno == 'Cantidad') {\r\n _Cantidad = e.atributoNumerico.id\r\n };\r\n\r\n })\r\n\r\n let ids = {\r\n idEsquema: id_esquema,\r\n EncabezadoCotizacion: _EcabezadoCotizacion,\r\n CodigoReferencia: _CodigoReferencia,\r\n Cantidad: _Cantidad,\r\n }\r\n\r\n this.idsEsquemas.push(ids)\r\n console.log(ids);\r\n console.log(this.idsEsquemas);\r\n\r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n }\r\n })\r\n\r\n }\r\n\r\n ok_mensaje = false\r\n errorMensaje = false\r\n\r\n agregarServicioACotizacion(idCodigoReferencia: any, SelectCantidad: any, item: any) {\r\n let id_cotizacion = this.idCotizacion\r\n\r\n let cantidad = SelectCantidad.value\r\n let codigoReferencia = idCodigoReferencia\r\n let idsEsquemas = this.idsEsquemas\r\n\r\n const arrayServicios = this.productos.filter(s => s.codigoReferencia == item.identificador);\r\n\r\n if (arrayServicios.length > 0) {\r\n const msg = 'El servicio profesional seleccionado ya se encuentra agregado en la cotización. Si desea modificarlo, actualice la cantidad de horas en el formulario de edición.'\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: msg, life: 5000 });\r\n }\r\n else {\r\n if (cantidad == '') {\r\n const msg = `Seleccione la cantidad de ${item.unidadDeMedida}(s) del servicio que desea agregar`\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: msg, life: 5000 });\r\n }\r\n else{\r\n if (cantidad < item.cantidadMinima || cantidad > item.cantidadMaxima) {\r\n const msg = `La cantidad debe estar entre ${item.cantidadMinima.toLocaleString()} y ${item.cantidadMaxima.toLocaleString()} ${item.unidadDeMedida}(s)`\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: msg, life: 5000 });\r\n }\r\n else{\r\n item.estado = 'Procesando..'\r\n this.cargaGif = true\r\n \r\n this.dashboardService.agregarServicioProfecionalAcotizacion(idsEsquemas, id_cotizacion, cantidad, item.id).subscribe({\r\n next: (dataItem) => {\r\n\r\n this.controlError.mensajeDeError(dataItem)\r\n\r\n\r\n item.estado = 'Servicio agregado';\r\n this.tieneReporteCotizacion = false;\r\n \r\n this.dashboardService.getOtrosProductosCotizacion(this.idCotizacion).subscribe({\r\n next: (data: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n this.totalCreditos -= this.totalCreditosServicios;\r\n \r\n this.productos = [];\r\n this.totalCreditosServicios = 0;\r\n \r\n if (data.dato.length > 0) {\r\n data.dato.forEach((res: any, index: number) => {\r\n const atributos = res.instanciasAtributo;\r\n \r\n let valorCreditos = 0\r\n valorCreditos = atributos.CreditosItem.valor;\r\n \r\n this.totalCreditos += valorCreditos\r\n this.totalCreditosServicios += valorCreditos\r\n \r\n let codigoDeReferencia = atributos.CodigoReferencia.valor.tipoInstanciaEsquemaNombre;\r\n let data_adiccional: any = this.obtenerDatosDeServicios(codigoDeReferencia)\r\n \r\n this.productos.push(\r\n {\r\n id: res.id,\r\n cantidad: atributos.Cantidad.valor,\r\n descripcion: data_adiccional.descripcion,\r\n unidad: data_adiccional.unidad,\r\n valorCreditos: valorCreditos,\r\n codigoReferencia: codigoDeReferencia,\r\n idCotizacion: this.idCotizacion,\r\n rowVersion: res.rowVersion,\r\n usuarioPropietarioID: res.usuarioPropietarioID,\r\n data: res,\r\n index: index + 1\r\n }\r\n );\r\n })\r\n }\r\n },\r\n error: (error: any) => {\r\n this.errorMensaje = true\r\n this.cargaGif = false\r\n item.estado = 'validacion fallida, intente nuevamente'\r\n },\r\n })\r\n },\r\n error: (err) => {\r\n this.errorMensaje = true\r\n this.cargaGif = false\r\n item.estado = err.error.mensajes\r\n \r\n }\r\n })\r\n }\r\n \r\n }\r\n }\r\n }\r\n\r\n eliminarServicioAdicional(producto: Producto) {\r\n if (this.tieneCompra) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'El servicio no se puede eliminar debido a que la cotización se encuentra en proceso de compra', life: 5000 });\r\n }\r\n else {\r\n this.confirmationService.confirm({\r\n message: `Está seguro que desea eliminar el servicio con Código de referencia: ${producto.codigoReferencia} ?`,\r\n header: 'Eliminar',\r\n icon: 'pi pi-info-circle',\r\n accept: () => {\r\n //Eliminar Servicio\r\n this.dashboardService.deleteInstancia(producto.id, producto.rowVersion).subscribe(\r\n {\r\n next: result => {\r\n\r\n this.controlError.mensajeDeError(result)\r\n\r\n const prods = this.productos.filter(s => s.id != producto.id);\r\n this.productos = prods;\r\n\r\n this.totalCreditos -= this.totalCreditosServicios;\r\n this.totalCreditosServicios = 0;\r\n\r\n this.productos.forEach((item: any, index: number) => {\r\n this.totalCreditos += item.valorCreditos\r\n this.totalCreditosServicios += item.valorCreditos\r\n })\r\n\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: 'Servicio eliminado', life: 5000 });\r\n this.tieneReporteCotizacion = false;\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.mensajes[0], life: 5000 });\r\n },\r\n }\r\n )\r\n }\r\n });\r\n }\r\n }\r\n\r\n eliminarImagenParametrizacion(imagen: ImagenProgramacion) {\r\n if (this.tieneCompra) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'El registro no puede ser eliminado debido a que la cotización se encuentra en proceso de compra', life: 5000 });\r\n }\r\n else {\r\n this.confirmationService.confirm({\r\n message: `Está seguro que desea eliminar el registro?`,\r\n header: 'Eliminar',\r\n icon: 'pi pi-info-circle',\r\n accept: () => {\r\n //Eliminar Servicio\r\n this.dashboardService.deleteInstancia(imagen.id, imagen.rowVersion).subscribe(\r\n {\r\n next: result => {\r\n\r\n this.controlError.mensajeDeError(result)\r\n\r\n const elems = this.imagenesProgramacion.filter(s => s.id != imagen.id);\r\n this.imagenesProgramacion = elems;\r\n\r\n this.totalCreditos -= this.totalCreditosImagenesProgramadas;\r\n this.totalCreditosImagenesProgramadas = 0;\r\n\r\n this.imagenesProgramacion.forEach((item: any, index: number) => {\r\n this.totalCreditos += item.valorCreditos\r\n this.totalCreditosImagenesProgramadas += item.valorCreditos\r\n })\r\n\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: 'Registro eliminado', life: 5000 });\r\n this.tieneReporteCotizacion = false;\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.mensajes[0], life: 5000 });\r\n },\r\n }\r\n )\r\n }\r\n });\r\n }\r\n }\r\n\r\n actualizarCreditosCotizacion() {\r\n const item = this.itemCotizacion;\r\n\r\n const objTotalCreditos = item.instanciasAtributo.filter((s: { atributo: { codigoInterno: string; }; }) => s.atributo?.codigoInterno == \"TotalCreditos\")\r\n \r\n const idAtributo = objTotalCreditos[0].id\r\n const rowVersionAtributo = objTotalCreditos[0].rowVersion\r\n const tipoDatoAtributo = objTotalCreditos[0].atributo.tipoDato\r\n\r\n let data = new FormData();\r\n data.append('comando.id', item.id);\r\n data.append('comando.nombre', item.nombre);\r\n data.append('comando.rowVersion', item.rowVersion);\r\n data.append('comando.usuarioPropietarioID', item.usuarioPropietarioID);\r\n\r\n data.append('comando.InstanciasAtributoActualizar_Actualizar[0].id', idAtributo);\r\n data.append('comando.instanciasAtributoActualizar_Actualizar[0].rowVersion', rowVersionAtributo);\r\n data.append('comando.instanciasAtributoActualizar_Actualizar[0].tipoDato', tipoDatoAtributo);\r\n data.append('comando.instanciasAtributoActualizar_Actualizar[0].valorNumerico', `${this.totalCreditos}`);\r\n\r\n //Actualizar Cotización\r\n this.dashboardService.updateInstancia(item.id, data).subscribe(\r\n {\r\n next: result => {\r\n\r\n this.controlError.mensajeDeError(result)\r\n\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: 'Cotización actualizada', life: 5000 });\r\n this.tieneReporteCotizacion = false;\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.mensajes[0], life: 5000 });\r\n },\r\n }\r\n )\r\n }\r\n\r\n abrirEditarServicio(producto: Producto) {\r\n if (this.tieneCompra) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'No es posible agregar servicios debido a que la cotización se encuentra en proceso de compra', life: 5000 });\r\n }\r\n else {\r\n this.producto = { ...producto };\r\n const arrayServicios = this.serviciosProfecionales_Todos[0].filter((s: { nombre: string | undefined; }) => s.nombre == producto.codigoReferencia);\r\n \r\n this.horasServicios = this.producto.cantidad;\r\n this.creditosServicios = this.producto.valorCreditos;\r\n this.nuevasHorasServicios = this.horasServicios;\r\n this.maximasUnidades = `Máximo ${arrayServicios[0].instanciasAtributo.CantidadMaxima.valor} ${arrayServicios[0].instanciasAtributo.UnidadMedida.valor.opcionEnumeracionIdentificadorAplicado\r\n }(s)`;\r\n\r\n this.serviciosDialog = true;\r\n }\r\n }\r\n\r\n editarServiciosAdicionales() {\r\n if (this.tieneCompra) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'No se puede editar el servicio debido a que la cotización se encuentra en proceso de compra', life: 5000 });\r\n }\r\n else {\r\n const att = this.esquemaOtrosProductos.dato.atributos; \r\n\r\n const objCantidad = this.producto.data.instanciasAtributo.Cantidad\r\n const idAtributo = objCantidad.id\r\n const rowVersionAtributo = objCantidad.rowVersion\r\n const tipoDatoAtributo = this.esquemaOtrosProductos.dato.atributos.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'Cantidad');\r\n\r\n let formdata = new FormData();\r\n formdata.append('comando.id', this.producto.id!);\r\n formdata.append('comando.nombre', this.producto.data.nombre);\r\n formdata.append('comando.rowVersion', this.producto.rowVersion!);\r\n formdata.append('comando.usuarioPropietarioID', this.producto.usuarioPropietarioID!);\r\n\r\n formdata.append('comando.InstanciasAtributoActualizar_Actualizar[0].id', idAtributo);\r\n formdata.append('comando.instanciasAtributoActualizar_Actualizar[0].rowVersion', rowVersionAtributo);\r\n formdata.append('comando.instanciasAtributoActualizar_Actualizar[0].tipoDato', tipoDatoAtributo[0].tipoDato);\r\n formdata.append('comando.instanciasAtributoActualizar_Actualizar[0].valorNumerico', `${this.nuevasHorasServicios}`);\r\n\r\n //Actualizar Servicios\r\n this.dashboardService.updateInstancia(this.producto.id, formdata).subscribe(\r\n {\r\n next: result => {\r\n\r\n this.controlError.mensajeDeError(result)\r\n\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: 'Servicio actualizado', life: 5000 });\r\n\r\n this.dashboardService.getOtrosProductosCotizacion(this.idCotizacion).subscribe({\r\n next: (data: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n\r\n this.totalCreditos -= this.totalCreditosServicios;\r\n \r\n this.productos = [];\r\n this.totalCreditosServicios = 0;\r\n \r\n if (data.dato.length > 0) {\r\n data.dato.forEach((res: any, index: number) => {\r\n const atributos = res.instanciasAtributo;\r\n \r\n let valorCreditos = 0\r\n valorCreditos = atributos.CreditosItem.valor;\r\n \r\n this.totalCreditos += valorCreditos\r\n this.totalCreditosServicios += valorCreditos\r\n \r\n let codigoDeReferencia = atributos.CodigoReferencia.valor.tipoInstanciaEsquemaNombre;\r\n let data_adiccional: any = this.obtenerDatosDeServicios(codigoDeReferencia)\r\n \r\n this.productos.push(\r\n {\r\n id: res.id,\r\n cantidad: atributos.Cantidad.valor,\r\n descripcion: data_adiccional.descripcion,\r\n unidad: data_adiccional.unidad,\r\n valorCreditos: valorCreditos,\r\n codigoReferencia: codigoDeReferencia,\r\n idCotizacion: this.idCotizacion,\r\n rowVersion: res.rowVersion,\r\n usuarioPropietarioID: res.usuarioPropietarioID,\r\n data: res,\r\n index: index + 1\r\n }\r\n );\r\n })\r\n }\r\n },\r\n error: (error: any) => {\r\n console.log(error);\r\n \r\n },\r\n complete: () => {\r\n this.tieneReporteCotizacion = false;\r\n }\r\n })\r\n },\r\n error: e => {\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.mensajes[0], life: 5000 });\r\n },\r\n complete: () => {\r\n this.serviciosDialog = false;\r\n }\r\n }\r\n )\r\n\r\n }\r\n }\r\n\r\n verImagen(imagen: Imagen) {\r\n this.imagen = { ...imagen }; \r\n\r\n if (this.imagenId != this.imagen.idData) {\r\n this.urlImagen = '';\r\n this.imagenProveedor = this.imagen.proveedor;\r\n this.imagenId = this.imagen.idData;\r\n this.imagenDialog = true;\r\n\r\n const idBusqueda = this.imagen.data.instanciasAtributo.BusquedaImagenArchivo.valor.tipoInstanciaEsquemaID;\r\n this.busquedaService.consulta_imagenes(idBusqueda).subscribe({\r\n next: (data: any) => {\r\n\r\n this.controlError.mensajeDeError(data)\r\n\r\n const att = data.dato.instanciasAtributo;\r\n \r\n const imgBusquedaProveedor = att[this.ImagenesProveedores[`${this.imagen.proveedor}`]]; \r\n const elemBusquedaProveedor = imgBusquedaProveedor.filter((s: { valor: { imagenId: string | undefined; }; }) => s.valor.imagenId == this.imagen.idData);\r\n\r\n if (elemBusquedaProveedor.length > 0) {\r\n const idArchivo = elemBusquedaProveedor[0].id\r\n\r\n this.busquedaService.retornar_imagen(idArchivo)\r\n .subscribe({\r\n next: (imagenBlob: Blob) => {\r\n const imageUrl = URL.createObjectURL(imagenBlob);\r\n this.urlImagen = imageUrl;\r\n },\r\n error: (res) => {\r\n console.log(res)\r\n },\r\n })\r\n }\r\n },\r\n error: (error) => {\r\n this.imagenDialog = true;\r\n console.log(error)\r\n },\r\n complete: () => {\r\n this.imagenDialog = true;\r\n }\r\n })\r\n }\r\n else {\r\n this.imagenDialog = true;\r\n }\r\n }\r\n\r\n verPoligonoGeografico(pol: PoligonoGeografico) {\r\n this.poligonoGeografico = { ...pol }; \r\n this.urlPoligonoGeo = '';\r\n this.tipoPoligonoGeo = this.poligonoGeografico.tipoProducto;\r\n this.imagenIdPoligonoGeo = this.poligonoGeografico.preview.valor.imagenId;\r\n\r\n this.busquedaService.retornar_imagen(this.poligonoGeografico.preview.id).subscribe({\r\n next: (imagenBlob: Blob) => { \r\n const imageUrl = URL.createObjectURL(imagenBlob);\r\n this.urlPoligonoGeo = imageUrl;\r\n },\r\n error: (res) => {\r\n console.log(res)\r\n },\r\n })\r\n\r\n this.poligonoGeograficoDialog = true;\r\n }\r\n\r\n addOneDayToDate(date: any) {\r\n let newDate = new Date(date);\r\n\r\n newDate.setDate(newDate.getDate() + 1) \r\n return newDate\r\n }\r\n\r\n abrirEditarProgramacionImagen(imagen: ImagenProgramacion) {\r\n if (this.tieneCompra) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'No es posible editar la programación de las imágenes debido a que la cotización se encuentra en proceso de compra', life: 5000 });\r\n }\r\n else {\r\n this.imagenProgramacion = { ...imagen }; \r\n\r\n const numDaysIni = this.calculateDateDiff(this.imagenProgramacion.fechaInicio!);\r\n const numDaysFin = this.calculateDateDiff(this.imagenProgramacion.fechaFin!);\r\n const duracionDias = this.calculateDateDiff(this.imagenProgramacion.fechaInicio!, this.imagenProgramacion.fechaFin!);\r\n\r\n this.minDateIni = new Date();\r\n this.minDateFin = new Date();\r\n\r\n const fecIni = this.imagenProgramacion.fechaInicio!;\r\n\r\n \r\n\r\n this.fechaIni = this.addOneDayToDate(this.imagenProgramacion.fechaInicio!);\r\n this.fechaFin = new Date(this.imagenProgramacion.fechaFin!);\r\n\r\n // console.log(this.fechaIni.toJSON());\r\n\r\n\r\n let yearIni = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(this.fechaIni);\r\n let monthIni = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(this.fechaIni);\r\n let dayIni = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(this.fechaIni);\r\n\r\n // console.log(Date.UTC(this.fechaIni!.getFullYear(), this.fechaIni!.getMonth(), this.fechaIni!.getDate()));\r\n // console.log(this.fechaIni!.toLocaleDateString(\"en-US\"));\r\n\r\n // console.log(yearIni);\r\n // console.log(monthIni);\r\n // console.log(dayIni);\r\n\r\n var newDate2 = new Date('2019-12-01');\r\n // console.log(newDate2.toJSON());\r\n\r\n var newDate3 = new Date(this.imagenProgramacion.fechaInicio!);\r\n // console.log(newDate3.toJSON());\r\n\r\n //this.fechaIni = new Date(newDate3);\r\n\r\n this.imagenProgramadaDialog = true;\r\n }\r\n }\r\n\r\n \r\n\r\n editarProgramacionImagen() {\r\n // console.log(this.imagenProgramacion);\r\n \r\n const objFechaInicial = this.imagenProgramacion.data.instanciasAtributo.FechaInicialAdquisicion;\r\n const objFechaFinal = this.imagenProgramacion.data.instanciasAtributo.FechaFinalAdquisicion;\r\n\r\n let formdata = new FormData();\r\n formdata.append('comando.id', this.imagenProgramacion.id!);\r\n formdata.append('comando.nombre', this.imagenProgramacion.data.nombre);\r\n formdata.append('comando.rowVersion', this.imagenProgramacion.rowVersion!);\r\n formdata.append('comando.usuarioPropietarioID', this.imagenProgramacion.usuarioPropietarioID!);\r\n\r\n // console.log(Date.UTC(this.fechaIni!.getFullYear(), this.fechaIni!.getMonth(), this.fechaIni!.getDate()));\r\n // console.log(this.fechaIni!.toLocaleDateString(\"en-US\"));\r\n\r\n let yearIni = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(this.fechaIni);\r\n let monthIni = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(this.fechaIni);\r\n let dayIni = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(this.fechaIni);\r\n\r\n let yearFin = new Intl.DateTimeFormat('en', { year: 'numeric' }).format(this.fechaFin);\r\n let monthFin = new Intl.DateTimeFormat('en', { month: '2-digit' }).format(this.fechaFin);\r\n let dayFin = new Intl.DateTimeFormat('en', { day: '2-digit' }).format(this.fechaFin);\r\n const fecIni = `${yearIni}-${monthIni}-${dayIni}`;\r\n const fecFin = `${yearFin}-${monthFin}-${dayFin}`;\r\n // console.log(`${yearIni}-${monthIni}-${dayIni}`);\r\n\r\n // console.log(fecIni);\r\n // console.log(fecFin);\r\n // console.log(this.esquemaDetCotImagenProgramacion);\r\n \r\n\r\n const numDaysIni = this.calculateDateDiff(this.imagenProgramacion.fechaInicio!);\r\n const numDaysFin = this.calculateDateDiff(this.imagenProgramacion.fechaFin!);\r\n const duracionDias = this.calculateDateDiff(this.fechaIni!.toDateString(), this.fechaFin!.toDateString());\r\n\r\n // console.log(numDaysIni);\r\n // console.log(numDaysFin);\r\n // console.log(duracionDias);\r\n\r\n if (duracionDias < 15) {\r\n this.messageService.add({ severity: 'info', summary: 'Advertencia', detail: 'No es posible editar la programación de las imágenes debido a que la diferencia entre fechas debe ser mínimo 15 días', life: 6000 });\r\n }\r\n else {\r\n const instanciasAtributos = this.esquemaDetCotImagenProgramacion.atributos;\r\n const idInstanciaFechaInicialAdquisicion = instanciasAtributos.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'FechaInicialAdquisicion')\r\n const idInstanciaFechaFinalAdquisicion = instanciasAtributos.filter((s: { codigoInterno: string; }) => s.codigoInterno == 'FechaFinalAdquisicion')\r\n\r\n formdata.append('comando.InstanciasAtributoActualizar_Actualizar[0].id', objFechaInicial.id);\r\n formdata.append('comando.instanciasAtributoActualizar_Actualizar[0].rowVersion', objFechaInicial.rowVersion);\r\n formdata.append('comando.instanciasAtributoActualizar_Actualizar[0].tipoDato', idInstanciaFechaInicialAdquisicion[0].tipoDato);\r\n formdata.append('comando.instanciasAtributoActualizar_Actualizar[0].valorFechaHora', `${fecIni}T00:00:00.000Z`);\r\n\r\n formdata.append('comando.InstanciasAtributoActualizar_Actualizar[1].id', objFechaFinal.id);\r\n formdata.append('comando.instanciasAtributoActualizar_Actualizar[1].rowVersion', objFechaFinal.rowVersion);\r\n formdata.append('comando.instanciasAtributoActualizar_Actualizar[1].tipoDato', idInstanciaFechaFinalAdquisicion[0].tipoDato);\r\n formdata.append('comando.instanciasAtributoActualizar_Actualizar[1].valorFechaHora', `${fecFin}T00:00:00.000Z`);\r\n\r\n //Actualizar Programación Imágenes\r\n this.dashboardService.updateInstancia(this.imagenProgramacion.id, formdata).subscribe(\r\n {\r\n next: result => {\r\n\r\n this.controlError.mensajeDeError(result)\r\n\r\n this.messageService.add({ severity: 'success', summary: 'Transacción Exitosa', detail: 'Programación de imagen actualizada', life: 5000 });\r\n\r\n this.dashboardService.getDetalleCotizacionImagenProgramacion(this.idCotizacion).subscribe(data => {\r\n // console.log(data);\r\n this.totalCreditos -= this.totalCreditosImagenesProgramadas;\r\n this.imagenesProgramacion = [];\r\n this.totalCreditosImagenesProgramadas = 0;\r\n\r\n if (data.dato.length > 0) {\r\n data.dato.forEach((res: any, index: number) => {\r\n const atributos = res.instanciasAtributo;\r\n this.atributosProgramacion = atributos;\r\n\r\n let valorCreditos = 0;\r\n valorCreditos = atributos.CreditosItem.valor;\r\n\r\n this.totalCreditos += valorCreditos\r\n this.totalCreditosImagenesProgramadas += valorCreditos\r\n\r\n // console.log(atributos);\r\n \r\n\r\n const fecIni = atributos.FechaInicialAdquisicion.valor;\r\n const fecFin = atributos.FechaFinalAdquisicion.valor;\r\n const duracionDias = this.calculateDateDiff(fecIni, fecFin);\r\n\r\n this.imagenesProgramacion.push(\r\n {\r\n id: res.id,\r\n valorCreditos: atributos.CreditosItem.valor,\r\n codigoReferencia: atributos.CodigoReferencia.valor.tipoInstanciaEsquemaNombre,\r\n areaCobertura: atributos.AreaCoberturaKm2.valor.toFixed(2),\r\n //modoImagen: modo,\r\n idCotizacion: this.idCotizacion,\r\n fechaInicio: fecIni.split(\"T\")[0],\r\n fechaFin: fecFin.split(\"T\")[0],\r\n duracion: duracionDias,\r\n rowVersion: res.rowVersion,\r\n usuarioPropietarioID: res.usuarioPropietarioID,\r\n data: res,\r\n index: index + 1\r\n }\r\n );\r\n })\r\n }\r\n })\r\n },\r\n error: e => {\r\n console.log(e);\r\n\r\n this.messageService.add({ severity: 'error', summary: 'Error', detail: e.error.mensajes[0], life: 5000 });\r\n },\r\n complete: () => {\r\n this.imagenProgramadaDialog = false;\r\n }\r\n }\r\n )\r\n }\r\n }\r\n\r\n getInstanciaAtributo(item: any, atributo: string) {\r\n return item.data.instanciasAtributo.filter((s: { atributo: { codigoInterno: string; }; }) => s.atributo?.codigoInterno == atributo);\r\n }\r\n\r\n getRandomKey(length: number) {\r\n let result = '';\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n const charactersLength = characters.length;\r\n let counter = 0;\r\n while (counter < length) {\r\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n counter += 1;\r\n }\r\n return result;\r\n }\r\n\r\n alerta(text: string, icono: any) {\r\n Swal.fire({\r\n title: text,\r\n icon: icono,\r\n timer: 3000,\r\n toast: true,\r\n position: 'top',\r\n showConfirmButton: false,\r\n })\r\n }\r\n\r\n onPageChangeCotizacion(event: any) {\r\n // console.log(event);\r\n\r\n this.paginaCotizacion = event.page + 1;\r\n this.numRegistrosPagCotizacion = event.rows;\r\n\r\n this.getCotizaciones(this.paginaCotizacion);\r\n }\r\n\r\n cargarPaginaSiguiente() {\r\n this.paginaCotizacion += 1;\r\n this.getCotizaciones(this.paginaCotizacion);\r\n }\r\n\r\n cargarPaginaAnterior() {\r\n this.paginaCotizacion -= 1;\r\n this.getCotizaciones(this.paginaCotizacion);\r\n }\r\n\r\n getSeverity(fecha: string) {\r\n let severity = 'highdate';\r\n\r\n const numDays = this.calculateDateDiff(fecha);\r\n //console.log('numDays: ', numDays);\r\n \r\n if (numDays > 0) {\r\n severity = 'lowdate';\r\n }\r\n\r\n return severity;\r\n }\r\n\r\n calculateDateDiff(fechaIni: string, fechaFin?: string) {\r\n let currentDate = new Date();\r\n const dateSent = new Date(fechaIni);\r\n\r\n if (fechaFin) {\r\n currentDate = new Date(fechaFin);\r\n }\r\n\r\n return Math.floor((Date.UTC(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate()) - Date.UTC(dateSent.getFullYear(), dateSent.getMonth(), dateSent.getDate())) / (1000 * 60 * 60 * 24));\r\n }\r\n\r\n //TODO: control navbar\r\n\r\n userNombre: any = ''\r\n actualPassword = ''\r\n nuevoPassword = ''\r\n confirmarPassword = ''\r\n visible: boolean = false;\r\n entorno: string = `${environment.Entorno}`\r\n \r\n \r\n salir() {\r\n this.auth.deleteSesion()\r\n }\r\n \r\n redireccion(url: string) {\r\n this.auth.redireccion(url)\r\n }\r\n \r\n cambioDeContrasena() {\r\n this.visible = true\r\n }\r\n \r\n confirmarCambioContrasena() {\r\n let token = localStorage.getItem('jwt_token')\r\n const headers = new HttpHeaders({\r\n 'Authorization': `Bearer ${token}`\r\n });\r\n \r\n const options = {\r\n headers: headers\r\n };\r\n \r\n if (this.nuevoPassword !== this.confirmarPassword) {\r\n this.alerta('Las contraseñas no coinciden', 'error')\r\n return\r\n } else {\r\n let data = {\r\n claveAnterior: this.actualPassword,\r\n claveNueva: this.nuevoPassword,\r\n claveNuevaConfirmada: this.confirmarPassword\r\n }\r\n this.http.put(`${environment.URL_API}/Usuario/CambiarClave`, data, options).subscribe({\r\n next: (response: any) => {\r\n\r\n this.controlError.mensajeDeError(response)\r\n\r\n let mensaje = response.mensajes[0]\r\n this.alerta(`${mensaje}`, 'success')\r\n this.visible = false\r\n },\r\n error: (response) => {\r\n let mensaje = response.error.mensajes[0]\r\n this.alerta(`${mensaje}`, 'error')\r\n }\r\n })\r\n }\r\n }\r\n\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n selector: 'app-auth-view',\r\n templateUrl: './auth-view.component.html',\r\n styleUrls: ['./auth-view.component.css']\r\n})\r\nexport class AuthViewComponent {\r\n\r\n constructor(private auth: AuthService){}\r\n\r\n ngOnInit(): void {\r\n // this.auth.redireccion('login')\r\n }\r\n \r\n}\r\n","\r\n\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment'\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ChangePasswordService {\r\n private readonly apiUrl = `${environment}/Token/Autenticar`;\r\n\r\n constructor(private http: HttpClient) {}\r\n\r\n authenticate(credentials: any): Observable {\r\n return this.http.post(`${this.apiUrl}`, credentials);\r\n }\r\n\r\n changePassword(data: any, token: string): Observable {\r\n const headers = new HttpHeaders().set('Authorization', `Bearer ${token}`);\r\n return this.http.put(`${this.apiUrl}/Usuario/CambiarClave`, data, { headers });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { SignInComponent } from './auth/components/sign-in/sign-in.component';\r\nimport { HomeViewComponent } from './home/components/home-view/home-view.component';\r\nimport { authSesionGuard } from './guards/auth-sesion.guard';\r\nimport { SignUpComponent } from './auth/components/sign-up/sign-up.component';\r\nimport { DashboardViewComponent } from './dashboard/components/dashboard-view/dashboard-view.component';\r\nimport { AuthViewComponent } from './auth/components/auth-view/auth-view.component';\r\nimport { ChangePasswordComponent } from './auth/components/change-password/change-password.component';\r\n\r\nconst routes: Routes = [\r\n {path:'', redirectTo:'/auth/login', pathMatch:'full'},\r\n {path:'auth', component:AuthViewComponent,\r\n children:[\r\n {path:'login',component:SignInComponent},\r\n {path:'registro',component:SignUpComponent}\r\n ],\r\n },\r\n { path:'registro', component:SignUpComponent},\r\n { path:'home',component:HomeViewComponent,canActivate:[authSesionGuard]},\r\n { path:'change-password',component:ChangePasswordComponent,canActivate:[authSesionGuard]},\r\n { path:'dashboard',component:DashboardViewComponent,canActivate:[authSesionGuard]},\r\n { path:'**',component:SignInComponent}\r\n\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Component } from '@angular/core';\r\nimport { ChangePasswordService } from '../../services/change-password.service';\r\nimport { catchError, switchMap } from 'rxjs/operators';\r\nimport { of } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-cambio',\r\n templateUrl: './change-password.component.html',\r\n styleUrls: ['./change-password.component.css'],\r\n providers: [ChangePasswordService]\r\n})\r\nexport class ChangePasswordComponent {\r\n currentPassword: string = '';\r\n newPassword: string = '';\r\n confirmPassword: string = '';\r\n message: string = '';\r\n accessToken: string = '';\r\n\r\n constructor(\r\n private changePasswordService: ChangePasswordService,\r\n private router: Router\r\n ) {}\r\n\r\n authenticateAndGetToken() {\r\n const jwtToken = localStorage.getItem('jwt_token');\r\n\r\n if (jwtToken) {\r\n this.accessToken = jwtToken;\r\n this.message = 'Autenticación exitosa';\r\n this.changePassword();\r\n } else {\r\n console.error('No se encontró jwt_token en localStorage.');\r\n }\r\n }\r\n\r\n changePassword() {\r\n console.log(`mi token: ${this.accessToken}`);\r\n\r\n if (this.newPassword !== this.confirmPassword) {\r\n this.message = 'La nueva contraseña y la confirmación no coinciden.';\r\n return;\r\n }\r\n\r\n const data = {\r\n claveAnterior: this.currentPassword,\r\n claveNueva: this.newPassword,\r\n claveNuevaConfirmada: this.confirmPassword\r\n };\r\n\r\n this.changePasswordService.changePassword(data, this.accessToken)\r\n .pipe(\r\n switchMap((response: any) => {\r\n console.log(response);\r\n alert('Contraseña cambiada con éxito');\r\n return this.router.navigate(['/sing-up']);\r\n }),\r\n catchError(error => {\r\n this.message = 'Error al cambiar la contraseña';\r\n console.error('Error:', error);\r\n return of(null);\r\n })\r\n )\r\n .subscribe();\r\n }\r\n}\r\n","
\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n
\r\n","import { Component } from '@angular/core';\r\nimport { InactividadService } from './auth/services/inactividad.service';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css']\r\n})\r\nexport class AppComponent {\r\n title = 'Mapasco-K20';\r\n\r\n constructor(private inactividad:InactividadService){}\r\n\r\n // ngOnInit(): void {\r\n // this.inactividad.init()\r\n // }\r\n\r\n}\r\n\r\n","\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AuthRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AuthRoutingModule } from './auth-routing.module';\r\nimport { AuthViewComponent } from './components/auth-view/auth-view.component';\r\nimport { SignInComponent } from './components/sign-in/sign-in.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { SignUpComponent } from './components/sign-up/sign-up.component';\r\nimport { ChangePasswordComponent } from './components/change-password/change-password.component';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AuthViewComponent,\r\n SignInComponent,\r\n SignUpComponent,\r\n ChangePasswordComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n AuthRoutingModule,\r\n RouterModule,\r\n FormsModule,\r\n BrowserModule,\r\n ReactiveFormsModule,\r\n HttpClientModule\r\n ],\r\n providers: []\r\n})\r\nexport class AuthModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nconst routes: Routes = [];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class HomeRoutingModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HomeRoutingModule } from './home-routing.module';\r\nimport { HomeViewComponent } from './components/home-view/home-view.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { BusquedaDeImagenesComponent } from './components/busqueda-de-imagenes/busqueda-de-imagenes.component';\r\nimport { NavBarComponent } from './components/nav-bar/nav-bar.component';\r\nimport { CardModule } from 'primeng/card';\r\nimport { ScrollPanelModule } from 'primeng/scrollpanel';\r\nimport { ImageModule } from 'primeng/image';\r\nimport { ArcgisComponent } from './components/arcgis/arcgis.component';\r\n\r\n\r\n//Import PrimeNG modules\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { TableModule } from 'primeng/table';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\nimport { SelectButtonModule } from 'primeng/selectbutton';\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { FileUploadModule } from 'primeng/fileupload';\r\nimport { CalendarModule } from 'primeng/calendar';\r\nimport { StepperModule } from 'primeng/stepper';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\n\r\n@NgModule({\r\n declarations: [\r\n HomeViewComponent,\r\n BusquedaDeImagenesComponent,\r\n NavBarComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n HomeRoutingModule,\r\n FormsModule,\r\n BrowserModule,\r\n HttpClientModule,\r\n CardModule,\r\n ScrollPanelModule,\r\n ImageModule,\r\n FormsModule,\r\n ArcgisComponent,\r\n DialogModule,\r\n TableModule,\r\n ProgressSpinnerModule,\r\n SelectButtonModule,\r\n AccordionModule,\r\n StepperModule,\r\n ButtonModule,\r\n FileUploadModule,\r\n CalendarModule,\r\n RadioButtonModule\r\n ]\r\n})\r\nexport class HomeModule { }\r\n","import { Injectable } from '@angular/core';\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent, HttpClient } from '@angular/common/http';\nimport { Observable, throwError,Subject } from 'rxjs';\nimport { jwtDecode } from 'jwt-decode';\nimport { environment } from 'src/environments/environment';\nimport { switchMap, catchError } from 'rxjs/operators';\nimport { AuthService } from '../auth/services/auth.service';\nimport Swal from 'sweetalert2'\n\n@Injectable()\nexport class RefreshTokenInterceptor implements HttpInterceptor {\n \n constructor(private http: HttpClient, private auth:AuthService) {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n // Verificar si la solicitud ya es para refrescar el token\n if (req.url.includes('/Token/RefrescarJWTToken')) {\n return next.handle(req);\n }\n\n let token = localStorage.getItem('jwt_token');\n\n if (token && this.isTokenExpired(token)) {\n console.log(\"El token ha expirado\");\n\n // Refrescar el token\n let r_token = localStorage.getItem('refreshToken');\n if (r_token) {\n return this.refrescarToken(r_token, token).pipe(\n switchMap((res: any) => {\n if (res.exitoso) {\n // Guardar el nuevo token\n localStorage.setItem('jwt_token', res.dato.accessToken);\n localStorage.setItem('refreshToken', res.dato.refreshToken);\n console.log(\"Token refrescado\");\n\n // Clonar la solicitud original con el nuevo token\n const clonedReq = req.clone({\n setHeaders: {\n Authorization: `Bearer ${res.dato.accessToken}`\n }\n });\n return next.handle(clonedReq); // Reintentar la solicitud con el nuevo token\n } else {\n \n\n Swal.fire({\n title: \"Lo sentimos, la sesión ha expirado.\",\n text: 'Inicia sesión nuevamente.',\n showDenyButton: false,\n showCancelButton: false,\n confirmButtonText: \"Ok\",\n backdrop: `rgba(0,0,0,0.8)`,\n }).then((result) => {\n \n if (result.isConfirmed) {\n this.auth.deleteSesion()\n }\n\n });\n\n \n \n return throwError(() => new Error('Autenticación fallida'));\n }\n }),\n catchError((err) => {\n console.log(err);\n return throwError(() => new Error(err));\n })\n );\n }\n } else if (token) {\n // Si el token está vigente, clonar la solicitud\n // console.log(\"El token está vigente\");\n req = req.clone({\n setHeaders: {\n Authorization: `Bearer ${token}`\n }\n });\n }\n\n // Continuar la solicitud\n return next.handle(req);\n }\n\n private isTokenExpired(token: string): boolean {\n const decoded: any = jwtDecode(token);\n const exp = decoded.exp;\n const currentTime = Math.floor(Date.now() / 1000); \n return exp < currentTime; \n }\n\n private refrescarToken(r_token: string, token: string): Observable {\n console.log(\"Refrescando token\");\n let data = {\n accessToken: token,\n refreshToken: r_token\n };\n \n return this.http.post(`${environment.URL_API}/Token/RefrescarJWTToken`, data, {\n headers: { 'skipInterceptor': 'true' } \n });\n }\n}","import { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { AuthModule } from './auth/auth.module';\r\nimport { HomeModule } from './home/home.module';\r\nimport { DashboardModule } from './dashboard/dashboard.module';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n\r\n// Import PrimeNG modules\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { TableModule } from 'primeng/table';\r\nimport { ImageModule } from 'primeng/image';\r\nimport { ToolbarModule } from 'primeng/toolbar';\r\nimport { TagModule } from 'primeng/tag';\r\nimport { ConfirmDialogModule } from 'primeng/confirmdialog';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { DropdownModule } from 'primeng/dropdown';\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { FieldsetModule } from 'primeng/fieldset';\r\nimport { OverlayPanelModule } from 'primeng/overlaypanel';\r\nimport { ChipModule } from 'primeng/chip';\r\nimport { CardModule } from 'primeng/card';\r\nimport { SidebarModule } from 'primeng/sidebar';\r\nimport { ProgressSpinnerModule } from 'primeng/progressspinner';\r\nimport { ArcgisComponent } from './home/components/arcgis/arcgis.component';\r\nimport { ConfirmationService } from 'primeng/api';\r\nimport { NavBarComponent } from './home/components/nav-bar/nav-bar.component';\r\nimport { BarraNavegacionComponent } from './barra-navegacion/barra-navegacion.component';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { RefreshTokenInterceptor } from './interceptors/refresh-token.interceptor';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n ],\r\n imports: [\r\n CommonModule,\r\n BrowserModule,\r\n AppRoutingModule,\r\n FormsModule,\r\n HomeModule,\r\n ReactiveFormsModule,\r\n AuthModule,\r\n //DashboardModule,\r\n BrowserModule,\r\n AppRoutingModule,\r\n ButtonModule,\r\n TableModule,\r\n ImageModule,\r\n ToolbarModule,\r\n TagModule,\r\n ConfirmDialogModule,\r\n DialogModule,\r\n DropdownModule,\r\n ToastModule,\r\n FieldsetModule,\r\n OverlayPanelModule,\r\n ChipModule,\r\n CardModule,\r\n SidebarModule,\r\n ProgressSpinnerModule,\r\n BrowserAnimationsModule\r\n ],\r\n providers: [\r\n ConfirmationService,\r\n { provide: HTTP_INTERCEPTORS, useClass: RefreshTokenInterceptor, multi: true }\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\n\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n\n\n /*\n Despliegue: \n ng build --configuration=production --base-href \"/mapasco-k2o/\"\n */","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(() => {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = () => ([]);\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 41993;\nmodule.exports = webpackEmptyAsyncContext;","var map = {\n\t\"./af\": 35528,\n\t\"./af.js\": 35528,\n\t\"./ar\": 1036,\n\t\"./ar-dz\": 17579,\n\t\"./ar-dz.js\": 17579,\n\t\"./ar-kw\": 69588,\n\t\"./ar-kw.js\": 69588,\n\t\"./ar-ly\": 11650,\n\t\"./ar-ly.js\": 11650,\n\t\"./ar-ma\": 93258,\n\t\"./ar-ma.js\": 93258,\n\t\"./ar-sa\": 54085,\n\t\"./ar-sa.js\": 54085,\n\t\"./ar-tn\": 90287,\n\t\"./ar-tn.js\": 90287,\n\t\"./ar.js\": 1036,\n\t\"./az\": 89757,\n\t\"./az.js\": 89757,\n\t\"./be\": 59620,\n\t\"./be.js\": 59620,\n\t\"./bg\": 31139,\n\t\"./bg.js\": 31139,\n\t\"./bm\": 4042,\n\t\"./bm.js\": 4042,\n\t\"./bn\": 19641,\n\t\"./bn-bd\": 19126,\n\t\"./bn-bd.js\": 19126,\n\t\"./bn.js\": 19641,\n\t\"./bo\": 494,\n\t\"./bo.js\": 494,\n\t\"./br\": 20934,\n\t\"./br.js\": 20934,\n\t\"./bs\": 26274,\n\t\"./bs.js\": 26274,\n\t\"./ca\": 45831,\n\t\"./ca.js\": 45831,\n\t\"./cs\": 92354,\n\t\"./cs.js\": 92354,\n\t\"./cv\": 79692,\n\t\"./cv.js\": 79692,\n\t\"./cy\": 58774,\n\t\"./cy.js\": 58774,\n\t\"./da\": 38955,\n\t\"./da.js\": 38955,\n\t\"./de\": 21557,\n\t\"./de-at\": 24954,\n\t\"./de-at.js\": 24954,\n\t\"./de-ch\": 81881,\n\t\"./de-ch.js\": 81881,\n\t\"./de.js\": 21557,\n\t\"./dv\": 16475,\n\t\"./dv.js\": 16475,\n\t\"./el\": 38877,\n\t\"./el.js\": 38877,\n\t\"./en-au\": 70454,\n\t\"./en-au.js\": 70454,\n\t\"./en-ca\": 67356,\n\t\"./en-ca.js\": 67356,\n\t\"./en-gb\": 10456,\n\t\"./en-gb.js\": 10456,\n\t\"./en-ie\": 28789,\n\t\"./en-ie.js\": 28789,\n\t\"./en-il\": 85471,\n\t\"./en-il.js\": 85471,\n\t\"./en-in\": 39664,\n\t\"./en-in.js\": 39664,\n\t\"./en-nz\": 97672,\n\t\"./en-nz.js\": 97672,\n\t\"./en-sg\": 80805,\n\t\"./en-sg.js\": 80805,\n\t\"./eo\": 87390,\n\t\"./eo.js\": 87390,\n\t\"./es\": 1564,\n\t\"./es-do\": 51473,\n\t\"./es-do.js\": 51473,\n\t\"./es-mx\": 92089,\n\t\"./es-mx.js\": 92089,\n\t\"./es-us\": 84156,\n\t\"./es-us.js\": 84156,\n\t\"./es.js\": 1564,\n\t\"./et\": 6513,\n\t\"./et.js\": 6513,\n\t\"./eu\": 7856,\n\t\"./eu.js\": 7856,\n\t\"./fa\": 2378,\n\t\"./fa.js\": 2378,\n\t\"./fi\": 22687,\n\t\"./fi.js\": 22687,\n\t\"./fil\": 80032,\n\t\"./fil.js\": 80032,\n\t\"./fo\": 46845,\n\t\"./fo.js\": 46845,\n\t\"./fr\": 8875,\n\t\"./fr-ca\": 56425,\n\t\"./fr-ca.js\": 56425,\n\t\"./fr-ch\": 41746,\n\t\"./fr-ch.js\": 41746,\n\t\"./fr.js\": 8875,\n\t\"./fy\": 67037,\n\t\"./fy.js\": 67037,\n\t\"./ga\": 11217,\n\t\"./ga.js\": 11217,\n\t\"./gd\": 37010,\n\t\"./gd.js\": 37010,\n\t\"./gl\": 51931,\n\t\"./gl.js\": 51931,\n\t\"./gom-deva\": 64488,\n\t\"./gom-deva.js\": 64488,\n\t\"./gom-latn\": 8032,\n\t\"./gom-latn.js\": 8032,\n\t\"./gu\": 34984,\n\t\"./gu.js\": 34984,\n\t\"./he\": 69090,\n\t\"./he.js\": 69090,\n\t\"./hi\": 42085,\n\t\"./hi.js\": 42085,\n\t\"./hr\": 38787,\n\t\"./hr.js\": 38787,\n\t\"./hu\": 2901,\n\t\"./hu.js\": 2901,\n\t\"./hy-am\": 59819,\n\t\"./hy-am.js\": 59819,\n\t\"./id\": 44074,\n\t\"./id.js\": 44074,\n\t\"./is\": 70715,\n\t\"./is.js\": 70715,\n\t\"./it\": 31746,\n\t\"./it-ch\": 77040,\n\t\"./it-ch.js\": 77040,\n\t\"./it.js\": 31746,\n\t\"./ja\": 3180,\n\t\"./ja.js\": 3180,\n\t\"./jv\": 34346,\n\t\"./jv.js\": 34346,\n\t\"./ka\": 65538,\n\t\"./ka.js\": 65538,\n\t\"./kk\": 79772,\n\t\"./kk.js\": 79772,\n\t\"./km\": 87905,\n\t\"./km.js\": 87905,\n\t\"./kn\": 79125,\n\t\"./kn.js\": 79125,\n\t\"./ko\": 69140,\n\t\"./ko.js\": 69140,\n\t\"./ku\": 2354,\n\t\"./ku.js\": 2354,\n\t\"./ky\": 63768,\n\t\"./ky.js\": 63768,\n\t\"./lb\": 14016,\n\t\"./lb.js\": 14016,\n\t\"./lo\": 83169,\n\t\"./lo.js\": 83169,\n\t\"./lt\": 62353,\n\t\"./lt.js\": 62353,\n\t\"./lv\": 83243,\n\t\"./lv.js\": 83243,\n\t\"./me\": 52338,\n\t\"./me.js\": 52338,\n\t\"./mi\": 35555,\n\t\"./mi.js\": 35555,\n\t\"./mk\": 85794,\n\t\"./mk.js\": 85794,\n\t\"./ml\": 53151,\n\t\"./ml.js\": 53151,\n\t\"./mn\": 46458,\n\t\"./mn.js\": 46458,\n\t\"./mr\": 69165,\n\t\"./mr.js\": 69165,\n\t\"./ms\": 8680,\n\t\"./ms-my\": 87477,\n\t\"./ms-my.js\": 87477,\n\t\"./ms.js\": 8680,\n\t\"./mt\": 79684,\n\t\"./mt.js\": 79684,\n\t\"./my\": 40285,\n\t\"./my.js\": 40285,\n\t\"./nb\": 45922,\n\t\"./nb.js\": 45922,\n\t\"./ne\": 29040,\n\t\"./ne.js\": 29040,\n\t\"./nl\": 5066,\n\t\"./nl-be\": 74460,\n\t\"./nl-be.js\": 74460,\n\t\"./nl.js\": 5066,\n\t\"./nn\": 53693,\n\t\"./nn.js\": 53693,\n\t\"./oc-lnc\": 88676,\n\t\"./oc-lnc.js\": 88676,\n\t\"./pa-in\": 92341,\n\t\"./pa-in.js\": 92341,\n\t\"./pl\": 57416,\n\t\"./pl.js\": 57416,\n\t\"./pt\": 84344,\n\t\"./pt-br\": 30113,\n\t\"./pt-br.js\": 30113,\n\t\"./pt.js\": 84344,\n\t\"./ro\": 72643,\n\t\"./ro.js\": 72643,\n\t\"./ru\": 61305,\n\t\"./ru.js\": 61305,\n\t\"./sd\": 96095,\n\t\"./sd.js\": 96095,\n\t\"./se\": 74486,\n\t\"./se.js\": 74486,\n\t\"./si\": 58742,\n\t\"./si.js\": 58742,\n\t\"./sk\": 96722,\n\t\"./sk.js\": 96722,\n\t\"./sl\": 3345,\n\t\"./sl.js\": 3345,\n\t\"./sq\": 52416,\n\t\"./sq.js\": 52416,\n\t\"./sr\": 39450,\n\t\"./sr-cyrl\": 50501,\n\t\"./sr-cyrl.js\": 50501,\n\t\"./sr.js\": 39450,\n\t\"./ss\": 32222,\n\t\"./ss.js\": 32222,\n\t\"./sv\": 9454,\n\t\"./sv.js\": 9454,\n\t\"./sw\": 19638,\n\t\"./sw.js\": 19638,\n\t\"./ta\": 96494,\n\t\"./ta.js\": 96494,\n\t\"./te\": 94435,\n\t\"./te.js\": 94435,\n\t\"./tet\": 25003,\n\t\"./tet.js\": 25003,\n\t\"./tg\": 13706,\n\t\"./tg.js\": 13706,\n\t\"./th\": 16025,\n\t\"./th.js\": 16025,\n\t\"./tk\": 59780,\n\t\"./tk.js\": 59780,\n\t\"./tl-ph\": 22068,\n\t\"./tl-ph.js\": 22068,\n\t\"./tlh\": 39167,\n\t\"./tlh.js\": 39167,\n\t\"./tr\": 32494,\n\t\"./tr.js\": 32494,\n\t\"./tzl\": 58707,\n\t\"./tzl.js\": 58707,\n\t\"./tzm\": 91296,\n\t\"./tzm-latn\": 34532,\n\t\"./tzm-latn.js\": 34532,\n\t\"./tzm.js\": 91296,\n\t\"./ug-cn\": 12086,\n\t\"./ug-cn.js\": 12086,\n\t\"./uk\": 85069,\n\t\"./uk.js\": 85069,\n\t\"./ur\": 29304,\n\t\"./ur.js\": 29304,\n\t\"./uz\": 95115,\n\t\"./uz-latn\": 97609,\n\t\"./uz-latn.js\": 97609,\n\t\"./uz.js\": 95115,\n\t\"./vi\": 34802,\n\t\"./vi.js\": 34802,\n\t\"./x-pseudo\": 65605,\n\t\"./x-pseudo.js\": 65605,\n\t\"./yo\": 88456,\n\t\"./yo.js\": 88456,\n\t\"./zh-cn\": 23272,\n\t\"./zh-cn.js\": 23272,\n\t\"./zh-hk\": 9402,\n\t\"./zh-hk.js\": 9402,\n\t\"./zh-mo\": 48101,\n\t\"./zh-mo.js\": 48101,\n\t\"./zh-tw\": 40262,\n\t\"./zh-tw.js\": 40262\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"x_google_ignoreList":[42,43]}