{"version":3,"file":"main.js","mappings":"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","names":["b","constructor","g","this","f","headers","P","getAbogados","http","get","url","httpOptions","getPlanes","getPlanesAll","doPlanesSave","p","post","doPlanesDelete","delete","aceptarBajar","patch","estado","loginUrl","baja","FormData","append","id","toString","motivoBaja","put","solicitarReenvioConfirmacion","registrarCliente","registrarClienteWithFiles","s","JSON","stringify","forEach","k","registrarAbogado","certification","getcertification","postUser","LoginUserNippy","postUserNippy","getIdentificacion","confirmarUsuario","tutorialCompleto","requestChangePassword","getRequest","setNewPass","getPlanInfos","t","L","R","Object","assign","params","ciclo","jurisdiccionId","planIds","Y","subscribe","next","G","y","planId","complete","getEspecialidades","getEspecialidadesByPais","B","countryId","getMotivosBaja","getJurisdicciones","getJurisdiccionByLocalidadId","getLocalidades","getCategorias","getCategoriasByPais","postCaso","categoriaId","descripcion","localidadId","tipo","titulo","profesionalAsignadoId","fechaCreacion","zonaHoraria","files","getPaises","log","getPaisesClean","pipe","push","getFormulario","postFormulario","putPregunta","pregunta","peso","respuesta","formulario","id_formulario","updPregunta","postCompany","putCompany","putCompanyLogo","idCompany","getCompanies","getPais","postPais","postJurisdicciones","postLocalidades","getJurisdiccionPaises","getJurisdiccionPaisesBy","getJurisdiccionPaisesAuto","parse","localStorage","getItem","pais","getSessionCountryIdByLocalStorage","Number","parseInt","postJurisdiccionPais","getJurisdiccionPaisAdmin","getMatriculaConfig","postMatriculaConfig","putMatriculaConfig","getPaisConfig","doPaisConfigSave","setJurisdiccionPaisAdminPut","setJurisdiccionPaisAdminDel","getLocalidadPaises","postLocalidadPais","getProvincias","postProvincia","postCasoTmpUpload","length","postCasoAgenda","Z","citaId","putCasoAgenda","E","id_caso","postCasoMail","putCasoMail","getPerfil","getPerfilUsuario","getCasos","getAbogadosDisponibles","getOportunidades","editarPerfil","cambiarLenguaje","mail","lenguage","getAbogadoCaso","aceptarAbogado","aceptarCaso","borrarCaso","postFiles","getFiles","patchAvatar","getAvatar","downloadDoc","responseType","getHorariosLlamada","postHorario","modificarHorario","createPuntuacion","getPuntuacion","getAbogadosDisponiblesLlamada","deleteHorario","getCuenta","doCuentaNotificacionSuscribir","postPago","mpCallbackFailure","mpCallbackSuccess","mpCallbackPending","postPagoContratarPlan","postPagoContratarAbogado","doSuscripcionNewCheck","getResultado","editarDatosProfesionales","especialidadesIds","editarJurisdiccion","editarJurisdiccionv2","agregarJurisdiccion","putLinkAsociacion","putLinkAsociacionPaypal","getAgendaDisponibles","getAgendaDias","agendarCita","guardarRangoCitas","removeRange","getRanges","getAbogadosDisponiblesAgenda","getTags","patchRangos","getEspecialidadesCliente","getEspecialidadesAbogados","getCategoriasAll","getEspecialidadesLista","getEspecialidadesListaById","delRegistroTabla","postEspecialidades","addEspecialidad","especialidades","getLinkAsociacion","getCasoById","getCountry","getHttpOptions","window","token","Authorization","handleError","console","error","h","factory","m","openSnackBar","_snackBar","open","duration","canActivate","authenticationService","getRole","data","roles","logOut","limpiarStorage","router","navigate","queryParams","returnUrl","canLoad","S","c","getPlanPaises","getPlanPaisesEnabled","doPlanPaisesSave","doPlanPaisesDel","getPlanMonedas","monto","montoAnual","getPlanMonedasEnabled","getPlanMonedasByCountryUser","getMonedasDisp","doPlanMonedaSave","doPlanMonedaDel","getPlataformas","getPlataformaMonedas","getSuscripcionEstados","getSuscripciones","getSuscripcionesByUser","getSuscripcionFilter","plataformaId","usuario","estados","getMonedas","getPlataformaDispMonedas","doPlataformaMonedaSave","doPlataformaMonedaDel","getPlanPlataformas","getPlanPlataformasFilter","monedaId","getPlanPlataformasEnabled","getPlanPlatPlataformaDisp","doPlanPlataformaSave","doPlanPlataformaValidar","doPlanPlataformaDel","snackBar","doShowErrorSnackBar","message","Cliente","w","It","X","userSubject","user","asObservable","tokenDecoderService","logout","cerrarSesion","BajaCuenta","expirado","removeItem","decodedToken","helper","decodeToken","decodedUser","expirationDate","getTokenExpirationDate","isExpired","isTokenExpired","role","production","apiUrl","angularUrl","measurement_id","mercadopago_token","paypal_clientid","paypal_partner_url","webPushPublicKey","Login","e","ngOnInit","selectors","o","n","i","matIconRegistry","addSvgIcon","domSanitizer","bypassSecurityTrustResourceUrl","a","r","d","addLangs","language","sessionStorage","setDefaultLang","resend","userForm","value","apiService","dialog","closeAll","gt","l","N","getRedPerfil","getPlataformaPerfil","plataforma","suscripcionUuid","getRedesCredentialsUrl","loginRedes","verificoSesion","navegacion","getCompanyId","doUpdateUsuarioCompany","handleUserData","setItem","id_usuario","lenguaje","rol","gtag","send_to","method","tutorialCompletado","navigateByUrl","state","status","doLoadWebPush","swPush","requestSubscription","serverPublicKey","then","toJSON","catch","$","imgSelected","switchLang","translate","use","Ft","x","C","email","password","O","navigator","loginSrv","route","paramMap","code","trackLoginRedesCliente","trackLoginRedesAbogado","openDialog","instant","trackLogin","trackLoginSuccess","flag","redirectLinkedin","location","href","redirectGoogle","redirectFacebook","onSubmit","iniciarSesion","clave","companyLogo","openErrorSnackBar","backdropClass","openDialogResendMail","panelClass","openResend","navegarRegistro","Ot","Rt","btn1Style","btn2Style","activeOpacity","changeMenu","checked","it","transform","sanitizer","bypassSecurityTrustUrl","URL","createObjectURL","i0","pure","PerfilComponent","service","UntypedFormGroup","archivosSeleccionados","UntypedFormControl","nombre","apellido","tipoDni","FormControl","dni","telefono","localidad","provinciaResidencia","localidadResidencia","direccion","Validators","codigoPostal","promocion","sessionUser","activarEditar","cancelar","lang","editar","nuevosDatos","perfil","cambiarDatos","datosUsuario","tiposIdentificacionId","numeroDni","id_localidad","editarCambiosPerfil","getProvinciaResidencia","provinciasResidencias","getMiPerfil","cargarLocalidadesResidencia","id_jurisdiccion","localidadesResidencias","selectFiles","event","target","archivos","getIdentificaciones","identificaciones","nippy","clear","tipoDniId","setValue","avatarUrl","tieneFoto","environment","patchValue","ctx","Gt","Jt","vincular","Ue","desc","regexVal","regexInput","Bn","Q","doAbogadoFacturaionUpdate","getPlanMonedaPlanesDips","doAbogadoSuscribir","getSubscripcionLast","doAbogadoSuscripcionCancelar","isSuscriptionActive","isPlanCorpOrPrem","planNombre","toLocaleUpperCase","indexOf","getAbogadoVinculaciones","getAbogadoVinculacionLink","doAbogadoVinculacionPaypal","authCode","sharedId","getAbogadoVinculacionesById","getPlanDefaultAmounts","doAbogadoSuscripcionCheckAndUpdate","doAbogadoValidarIncrease","doClientePostPago","planPlataforma","linkPago","doClienteValidarPago","doClienteCasoPago","PopupFacturacionComponent","planService","servicePlanMultipago","dialogRef","cuit","getSuscripcion","doPaisConfigCuitLoad","getClientStatus","res","mensaje","codigopostal","err","PAISCONFIG_KEY_CUIT","paisConfigCuit","setPaisConfigCuit","controlCuit","validators","bvisible","bobligatorio","svalor01","facturacionForm","setValidators","updateValueAndValidity","getRawValue","datos","doCuitFix","cuitValue","match","svalor02","cuitOldVal","MAT_DIALOG_DATA","Et","contador","contadorActivas","tt","crearSubscripcion","anual","createNewClientOld","getPlanesIncrease","setIncreaseClient","deleteClientPlan","getSubscriptionStatus","removePlan","bajarJurisdicciones","getPlanesAbogado","abrirModal","datosProfesionales","especialidadesAbogados","contadorJurisdiccionesService","jurisdicciones","verificoDatosFacturacion","z","Tt","afterClosed","reload","isPlanActive","nombrePlan","Ln","plan","changeClass","clase","downgrade","crearEspecialidades","crearJurisdicciones","map","replace","selected","cambiarEspecialidad","id_especialidad","nombreCliente","especialidadesExistentes","cantidadEspecialidadesSeleccionadas","botonDisabled","jurisdiccion","id_datos_profesionales","tomo","folio","cambiarJurisdicciones","cantidadJurisdiccionesSeleccionadas","desactivarBoton","desactivarBotonEspecialidades","onSubmitEspecialidades","wt","te","title","doc","respuestas","yt","avatar","usuarioCreador","crearEstrellasMapeando","crearEstrellasIndividualEmojis","Math","trunc","puntuacion","estrellas","crearEstrellasIndividual","qt","getTiempo","vencimientoPeriodoPrueba","split","Date","getMonth","getDate","pt","updateTags","appendTags","updateRanges","updateWithEmptyTags","Promise","concat","Set","vt","btn3Style","bt","VistaPreviaComponent","_location","especialidadService","abogado","caso","puntuacionFinal","generateStars","includes","especialidad","especialidadParaMostrar","mostrar","aux","substring","userData","rolId","baseStar","stars","navegar","undefined","OpinionesComponent","puntuacionesService","datosPerfil","puntuacionPropia","cantOpiniones","opiniones","Nn","getMotivos","motivosBaja","cambiarMotivo","motivo","cantidadMotivosSeleccionadas","onSubmitBaja","Fn","$t","uno","dos","tres","cuatro","paga","planVencido","textoEspecialidades","textoJurisdicciones","ayuda","width","Rn","_plan","doUpdateCostos","suscripcion","_suscripcion","planPlataformaCiclo","costo","moneda","costoAnual","monedaAnual","$event","RangeHour","viewValue","ProductFormArray","dia","productForm","PerfilAbogadoComponent","fb","formBuilder","tiempoSubscripcionService","updateRangesService","servicePlanMP","desde","hasta","tipoIdentificacion","colegio","jurisdiccionNombre","localidadNombre","formGroup","group","activado","inicio","fin","duracionLlamada","duracionAgenda","masHorarios","name","horariosLista","array","quantities","productFormArray","strHour","initRangeHours","actualizarJurisdicciones","crearHorarios","datosJurisdiccion","tags","obtenerHorariosLlamada","getPuntuaciones","datosAux","initTranslateComponent","onLangChange","vinculaciones","cacheVinculaciones","certify","dto","Certificacion","preg","translations","diasAgenda","id_rango_horario","endHourButton","rangeHour","addRange","addRanges","diasLlamada","cargado","inicioString","finString","modificar","borrado","index","find","newQuantity","init","end","String","nuevosHorarios","agregarInput","addQuantity","elemento","enableRanges","calculateNewRange","indexInitRange","keys","initRangeHoursTemp","entries","filter","loadNewInitRange","removeQuantity","lastRemoveWithoutData","control","controls","idRange","removeAt","endtRangeHoursTemp","activeAddRanges","indexLast","reverse","range","existIntervalZero","existIntervalMid","onFormSubmitMasHorarios","controlsScheduler","diaSeleccionado","time","isNaN","text","cargarHorariosAgenda","ranges","activar","hasLinkedPayment","planApto","suscripcionSel","planAgenda","activartemp","onFormSubmitHorarioAgenda","activarLlamada","planLlamada","onFormSubmitLlamada","cargarHorarios","borrarHorarioLlamada","posicion","response","nuevoHorario","horaFin","horaInicio","usuarioId","horarios","horariosLlamadaConId","convertirAHorasYMinutos","cargarExistentes","horario","convertirString","minutos","hora","minutosNumero","modo","element","encontrado","initCallHours","endCallHours","terminoCarga","DialogComponent","openDialogVincular","DialogVincularComponent","campo","BIO","TiposIdentificacion","id_tipos_identificacion","editarBio","JURISDICCION","DATOS","editarDatos","EDITAR_BIO","EDITAR_DATOS","verificoPlan","cantidadJurisdicciones","planJurisdicciones","ESPECIALIDAD","especialidadesNombre","PopupDowngradeComponent","planSel","result","actualizarEspecialidades","dato","borrarJurisdiccion","CancelarComponent","texto","textoBotonCerrar","textoBotonConfirmar","mostrarCancelar","jurisdiccionesAEliminar","datosGuardados","especialidadesSeleccionadas","nuevasEspecialidades","agregoEspecialidades","agregarEspecialidades","modificarEspecialidades","planEspecialidades","planes","selPlan","some","id_plan","planI","textoSubscripcion","tieneSuscripcion","llamada","agenda","cuenta","estaAsociado","cuentaVinculada","definirIdentificacion","loadScheduler","userId","endRangeHours","scheduler","indexEndRange","hourInit","minuteInit","hourEnd","minuteEnd","getCertification","cert_requested","status_doc","certified","otro","aceptada","especialidadAlterada","actualizarAgenda","redibujarEspecialidades","loadEndRangeHours","hour","minute","existIntervalZeroTwo","existIntervalMidTwo","intervalToRemoveHour","item","intervalToRemoveMid","itemsDuplicatedHour","itemHour","splice","itemsDuplicatedMid","getInitRanges","getEndRanges","active","indexStart","lstControls","enable","disable","loadInitRange","isPlanExpensive","isSuscriptionActiveAndAgenda","isSuscriptionActiveAndLlamada","vinculacion","needLinked","linked","fixDigits","digits","slice","pa","Jn","cerrar","close","CalificarComponent","categoriaAbogado","categoriaCaso","NuevaPuntuacion","comentario","isAbogado","rolActual","clienteAbogado","cliente","opinion","opinionForm","DialogCalificarComponent","publicar","puntuar","puntos","clickeada","estrella","mapCalificando","calificando","especialidadesToString","especialidadCaso","tituloDelCaso","join","calificado","Fo","Hn","SUSCRIPCION","planUuid","typePago","clientId","paypalClientId","doLoadSuscripcion","vault","intent","Buttons","style","shape","color","layout","label","createSubscription","subscription","create","plan_id","custom_id","onApprove","alert","render","doLoadCheckout","createOrder","order","purchase_units","amount","currency_code","payee","email_address","payment_instruction","disbursement_mode","platform_fees","application_context","return_url","cancel_url","ba","PopupMercadopagoTarjetaComponent","_renderer2","_document","script","createElement","type","src","onload","MercadoPago","doLoadMercadoPago","appendChild","body","ngAfterViewInit","bricksBuilder","mp","mpPublickToken","locale","bricks","settings","initialization","payer","identification","TI_MP","number","customization","visual","theme","texts","cardholderName","placeholder","paymentMethods","minInstallments","maxInstallments","callbacks","onReady","cardFormData","cardFormdata","onError","doLoadMercadoPagoAPI","cardForm","iframe","form","cardNumber","securityCode","issuer","installments","identificationType","identificationNumber","cardholderEmail","onFormMounted","warn","preventDefault","paymentMethodId","payment_method_id","issuerId","issuer_id","getCardFormData","fetch","transaction_amount","description","onFetching","resource","progressBar","document","querySelector","removeAttribute","setAttribute","DOCUMENT","Vn","onReturnURL","Jo","formMail","valid","onSelTarjeta","Qn","doSelOption","onSelPlataforma","onSelByUrl","optional01","optional02","$n","serviceMultipago","cachePlanMonedas","cachePlanById","planMonedaId","principal","planTipoId","planPlataformasMes","planPlataformasAnio","activo","plataformaMonedaEstado","visible","unshift","cachePlanes","planContratado","findIndex","sort","precio","contratar","checkoutLink","elegirPlanPlataforma","plataformaNombre","componentInstance","uuid","subscriptionID","isPlanWithSuscription","isSuscripcionActivo","isSuscripcionActivoWithRaw","estadoRaw","isSuscripcionInactivo","elegir","idSuscripcion","suscripcionId","chekoutLink","removePlangotPerfil","removePlanAsync","openDialogCurso","zt","showSpinner","fr","showSpinner$","updateShowSpinner","Kn","mostrarJurisdiccion","mostrarEspecialidades","onKey","toUpperCase","cargarLocalidades","localidades","datosProfesionalesId","intentoAgregar","jurisdiccionesExistentes","patchForm","cargando","showMatricula","showFolio","showTomo","clearValidators","onKeyUp","colegioValido","onKeyUpFolio","folioValido","onKeyUpTomo","tomoValido","Wn","merchantIdInPayPal","exito","Xn","to","typePlatform","preapproval_id","back","external_reference","externalref","no","nt","Er","At","formCuit","countryConfigId","countryName","sclave","sdesc","svalordesc","onFileSelected","fileChangeListener","srcElement","getElementById","addEventListener","textContent","ngxCsvParser","header","delimiter","csvRecords","fileChangeListenerLoc","paises","onSelected","jurisdiccionesInput","adminPais","matriculaConfig","doPaisConfigLoad","isDisabled","paisConfig","doPaisConfigVisibleOnChange","doPaisConfigRegEx","templateRegExs","saveMatriculaConfig","id_matriculaconfig","onChangeAdminPais","numPaisSeleccionado","isPaisConfig","onSelectedJur","onClick","codPais","nativeElement","nomPais","onClickJur","nomJur","selectCod","onClickLoc","nomLoc","selectCodJur","numJurSeleccionado","st","ft","checkPass","Kt","codigo","edit","selectedEntity","entity","cacheCountries","feedForm","entForm","hash","oo","formLogo","display","doSelFile","selFile","doSubirLogo","serviceApi","jt","addEntity","companies","doLogoUpload","getLogoUrl","Wt","sleep","setTimeout","ExitoComponent","sleepService","isPlatform","esCliente","mensajeSub","doWaitSubscripcion","subscripcionId","io","Pc","preguntas","Xt","question","weight","answer","selectedPregunta","certForm","id_pregunta","mt","addQuestion","addFormulario","ao","signURL","sign_url","ro","Ec","path","redirectTo","pathMatch","component","I","Dn","Gn","Yn","eo","tn","co","initGoogleAnalytics","spinnerServiceService","routertrack","events","page_title","urlAfterRedirects","page_path","go","restablecer","redirectUrl","horizontalPosition","verticalPosition","lo","repeatPassword","idCambioClave","nueva","verificarPassSalir","blur","verificarPass","coinciden","checkPasswordService","Ut","doPreparePageTranslate","po","serviceUtil","company","companyId","mostrarTerminos","trackNetworkRegisterFacebook","trackNetworkRegisterGoogle","trackNetworkRegisterLinkedin","obtenerCredencialesLinkedin","obtenerCredencialesGoogle","obtenerCredencialesFacebook","so","logo","history","soyCliente","textoMuestra","textoCliente","textoAbogado","cambiar","posicionFinal","posicionInicial","Jc","St","fo","registroRedes","mo","textoTitulo","textoNavegacion","nn","redes","newUser","cargarProvincias","suscripcionPlataforma","trackRegister","startsWith","keyPressAlphanumeric","fromCharCode","charCode","test","event_name","guardarAbogado","certificar","redesSociales","mailConfirmUrl","solicitarCampo","tamanio","nombreIdentificacion","lg","on","en","ot","qn","xt","addItem","rt","converDateToUTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getTime","convertDateToUTCByAttribute","converDateToLocal","setHours","getFullYear","convertDateToLocalByAttribute","convertDateToFormatSpecifc","datePipe","xo","fileData","fileMime","mime","Bt","descargarArchivo","id_adjunto_caso","casoId","FileReader","onloadend","getMimeType","height","readAsDataURL","Blob","click","archivo","uo","idOportunidadLinkeada","hayCaso","casoNoDisponible","pidoCasos","pagina","planStatus","accionesHabilitadas","recargarLista","rechazarCaso","aceptarCaso1","storageService","rechazarCaso1","pidoListaArchivos","listaArchivos","CANTIDAD_CASOS_PARA_PEDIR","M","isrejected","casosDetallados","showingCasos","itemsperpage","actualpage","pages","contadorCasos","gotoPage","_o","getCurrentNavigation","extras","abogados","servicio","mostrando","atras","isMobileDevice","userAgent","vendor","substr","ut","_t","fromFileToBase64","onerror","fromBase64ToFile","getTypeFromBase64","atob","ArrayBuffer","Uint8Array","charCodeAt","File","ht","getTimezoneMinutes","getTimezoneOffset","getTimeStamp","now","getTimezoneHours","DatosComponent","fileSrv","currentTimeSrv","extractedUrl","root","children","primary","segments","seleccion","mostrarCorreo","mostrarExplicacionLlamada","mostrarDatos","seleccionAbogado","nombreEspecialidad","mostrarTelefono","mostrarVolver","crearCaso","getOpiniones","llamar","timeStamp","timeZone","countryCode","categoria","id_categoria","detalles","TiposCasoCode","destino","ho","Co","Po","doPaypalVinculado","onPaypalConnection","swInit","links","rel","urlLink","toLocaleLowerCase","onPaypalButton","selVinculacion","_d","an","rn","cn","gn","bo","dn","casoTitulo","casoDesc","especialidadId","guardarUsuario","cacheEspecialidades","doEspecialidadSel","cacheCategorias","fbq","doGuardarUsuario","selArchivos","doSelectFiles","doEliminarFiles","Array","from","Mo","Oo","decodeURI","trackLoginNippyError","decrypt","cdRef","detectChanges","inciarSesion","json","trackLoginNippySuccess","ln","key","iv","padding","mode","send","byteArrayToString","byteLength","stringToByteArray","Uint16Array","Ad","pn","sn","PlanType","wo","guardar","desactivarSubmit","fn","isClick","offsetX","offsetY","CostPlan","CrearComponent","enterClick","disabled","isFormValid","isTituloValid","casoForm","isDetallesValid","isPaisValid","isJurisdiccionValid","isLocalidadValid","isEspecialidadValid","sincronizarCasoConFormulario","valoresForm","especialidadSeleccionada","categoriaSeleccionada","categorias","plans","costPlan","setCost","setDefaultCost","traerAbogados","caso_edit","paisValue","observable","Observable","observer","conteoTitulo","conteoDetalles","cargarJurisdicciones","resp","paisSelected","cargarEspecialidades","contadorTitulo","claseTitulo","contadorDetalles","claseDetalles","eliminar","newFileList","archivoParaBorrar","getValueFromCicloPlanAmountUtfCode","planCiclo","field","defValue","getValueFromCicloPlanAmount","bypassSecurityTrustHtml","paisId","respJurisdiccion","RoleNumber","nombreReemplazado","onEspecialidadChange","updateJurisdiccion","selectedIndex","options","getAttribute","jurisdiccionSeleccionada","localidadSeleccionada","localidadValue","respLocalidad","Mail","Schedule","CallExpress","planAmounts","planAmount","ScheduleMoneda","CallExpressMoneda","OpenDialog","classList","add","PopupDialogComponent","remove","cargarArchivo","toSave","IphoneScrollService","isIos","delay","TIMER","ORIGINAL_CLASS","ms","WITHOUT_HOVER","MSStream","ko","disableScroll","class","iPhoneService","permitirContinuar","masDeUno","isOtros","categoriaUnico","textoEnGridUnica","down","categoriaAnterior","TipoServicioComponent","activatedRoute","file","archivoFinal","Ao","jo","Uo","ct","et","So","cargarMasCasos","paginaCasos","loadCases","clickTab","paginateRightOpen","paginateLeftOpen","paginateRightClosed","paginateLeftClosed","tab","textLabel","Open","Close","asignarClasesEstados","getDaysDiff","floor","fecha","LIMITE_CASOS","hayCasosAbiertos","hayCasosCerrados","LIMITE_TITULO","tituloAlterado","LIMITE_CATEGORIA","casosAbiertos","casosCerrados","crearOBuscar","doDeleteConfirm","DetallesComponent","formatDateService","ngZone","profesionalAsignado","getAbogado","getRol","usuarioActualId","navigationId","idProfesionalAsignado","idCliente","finalizado","perdido","fechaCompletaDate","esCita","fechaCompletaString","formatCulture","culture","getPerfilCliente","seleccionado","hayAbogadosParaElegir","run","Role","abogadosDisponibles","abogadosChequeados","miRol","noSoyAbogado","textoParaCalificar","globalCliente","globalAgobado","resolve","reject","mailCliente","whatsapp","mailAbogado","esLlamada","lista","sePuedeCalificar","EstadoCaso","estadoInvalido","involucradoEnElCaso","Io","To","especialidadAnterior","Eo","mes","A","H","Zt","dias","meses","En","T","j","v","D","fechaIsoString","horarioSeleccionado","horaVisible","fechaOriginal","start","diaEscogido2","valido","verificarAbogados","submit","horaString","convertirHora","getHours","getMinutes","setMonth","textoRespuesta","diasDisponibles","charAt","addEvent","horariosCompletos","todosLosHorarios","usuariosDisponiblesPorHora","formatDate","verificarHorarioDia","calendar","monthView","currentView","_monthLabel","mesPrevio","primerClick","cantidad","verificarAbogadosHorario","usuarios","abogadosIds","verAbogados","ResumenComponent","abogadoId","forkJoin","importe","importeMoneda","mostrarFecha","cacheAgendaPlataformas","cacheLlamadaPlataformas","obsPlataformas","obsVinculaciones","planPlataformas","completarDatos","invitadoId","formatDateBackend","id_abogado","contratarAbogado","doMultipago","externalReference","URLSearchParams","Nt","Ho","super","tituloHeader","mostrarSeleccion","mostrarCita","casoAceptado","PayerID","actualizarCaso","putCaso","kp","mn","Zo","zo","Do","xn","un","_n","hn","Cn","provide","useValue","imports","Pn","intercept","clone","set","handle","bn","Mn","spinnerService","Mt","cargarAbogados","abogadosData","ciudad","provincia","paisNombre","cargoLaLista","sinAbogados","rechazar","aceptar","Bo","Lo","cantidadLegalify","doPlanLoad","getSubTitle","statusCommand","statusPlanId","doPlanNew","doPlanSelect","cantidadEspecialidades","planActivo","formPlan","doSave","doDelete","_s","loadChildren","u","MultipagoModule","On","wn","crearReporte","yn","base64ToBlob","generateExcel","dataService","base64Excel","removeChild","hs","kn","Ct","Dt","vn","Ps","zn","An","bs","jn","Un","Ms","Sn","Zn","In","Tn","bootstrap","useClass","multi","Bc","Yt","loader","useFactory","Cs","deps","Ko","enabled","registrationStrategy","bootstrapModule"],"sourceRoot":"webpack:///","sources":["./src/app/api/api.service.ts","./src/app/auth.guard.ts","./src/app/components/admin/multipago/modules/multipago.service.ts","./src/app/enums/role.ts","./src/app/modules/material.module.ts","./src/app/services/authentication/authentication.service.ts","./src/app/services/logOut/log-out.service.ts","./src/app/services/tokenDecoder/token-decoder.service.ts","./src/environments/environment.ts","./src/app/enums/redesSociales.ts","./src/app/components/login/mensaje-validar/mensaje-validar.component.html","./src/app/components/login/mensaje-validar/mensaje-validar.component.ts","./src/app/components/login/dialog-vincular/dialogvalidar.component.ts","./src/app/components/login/dialog-vincular/dialogvalidar.html","./src/app/components/login/mensaje-reenvio/mensaje-reenvio.component.ts","./src/app/components/login/mensaje-reenvio/mensaje-reenvio.component.html","./src/environments/environment.prod.ts","./src/app/services/login.service.ts","./src/app/components/language-nav/language-nav.component.ts","./src/app/components/language-nav/language-nav.component.html","./src/app/components/login/login.component.ts","./src/app/components/login/login.component.html","./src/app/services/sender.service.ts","./src/app/components/cliente/navbar-cliente/navbar-cliente.component.ts","./src/app/components/cliente/navbar-cliente/navbar-cliente.component.html","./src/app/pipes/secure.pipe.ts","./src/app/components/cliente/perfil/perfil.component.html","./src/app/components/cliente/perfil/perfil.component.ts","./src/app/components/abogado/perfil-abogado/dialog.component.ts","./src/app/components/abogado/perfil-abogado/dialog-content-example-dialog.html","./src/app/components/abogado/perfil-abogado/dialogvincular.component.ts","./src/app/components/abogado/perfil-abogado/dialogvincular-content-example-dialog.html","./src/app/api/pais.ts","./src/app/services/plan/plan-multipago.service.ts","./src/app/components/abogado/plan/popup-facturacion/popup-facturacion.component.ts","./src/app/components/abogado/plan/popup-facturacion/popup-facturacion.component.html","./src/app/services/contadorJurisdicciones/contador-jurisdicciones.service.ts","./src/app/services/plan/plan.service.ts","./src/app/components/abogado/plan/popup-downgrade/popup-downgrade.component.html","./src/app/components/abogado/plan/popup-downgrade/popup-downgrade.component.ts","./src/app/components/abogado/plan/cancelar/cancelar/cancelar.component.html","./src/app/components/abogado/plan/cancelar/cancelar/cancelar.component.ts","./src/app/api/certificacion.ts","./src/app/services/puntuaciones.service.ts","./src/app/services/tiempoSubscripcion/tiempo-subscripcion.service.ts","./src/app/services/agenda/update-ranges.service.ts","./src/app/components/abogado/navbar-abogado/navbar-abogado.component.ts","./src/app/components/abogado/navbar-abogado/navbar-abogado.component.html","./src/app/services/especialidad/especialidad-del-caso.service.ts","./src/app/components/abogado/vista-previa/vista-previa.component.html","./src/app/components/abogado/vista-previa/vista-previa.component.ts","./src/app/components/abogado/opiniones/opiniones.component.html","./src/app/components/abogado/opiniones/opiniones.component.ts","./src/app/components/abogado/plan/popup-baja/popup-baja.component.html","./src/app/components/abogado/plan/popup-baja/popup-baja.component.ts","./src/app/components/abogado/plan/modal/dialog.component.ts","./src/app/components/abogado/plan/detalle/detalle.component.html","./src/app/components/abogado/plan/modal/dialog-content-example-dialog.html","./src/app/components/abogado/plan/detalle/detalle.component.ts","./src/app/components/abogado/plan-en-perfil/plan-en-perfil.component.html","./src/app/components/abogado/plan-en-perfil/plan-en-perfil.component.ts","./src/app/components/abogado/perfil-abogado/perfil-abogado.component.html","./src/app/components/abogado/perfil-abogado/perfil-abogado.component.ts","./src/app/interfaces/NuevaPuntuacion.ts","./src/app/components/calificar/dialog/dialog.component.ts","./src/app/components/calificar/dialog/dialog.component.html","./src/app/components/calificar/calificar.component.html","./src/app/components/calificar/calificar.component.ts","./src/app/components/commons/dialogo/mercadopago/popup-paypal-pago/popup-paypal-pago.component.ts","./src/app/components/commons/dialogo/mercadopago/popup-paypal-pago/popup-paypal-pago.component.html","./src/app/api/user.ts","./src/app/components/abogado/plan/popup-mercadopago-tarjeta/popup-mercadopago-tarjeta.component.ts","./src/app/components/abogado/plan/popup-mercadopago-tarjeta/popup-mercadopago-tarjeta.component.html","./src/app/components/abogado/plan/popup-mercadopago-opciones/popup-mercadopago-opciones.component.ts","./src/app/components/abogado/plan/popup-mercadopago-opciones/popup-mercadopago-opciones.component.html","./src/app/components/abogado/plan/plan.component.html","./src/app/components/abogado/plan/plan.component.ts","./src/app/services/spinner-service/spinner-service.service.ts","./src/app/components/abogado/agregar/agregar.component.html","./src/app/components/abogado/agregar/agregar.component.ts","./src/app/components/mercado/vinculacion/vinculacion.component.html","./src/app/components/mercado/vinculacion/vinculacion.component.ts","./src/app/components/mercado/pago-fallo/pago-fallo.component.ts","./src/app/components/mercado/pago-exitoso/pago-exitoso.component.html","./src/app/components/mercado/pago-fallo/pago-fallo.component.html","./src/app/components/mercado/pago-exitoso/pago-exitoso.component.ts","./src/app/components/mercado/pago-pendiente/pago-pendiente.component.ts","./src/app/components/mercado/pago-pendiente/pago-pendiente.component.html","./src/app/components/admin/navbar-admin/navbar-admin.component.ts","./src/app/components/admin/navbar-admin/navbar-admin.component.html","./src/app/api/matriculaConfig.ts","./src/app/components/admin/paises/paises.component.html","./src/app/components/admin/paises/paises.component.ts","./src/app/services/register/checkPassword/check-password.service.ts","./src/app/components/company/formulario/formulario.component.html","./src/app/components/company/formulario/formulario.component.ts","./src/app/components/company/logo/logo.component.ts","./src/app/components/company/logo/logo.component.html","./src/app/components/admin/entidades/entidades.component.html","./src/app/components/admin/entidades/entidades.component.ts","./src/app/services/sleep/sleep.service.ts","./src/app/components/abogado/plan/exito/exito.component.html","./src/app/components/abogado/plan/exito/exito.component.ts","./src/app/components/terms/terms.component.ts","./src/app/components/terms/terms.component.html","./src/app/api/formulario.ts","./src/app/components/certificacion/formulario/formulario.component.ts","./src/app/components/admin/certificacion/certificacion.component.html","./src/app/components/certificacion/formulario/formulario.component.html","./src/app/components/admin/certificacion/certificacion.component.ts","./src/app/components/sign/sign.component.ts","./src/app/components/sign/sign.component.html","./src/app/components/politicas/politicas.component.ts","./src/app/components/politicas/politicas.component.html","./src/app/app-routing.module.ts","./src/app/app.component.html","./src/app/app.component.ts","./src/app/components/login/restablecer/restablecer.component.ts","./src/app/components/login/restablecer/restablecer.component.html","./src/app/components/login/nueva-formulario/nueva-formulario.component.ts","./src/app/components/login/nueva-formulario/nueva-formulario.component.html","./src/app/services/util.service.ts","./src/app/components/login/redes/redes.component.html","./src/app/components/login/redes/redes.component.ts","./src/app/components/login/bienvenida/bienvenida.component.html","./src/app/components/login/bienvenida/bienvenida.component.ts","./src/app/components/login/login-routing.module.ts","./src/app/components/abogado/registroYMensajesAsociados/creacion-exitosa-abogado/creacion-exitosa-abogado.component.html","./src/app/components/abogado/registroYMensajesAsociados/creacion-exitosa-abogado/creacion-exitosa-abogado.component.ts","./src/app/components/abogado/registroYMensajesAsociados/cuenta-validada-abogado/cuenta-validada-abogado.component.ts","./src/app/components/abogado/registroYMensajesAsociados/registro/registro.component.html","./src/app/components/abogado/registroYMensajesAsociados/cuenta-validada-abogado/cuenta-validada-abogado.component.html","./src/app/components/abogado/registroYMensajesAsociados/registro/registro.component.ts","./src/app/components/abogado/registroYMensajesAsociados/modules/abogadoRegistro-routing.module.ts","./src/app/components/abogado/registroYMensajesAsociados/modules/abogadoRegistro.modules.ts","./src/app/utils/storage/storage.service.ts","./src/app/utils/formatDate/formatDate.service..ts","./src/app/components/commons/dialogo/dialogo-previsualizar/dialogo-previsualizar.component.html","./src/app/components/commons/dialogo/dialogo-previsualizar/dialogo-previsualizar.component.ts","./src/app/components/archivos/archivos.component.html","./src/app/components/archivos/archivos.component.ts","./src/app/components/abogado/casos/oportunidades/oportunidades.component.html","./src/app/components/abogado/casos/oportunidades/oportunidades.component.ts","./src/app/components/abogado/seleccion/previa/previa.component.html","./src/app/components/abogado/seleccion/previa/previa.component.ts","./src/app/enums/TiposCasoCode.ts","./src/app/utils/files.service.ts","./src/app/utils/currentTime/current-time.service.ts","./src/app/components/abogado/seleccion/datos/datos.component.html","./src/app/components/abogado/seleccion/datos/datos.component.ts","./src/app/components/abogado/agregar/mensaje-espera/mensaje-espera.component.ts","./src/app/components/abogado/agregar/mensaje-espera/mensaje-espera.component.html","./src/app/components/abogado/abogado.component.ts","./src/app/components/abogado/vinculaciones/vinculaciones.component.html","./src/app/components/abogado/abogado.component.html","./src/app/components/abogado/vinculaciones/vinculaciones.component.ts","./src/app/components/abogado/modules/abogado-routing.module.ts","./src/app/components/commons/modules/commons.module.ts","./src/app/components/abogado/modules/abogado.modules.ts","./src/app/components/cliente/registroYMensajesAsociados/creacion-exitosa/creacion-exitosa-cliente.component.ts","./src/app/components/cliente/registroYMensajesAsociados/registro-cliente/registro-cliente.component.html","./src/app/components/cliente/registroYMensajesAsociados/creacion-exitosa/creacion-exitosa-cliente.component.html","./src/app/components/cliente/registroYMensajesAsociados/registro-cliente/registro-cliente.component.ts","./src/app/components/cliente/registroYMensajesAsociados/cuenta-validada-cliente/cuenta-validada-cliente.component.ts","./src/app/components/cliente/registroYMensajesAsociados/cuenta-validada-cliente/cuenta-validada-cliente.component.html","./src/app/components/cliente/registroYMensajesAsociados/external/external.component.ts","./src/app/components/cliente/registroYMensajesAsociados/external/external.component.html","./src/app/components/cliente/registroYMensajesAsociados/modules/clienteRegistro-routing.module.ts","./src/app/components/cliente/registroYMensajesAsociados/modules/clienteRegistro.modules.ts","./src/app/components/cliente/casos/nuevo/crear/crear.component.ts","./src/app/components/cliente/casos/nuevo/crear/popup-dialog/popup-dialog.component.html","./src/app/components/cliente/casos/nuevo/crear/popup-dialog/popup-dialog.component.ts","./src/app/utils/enter-click/enter-click.service.ts","./src/app/components/cliente/casos/nuevo/crear/crear.component.html","./src/app/services/iphone-scroll/iphone-scroll.service.ts","./src/app/components/cliente/casos/nuevo/categoria/categoria.component.html","./src/app/components/cliente/casos/nuevo/categoria/categoria.component.ts","./src/app/components/cliente/casos/nuevo/tipo-servicio/tipo-servicio.component.ts","./src/app/components/cliente/casos/nuevo/revisar/revisar.component.html","./src/app/components/cliente/casos/nuevo/tipo-servicio/tipo-servicio.component.html","./src/app/components/cliente/casos/nuevo/revisar/revisar.component.ts","./src/app/components/cliente/casos/nuevo/finalizada/finalizada.component.ts","./src/app/components/cliente/casos/nuevo/finalizada/finalizada.component.html","./src/app/components/commons/dialogo/dialogo-confirmar/dialogo-confirmar.component.ts","./src/app/components/commons/dialogo/dialogo-confirmar/dialogo-confirmar.component.html","./src/app/components/cliente/casos/misCasos/activos/activos.component.ts","./src/app/enums/EstadoCaso.ts","./src/app/components/cliente/casos/misCasos/activos/activos.component.html","./src/app/components/cliente/casos/misCasos/detalles/detalles.component.html","./src/app/components/cliente/casos/misCasos/detalles/detalles.component.ts","./src/app/components/cliente/casos/nuevo/especialidad/dialog-content-example-dialog.html","./src/app/components/cliente/casos/nuevo/especialidad/dialog.component.ts","./src/app/components/cliente/casos/nuevo/especialidad/especialidad.component.html","./src/app/components/cliente/casos/nuevo/especialidad/especialidad.component.ts","./src/app/components/cliente/casos/nuevo/agenda/rango/rango.component.html","./src/app/components/cliente/casos/nuevo/agenda/rango/rango.component.ts","./src/app/components/cliente/casos/nuevo/resumen/resumen.component.html","./src/app/components/cliente/casos/nuevo/resumen/resumen.component.ts","./src/app/components/cliente/casos/nuevo/agenda/agendada/agendada.component.html","./src/app/components/cliente/casos/nuevo/agenda/agendada/agendada.component.ts","./src/app/components/cliente/casos/nuevo/modules/clienteCasosNuevos-routing.module.ts","./src/app/components/cliente/casos/nuevo/modules/clienteCasosNuevos.modules.ts","./src/app/components/cliente/casos/modules/clienteCasosNuevos.modules.ts","./src/app/components/cliente/modules/cliente.modules.ts","./src/app/components/login/login.module.ts","./src/app/interceptors/authorization.interceptor.ts","./src/app/interceptors/error.interceptor.ts","./src/app/interceptors/spinner/spinner.interceptor.ts","./src/app/components/admin/inicio/inicio.component.html","./src/app/components/admin/inicio/inicio.component.ts","./src/app/components/admin/admin.component.ts","./src/app/components/admin/plan/plan-list.component.html","./src/app/components/admin/admin.component.html","./src/app/components/admin/plan/plan-list.component.ts","./src/app/components/admin/inicio/inicio-routing.module.ts","./src/app/services/data/data.service.ts","./src/app/components/admin/datos/datos.component.ts","./src/app/components/admin/datos/datos.component.html","./src/app/components/admin/navbar-admin/navbar-admin-routing.module.ts","./src/app/components/admin/navbar-admin/navbar-admin.module.ts","./src/app/components/admin/inicio/inicio.module.ts","./src/app/components/admin/paises/paises-routing.module.ts","./src/app/components/admin/paises/paises.module.ts","./src/app/components/admin/entidades/entidades-routing.module.ts","./src/app/components/admin/entidades/entidades.module.ts","./src/app/components/admin/certificacion/certificacion-routing.module.ts","./src/app/components/admin/certificacion/certificacion.module.ts","./src/app/components/admin/datos/datos.module.ts","./src/app/app.module.ts","./src/main.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport {\n NewUser,\n RegisterClient,\n ReturnUser,\n Identificacion,\n ResetPassword,\n ResetPasswordRepeat,\n PendienteAbogado,\n Especialidad,\n Jurisdiccion,\n Localidad,\n Categoria,\n Perfil,\n CasoDetallado,\n ListaArchivos,\n PerfilEditar,\n DatosJurisdiccion,\n JurisdiccionEditarVer2,\n MotivoBaja,\n BajaInput,\n RegisterAbogado,\n JurisdiccionEditarVer3,\n} from './user';\nimport { Rango, RangoConId } from './horarios';\nimport { Planes, PlanesIncrease } from './planes';\nimport { environment } from '../../environments/environment';\nimport {\n CuentaMercado,\n Link,\n ContratarAbogado,\n ContratarPlan,\n ContratarPlanYAbogado,\n} from './mercado';\nimport { UsuariosHora, CrearCitaDatos, RangoAgenda } from './agenda';\nimport { NuevaPuntuacion } from '../interfaces/NuevaPuntuacion';\nimport { Puntuacion } from '../interfaces/Puntuacion';\nimport { Pais, PaisConfig } from './pais';\nimport { Provincia } from './Provincia';\nimport { JurisdiccionPaises, JurisdiccionPaisesInput } from './jurisdiccion';\nimport { LocalidadPaises } from './localidad';\nimport { Company } from './company';\nimport { map } from 'rxjs/operators';\nimport { Formulario } from './formulario';\nimport { Pregunta } from './pregunta';\nimport { Certificacion } from './certificacion';\nimport { MatriculaConfig } from './matriculaConfig';\nimport {\n EspecialidadesCliente,\n EspecialidadesAbogado,\n CategoriasAll,\n EspecialidadesLista,\n IPlanAmount,\n ICicloPlanAmount,\n IPlanCicloPlanAmount,\n} from '../components/admin/multipago/modules/multipago.model';\n\n@Injectable({ providedIn: 'root' })\nexport class ApiService {\n especialidades: any[] = [];\n private url = environment.apiUrl + '/';\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n multipartOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'multipart/form-data',\n }),\n };\n constructor(private http: HttpClient) {}\n\n getAbogados(modo: string): Observable {\n return this.http.get(\n this.url + `api/usuario?estado=${modo}`,\n this.httpOptions\n );\n }\n\n getPlanes(): Observable {\n return this.http.get(this.url + 'api/planes', this.httpOptions);\n }\n\n getPlanesAll(): Observable {\n return this.http.get(\n this.url + 'api/planes/all',\n this.httpOptions\n );\n }\n\n doPlanesSave(plan: Planes): Observable {\n let url: string = `${this.url}api/planes`;\n return this.http.post(url, plan, this.httpOptions);\n }\n\n doPlanesDelete(planId: number): Observable {\n let url: string = `${this.url}api/planes/${planId}`;\n return this.http.delete(url, this.httpOptions);\n }\n\n aceptarBajar(estado: string, id: number) {\n return this.http.patch(\n this.url + `api/usuario/${id}`,\n {\n estado: `${estado}`,\n loginUrl: environment.angularUrl,\n },\n this.httpOptions\n );\n }\n\n baja(baja: BajaInput) {\n const formData = new FormData();\n formData.append('id', baja.id.toString());\n formData.append('estado', baja.estado.toString());\n formData.append('motivoBaja', baja.motivoBaja.toString());\n //return this.http.post(this.url + 'api/caso', formData);\n\n return this.http.put(this.url + `api/usuario/baja`, formData);\n }\n\n solicitarReenvioConfirmacion(mail: string) {\n const formData = new FormData();\n formData.append('mail', mail);\n\n return this.http.post(\n this.url + `cuenta/requestResendConfirmation`,\n formData\n );\n }\n\n registrarCliente(registerClient: RegisterClient): Observable {\n return this.http.post(\n this.url + 'cuenta',\n registerClient,\n this.httpOptions\n );\n }\n\n registrarClienteWithFiles(registerClient: RegisterClient, files: File[]): Observable {\n let data = new FormData();\n\n data.append(\"data\", JSON.stringify(registerClient));\n if (files) {\n files.forEach(file => {\n data.append(\"files\", file);\n });\n }\n return this.http.post(\n this.url + 'cuenta/files',\n data\n );\n }\n\n registrarAbogado(\n registerClient: RegisterAbogado\n ): Observable {\n return this.http.post(\n this.url + 'cuenta',\n registerClient,\n this.httpOptions\n );\n }\n\n certification(registerClient: Certificacion): Observable {\n return this.http.post(\n this.url + 'signature',\n registerClient,\n this.httpOptions\n );\n }\n\n getcertification(mail): Observable {\n const formData = new FormData();\n formData.append('mail', mail);\n return this.http.post(this.url + 'signature/certification', formData);\n }\n\n postUser(newUser: NewUser): Observable {\n return this.http.post(\n this.url + 'cuenta/login',\n newUser,\n this.httpOptions\n );\n }\n\n LoginUserNippy(dato: any) {\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n return this.http.post(this.url + 'cuenta/login/entity', dato, httpOpt);\n }\n\n postUserNippy(dato: any) {\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n return this.http.post(this.url + 'cuenta/user/entity', dato, httpOpt);\n }\n\n getIdentificacion(): Observable {\n return this.http.get(\n this.url + 'tiposidentificacion',\n this.httpOptions\n );\n }\n\n confirmarUsuario(token: string): Observable {\n return this.http.put(\n this.url + `cuenta?token=${token}`,\n token,\n this.httpOptions\n );\n }\n\n tutorialCompleto(): Observable {\n return this.http.put(\n this.url + 'api/usuario/tutorialCompletado',\n this.httpOptions\n );\n }\n\n requestChangePassword(\n resetPassword: ResetPassword\n ): Observable {\n return this.http.patch(\n this.url + 'cuenta',\n resetPassword,\n this.httpOptions\n );\n }\n\n getRequest(id: number): Observable {\n return this.http.get(\n this.url + `cuenta/requestChangePassword/${id}`,\n this.httpOptions\n );\n }\n\n setNewPass(resetPasswordRepeat: ResetPasswordRepeat): Observable {\n return this.http.patch(\n this.url + 'cuenta/requestChangePassword',\n resetPasswordRepeat,\n this.httpOptions\n );\n }\n\n /* Casos y datos */\n\n getPlanInfos(jurisdiccionId: number, planIds: number[]): Observable {\n return new Observable(observer => {\n let url = `${this.url}multipago/cliente/plan/defaultamounts`;\n let params = {\n ciclo: -1,\n jurisdiccionId,\n planIds\n }\n let options = Object.assign({params}, this.httpOptions);\n let data: IPlanCicloPlanAmount = {};\n let ciclo: ICicloPlanAmount;\n\n this.http.get(url, options).subscribe({\n next: (planAmounts: IPlanAmount[]) => {\n planAmounts.forEach((planAmount: IPlanAmount) => {\n if (!data[planAmount.planId])\n data[planAmount.planId] = {};\n\n ciclo = data[planAmount.planId];\n ciclo[planAmount.ciclo] = planAmount;\n });\n observer.next(data);\n },\n complete: () => {\n observer.complete();\n }\n });\n });\n }\n\n getEspecialidades(rol: number): Observable {\n return this.http.get(\n this.url + `especialidad/${rol}`,\n this.httpOptions\n );\n }\n\n getEspecialidadesByPais(rol: number, countryId: number): Observable {\n let url = `${this.url}especialidad/${rol}`;\n let params = {\n countryId\n };\n let options = Object.assign({ params }, this.httpOptions);\n\n return this.http.get(url, options);\n }\n\n getMotivosBaja(): Observable {\n return this.http.get(\n this.url + `api/usuario/motivosbaja`,\n this.httpOptions\n );\n }\n\n getJurisdicciones(): Observable {\n return this.http.get(\n this.url + 'jurisdiccion',\n this.httpOptions\n );\n }\n\n getJurisdiccionByLocalidadId(localidadId: number): Observable {\n let url = `${this.url}jurisdiccion/byLocalidad/${localidadId}`;\n return this.http.get(url, this.httpOptions);\n }\n\n getLocalidades(id: number): Observable {\n return this.http.get(\n this.url + `jurisdiccion/${id}/localidad`,\n this.httpOptions\n );\n }\n\n getCategorias(id: number): Observable {\n return this.http.get(\n this.url + `especialidad/${id}/categorias`,\n this.httpOptions\n );\n }\n\n getCategoriasByPais(id: number, countryId: number): Observable {\n let url = `${this.url}especialidad/${id}/categorias`;\n let params = {\n countryId\n };\n let options = Object.assign({ params }, this.httpOptions);\n\n return this.http.get(url, options);\n }\n\n postCaso(\n categoriaId,\n descripcion,\n files,\n localidadId,\n titulo,\n profesionalAsignadoId,\n tipo,\n timeStamp,\n timeZone\n ) {\n let data = {\n categoriaId: categoriaId,\n descripcion: descripcion,\n localidadId: localidadId,\n tipo: tipo,\n titulo: titulo,\n profesionalAsignadoId: profesionalAsignadoId,\n fechaCreacion: timeStamp,\n zonaHoraria: timeZone,\n files: files,\n };\n\n return this.http.post(this.url + 'api/caso', data);\n }\n\n getPaises(): Observable {\n console.log(this.httpOptions);\n return this.http.get(this.url + 'pais', this.httpOptions);\n }\n\n getPaisesClean(): Observable {\n console.log('getPaisesClean()');\n return this.getPaises().pipe(\n map((resp: Pais[]) => {\n let result: Pais[] = [];\n\n resp = resp ?? [];\n resp.forEach((pais: Pais) => {\n if (pais && pais.countryId > 0) result.push(pais);\n });\n return result;\n })\n );\n }\n\n getFormulario(id): Observable {\n console.log(this.httpOptions);\n return this.http.get(\n this.url + 'formulario/' + id,\n this.httpOptions\n );\n }\n\n postFormulario(form: Formulario) {\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n return this.http.post(\n this.url + 'api/formulario',\n JSON.stringify(form),\n httpOpt\n );\n }\n\n putPregunta(preg: Pregunta) {\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n\n const formData = new FormData();\n formData.append('pregunta', preg.pregunta);\n formData.append('peso', preg.peso.toString());\n formData.append('respuesta', preg.respuesta.toString());\n formData.append('idformulario', preg.formulario.id_formulario.toString());\n\n return this.http.post(this.url + 'formulario/addpregunta', formData);\n }\n\n updPregunta(preg: Pregunta) {\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n return this.http.put(\n this.url + 'formulario/updpregunta',\n JSON.stringify(preg),\n httpOpt\n );\n }\n\n postCompany(company: Company) {\n const formData = new FormData();\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n return this.http.post(\n this.url + 'api/company/create',\n JSON.stringify(company),\n httpOpt\n );\n }\n\n putCompany(company: Company) {\n const formData = new FormData();\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n return this.http.put(\n this.url + 'api/company/edit',\n JSON.stringify(company),\n httpOpt\n );\n }\n\n putCompanyLogo(company: Company, file): Observable {\n let url: string = `${this.url}api/company/${company.idCompany}/logo`;\n const formData = new FormData();\n formData.append('file', file);\n\n return this.http.put(url, formData);\n }\n\n getCompanies(): Observable {\n console.log(this.httpOptions);\n return this.http.get(\n this.url + 'api/company/all',\n this.httpOptions\n );\n }\n\n getPais(countryId: number): Observable {\n return this.http.get(\n this.url + `pais/${countryId}`,\n this.httpOptions\n );\n }\n\n postPais(pais: Pais) {\n const formData = new FormData();\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n return this.http.post(\n this.url + 'pais',\n JSON.stringify(pais),\n httpOpt\n );\n }\n\n postJurisdicciones(jurisdicciones: JurisdiccionPaises[]) {\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n return this.http.post(\n this.url + 'jurisdiccion/bulk',\n '[' + jurisdicciones.toString() + ']',\n httpOpt\n );\n }\n\n postLocalidades(localidades: LocalidadPaises[]) {\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n return this.http.post(\n this.url + 'jurisdiccion/localidad/bulk',\n '[' + localidades.toString() + ']',\n httpOpt\n );\n }\n\n getJurisdiccionPaises(\n countryId: number\n ): Observable {\n return this.http.get(\n this.url + `jurisdiccion/country/${countryId}`,\n this.httpOptions\n );\n }\n\n getJurisdiccionPaisesBy(countryId: number): Observable {\n return this.getJurisdiccionPaises(countryId).pipe(\n map((input: JurisdiccionPaisesInput[]) => {\n let result: Jurisdiccion[] = [];\n\n input = input ?? [];\n input.forEach((row: JurisdiccionPaisesInput) => {\n result.push(row);\n });\n return result;\n })\n );\n }\n\n getJurisdiccionPaisesAuto(): Observable {\n let userRet = JSON.parse(localStorage.getItem('user'));\n let paisId = userRet.pais;\n if (paisId == 'ARG') paisId = '54';\n\n return this.getJurisdiccionPaisesBy(0 + paisId);\n }\n\n getSessionCountryIdByLocalStorage(): number {\n let userRet = JSON.parse(localStorage.getItem('user'));\n let paisId: string = userRet.pais;\n if (paisId == 'ARG') paisId = '54';\n\n return Number.parseInt(paisId);\n }\n\n // postJurisdiccionPais(jurisdiccionId, descripcion, name, countryId) {\n // const formData = new FormData();\n // formData.append('jurisdiccionId', jurisdiccionId),\n // formData.append('descripcion', descripcion),\n // formData.append('name', name),\n // formData.append('countryId', countryId);\n\n // return this.http.post(this.url + 'jurisdiccion', formData);\n // }\n\n postJurisdiccionPais(jurisdiccion: JurisdiccionPaises) {\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n return this.http.post(\n this.url + 'jurisdiccion',\n JSON.stringify(jurisdiccion),\n httpOpt\n );\n }\n\n getJurisdiccionPaisAdmin(paisId: number): Observable {\n let url = `${this.url}jurisdiccion/country/admin/${paisId}`;\n return this.http.get(url, this.httpOptions);\n }\n\n getMatriculaConfig(paisId: number): Observable {\n let url = `${this.url}pais/getMatriculaConfig/${paisId}`;\n return this.http.get(url, this.httpOptions);\n }\n\n postMatriculaConfig(matriculaConfig: MatriculaConfig) {\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n return this.http.post(\n this.url + 'pais/addMatriculaConfig',\n JSON.stringify(matriculaConfig),\n httpOpt\n );\n }\n\n putMatriculaConfig(matriculaConfig: MatriculaConfig) {\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n return this.http.put(\n this.url + 'pais/updMatriculaConfig',\n JSON.stringify(matriculaConfig),\n httpOpt\n );\n }\n\n getPaisConfig(countryId: number, clave: string): Observable {\n let url: string = `${this.url}pais/${countryId}/config/${clave}`;\n\n return this.http.get(url);\n }\n\n doPaisConfigSave(\n countryId: number,\n paisConfig: PaisConfig\n ): Observable {\n let url: string = `${this.url}pais/${countryId}/config`;\n\n return this.http.post(url, paisConfig);\n }\n\n setJurisdiccionPaisAdminPut(paisId: number): Observable {\n let url = `${this.url}jurisdiccion/country/admin/${paisId}`;\n return this.http.put(url, this.httpOptions);\n }\n\n setJurisdiccionPaisAdminDel(paisId: number): Observable {\n let url = `${this.url}jurisdiccion/country/admin/${paisId}`;\n return this.http.delete(url, this.httpOptions);\n }\n\n getLocalidadPaises(jurisdiccionId: number): Observable {\n return this.http.get(\n this.url + `jurisdiccion/${jurisdiccionId}/localidad`,\n this.httpOptions\n );\n }\n\n postLocalidadPais(localidad: LocalidadPaises, jurisdiccionId: number) {\n const httpOpt = {\n headers: new HttpHeaders({ 'content-type': 'application/json' }),\n };\n return this.http.post(\n this.url + `jurisdiccion/${jurisdiccionId}/localidad`,\n JSON.stringify(localidad),\n httpOpt\n );\n }\n\n getProvincias(countryId: number): Observable {\n return this.http.get(\n this.url + `provincia/${countryId}`,\n this.httpOptions\n );\n }\n\n postProvincia(stateId, name, countryId) {\n const formData = new FormData();\n formData.append('stateId', stateId);\n formData.append('name', name);\n formData.append('countryId', countryId);\n\n return this.http.post(this.url + 'provincia', formData);\n }\n\n postCasoTmpUpload(files) {\n const formData = new FormData();\n if (files && files.length > 0) {\n files.forEach((file) => {\n formData.append('files', file);\n });\n }\n\n const multipartOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'multipart/form-data',\n }),\n };\n\n return this.http.post(this.url + 'api/caso/tempUpload', formData);\n }\n\n postCasoAgenda(\n categoriaId,\n descripcion,\n files,\n localidadId,\n titulo,\n profesionalAsignadoId,\n tipo,\n citaId,\n timeStamp,\n timeZone\n ) {\n let data = {\n categoriaId: categoriaId,\n descripcion: descripcion,\n localidadId: localidadId,\n titulo: titulo,\n profesionalAsignadoId: profesionalAsignadoId,\n tipo: tipo,\n citaId: citaId,\n fechaCreacion: timeStamp,\n zonaHoraria: timeZone,\n files: files,\n };\n\n return this.http.post(this.url + 'api/caso', data);\n }\n\n putCasoAgenda(\n casoId,\n categoriaId,\n descripcion,\n files,\n localidadId,\n titulo,\n profesionalAsignadoId,\n tipo,\n citaId,\n timeStamp,\n timeZone\n ) {\n let data = {\n id_caso: casoId,\n categoriaId: categoriaId,\n descripcion: descripcion,\n localidadId: localidadId,\n titulo: titulo,\n profesionalAsignadoId: profesionalAsignadoId,\n tipo: tipo,\n citaId: citaId,\n fechaCreacion: timeStamp,\n zonaHoraria: timeZone,\n files: files,\n };\n\n return this.http.put(this.url + 'api/caso', data);\n }\n\n postCasoMail(\n categoriaId,\n descripcion,\n files,\n localidadId,\n titulo,\n tipo,\n timeStamp,\n timeZone\n ) {\n let data = {\n categoriaId: categoriaId,\n descripcion: descripcion,\n localidadId: localidadId,\n tipo: tipo,\n titulo: titulo,\n fechaCreacion: timeStamp,\n zonaHoraria: timeZone,\n files: files,\n };\n\n return this.http.post(this.url + 'api/caso', data);\n }\n\n putCasoMail(\n casoId,\n categoriaId,\n descripcion,\n files,\n localidadId,\n titulo,\n tipo,\n timeStamp,\n timeZone\n ) {\n let data = {\n id_caso: casoId,\n categoriaId: categoriaId,\n descripcion: descripcion,\n localidadId: localidadId,\n tipo: tipo,\n titulo: titulo,\n fechaCreacion: timeStamp,\n zonaHoraria: timeZone,\n files: files,\n };\n\n return this.http.put(this.url + 'api/caso', data);\n }\n\n getPerfil(): Observable {\n return this.http.get(\n this.url + 'api/usuario/miPerfil',\n this.httpOptions\n );\n }\n getPerfilUsuario(id): Observable {\n return this.http.get(\n this.url + `api/usuario/perfilUsuario?idUsuario=${id}`,\n this.httpOptions\n );\n }\n\n getCasos(\n pagina: number,\n estado: string,\n maximoPorPagina: number\n ): Observable {\n return this.http.get(\n this.url +\n `api/caso/${estado}/MisCasos?pagina=${pagina}&maximoPorPagina=${maximoPorPagina}`,\n this.httpOptions\n );\n }\n\n getAbogadosDisponibles(idCaso: number): Observable {\n return this.http.get(\n this.url + `api/caso/getAbogadosCaso?idCaso=${idCaso}`,\n this.httpOptions\n );\n }\n\n getOportunidades(\n pagina: number,\n maximoPorPagina: number\n ): Observable {\n return this.http.get(\n this.url +\n `api/caso/misOportunidades?pagina=${pagina}&maximoPorPagina=${maximoPorPagina}`,\n this.httpOptions\n );\n }\n\n editarPerfil(usuarioInput: any): Observable {\n return this.http.patch(\n this.url + 'api/usuario/edit',\n usuarioInput,\n this.httpOptions\n );\n }\n\n cambiarLenguaje(usuarioInput: any): Observable {\n const formData = new FormData();\n formData.append('mail', usuarioInput.mail.toString());\n formData.append('lenguaje', usuarioInput.lenguage.toString());\n return this.http.put(this.url + 'api/usuario/lenguaje', formData);\n }\n\n getAbogadoCaso(idCaso: number): Observable {\n return this.http.get(\n this.url + `api/caso/getAbogadoAsignado?idCaso=${idCaso}`,\n this.httpOptions\n );\n }\n\n aceptarAbogado(idAbogado: number, idCaso: number): Observable {\n return this.http.put(\n this.url +\n `api/caso/aceptarAbogado?idAbogado=${idAbogado}&idCaso=${idCaso}`,\n this.httpOptions\n );\n }\n\n aceptarCaso(id_caso: number): Observable {\n return this.http.put(\n this.url + `api/caso/aceptarOportunidad?idCaso=${id_caso}`,\n this.httpOptions\n );\n }\n\n borrarCaso(id_caso: number): Observable {\n return this.http.delete(\n this.url + `api/caso/deletecaso/${id_caso}`,\n this.httpOptions\n );\n }\n\n postFiles(formData): Observable {\n return this.http.post(this.url + '', formData, this.httpOptions);\n }\n\n getFiles(id_caso: number): Observable {\n return this.http.get(\n this.url + `api/caso/${id_caso}/documentos`\n );\n }\n\n patchAvatar(files): Observable {\n const formData = new FormData();\n if (files && files.length > 0) {\n files.forEach((file) => {\n formData.append('file', file);\n });\n }\n const multipartOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'multipart/form-data',\n }),\n };\n return this.http.patch(this.url + 'api/usuario/avatar', formData);\n }\n\n getAvatar(fileId: number): Observable {\n return this.http.get(this.url + `'api/usuario/avatar'/${fileId}`);\n }\n\n downloadDoc(fileId: number, casoId: number): Observable {\n return this.http.get(\n this.url + `api/caso/documento?casoId=${casoId}&fileId=${fileId}`,\n { responseType: 'blob' as 'json' }\n );\n }\n\n //llamada express\n\n getHorariosLlamada(): Observable {\n return this.http.get(\n this.url + 'api/horariollamada',\n this.httpOptions\n );\n }\n\n postHorario(horario: Rango): Observable {\n return this.http.post(\n this.url + 'api/horariollamada',\n horario,\n this.httpOptions\n );\n }\n\n modificarHorario(horario: Rango, rangoHorarioId: number): Observable {\n return this.http.patch(\n this.url + `api/horariollamada/${rangoHorarioId}`,\n horario,\n this.httpOptions\n );\n }\n\n createPuntuacion(puntuacion: NuevaPuntuacion): Observable {\n return this.http.post(\n this.url + `api/puntuacion`,\n puntuacion,\n this.httpOptions\n );\n }\n getPuntuacion(usuarioId?: number): Observable> {\n return this.http.get>(\n this.url +\n `api/puntuacion/getPuntuacion${\n usuarioId ? `?idAbogado=${usuarioId}` : ''\n }`,\n this.httpOptions\n );\n }\n\n getAbogadosDisponiblesLlamada(\n especialidadId: number,\n horaActual: number,\n localidadId: number\n ) {\n return this.http.get(\n this.url +\n `api/usuario/abogado/llamadaexpress?especialidadId=${especialidadId}&horaActual=${horaActual}&localidadId=${localidadId}`,\n this.httpOptions\n );\n }\n\n deleteHorario(rangoHorarioId: number) {\n return this.http.delete(\n this.url + `api/horariollamada/${rangoHorarioId}`,\n this.httpOptions\n );\n }\n\n //Mercado pago\n getCuenta(): Observable {\n return this.http.get(\n this.url + 'api/cuentas',\n this.httpOptions\n );\n }\n\n doCuentaNotificacionSuscribir(data): Observable {\n let url: string = `${this.url}api/cuentas/notificacion/suscribir`;\n\n return this.http.post(url, data);\n }\n\n postPago(linkPagoInput: ContratarPlanYAbogado): Observable {\n linkPagoInput.mpCallbackFailure\n ? linkPagoInput.mpCallbackFailure\n : 'pago/fallo';\n linkPagoInput.mpCallbackSuccess\n ? linkPagoInput.mpCallbackSuccess\n : 'pago/exito';\n linkPagoInput.mpCallbackPending\n ? linkPagoInput.mpCallbackPending\n : 'pago/pendiente';\n return this.http.post(\n this.url + 'api/cuentas/linkDePago',\n linkPagoInput,\n this.httpOptions\n );\n }\n\n postPagoContratarPlan(linkPagoInput: ContratarPlan): Observable {\n linkPagoInput.mpCallbackFailure\n ? linkPagoInput.mpCallbackFailure\n : 'pago/fallo';\n linkPagoInput.mpCallbackSuccess\n ? linkPagoInput.mpCallbackSuccess\n : 'pago/exito';\n linkPagoInput.mpCallbackPending\n ? linkPagoInput.mpCallbackPending\n : 'pago/pendiente';\n return this.http.post(\n this.url + 'api/cuentas/linkDePago',\n linkPagoInput,\n this.httpOptions\n );\n }\n\n postPagoContratarAbogado(\n linkPagoInput: ContratarAbogado\n ): Observable {\n linkPagoInput.mpCallbackFailure\n ? linkPagoInput.mpCallbackFailure\n : 'pago/fallo';\n linkPagoInput.mpCallbackSuccess\n ? linkPagoInput.mpCallbackSuccess\n : 'pago/exito';\n linkPagoInput.mpCallbackPending\n ? linkPagoInput.mpCallbackPending\n : 'pago/pendiente';\n return this.http.post(\n this.url + 'api/cuentas/linkDePago',\n linkPagoInput,\n this.httpOptions\n );\n }\n\n doSuscripcionNewCheck(plataformaNombre: string, suscripcionUuid: string) {\n let url: string = `${this.url}api/multipago/abogado/suscripcion/${plataformaNombre}/${suscripcionUuid}`;\n\n return this.http.post(url, null, this.httpOptions);\n }\n\n getResultado(externalReference: string): Observable {\n return this.http.get(\n this.url + `api/cuentas/validarPagoStatus?idUsuario=${externalReference}`,\n this.httpOptions\n );\n }\n\n editarDatosProfesionales(especialidadId: number[]): Observable {\n return this.http.patch(\n this.url + 'api/usuario/edit/datosProfesionales',\n { especialidadesIds: especialidadId },\n this.httpOptions\n );\n }\n\n editarJurisdiccion(\n nuevaJurisdiccion: JurisdiccionEditarVer2\n ): Observable {\n return this.http.patch(\n this.url + 'api/usuario/edit/jurisdiccion',\n nuevaJurisdiccion,\n this.httpOptions\n );\n }\n\n editarJurisdiccionv2(\n nuevaJurisdiccion: JurisdiccionEditarVer3\n ): Observable {\n return this.http.patch(\n this.url + 'api/usuario/edit/jurisdiccion',\n nuevaJurisdiccion,\n this.httpOptions\n );\n }\n\n agregarJurisdiccion(nuevaJurisdiccion: DatosJurisdiccion): Observable {\n return this.http.patch(\n this.url + 'api/usuario/edit/jurisdiccion',\n nuevaJurisdiccion,\n this.httpOptions\n );\n }\n\n putLinkAsociacion(code: string): Observable {\n return this.http.put(\n this.url + `api/cuentas/asociarAbogadoMercadoPago?code=${code}`,\n this.httpOptions\n );\n }\n\n putLinkAsociacionPaypal(code: string): Observable {\n return this.http.put(\n this.url + `api/cuentas/asociarPaypalMerchantId?merchantId=${code}`,\n this.httpOptions\n );\n }\n\n //Agenda\n\n getAgendaDisponibles(\n fechaInicio: string,\n fechaFin: string,\n tagEspecialidad: string,\n tagLocalidad: string\n ): Observable {\n return this.http.get(\n this.url +\n `api/agenda/dia?fechaInicio=${fechaInicio}&fechaFin=${fechaFin}&tags=${tagLocalidad}&tags=${tagEspecialidad}`,\n this.httpOptions\n );\n }\n\n getAgendaDias(\n fechaInicio: string,\n fechaFin: string,\n idEspecialidad: number,\n tagLocalidad: string\n ): Observable {\n return this.http.get(\n this.url +\n `api/agenda?fechaInicio=${fechaInicio}&fechaFin=${fechaFin}&tags=${tagLocalidad}`,\n this.httpOptions\n );\n }\n\n /*29/03\n getAgendaDias(\n fechaInicio: string,\n fechaFin: string,\n tagEspecialidad: string,\n tagLocalidad: string\n ): Observable {\n return this.http.get(\n this.url +\n `api/agenda?fechaInicio=${fechaInicio}&fechaFin=${fechaFin}&tags=${tagLocalidad}&tags=${tagEspecialidad}`,\n this.httpOptions\n );\n }\n\n */\n\n agendarCita(datos: CrearCitaDatos): Observable {\n return this.http.post(\n this.url + 'api/agenda',\n datos,\n this.httpOptions\n );\n }\n\n guardarRangoCitas(datos: RangoAgenda): Observable {\n return this.http.post(\n this.url + 'api/agenda/rango',\n datos,\n this.httpOptions\n );\n }\n\n removeRange(rangeId: number): Observable {\n return this.http.delete(\n this.url + `api/agenda/rangos/${rangeId}`,\n this.httpOptions\n );\n }\n\n getRanges(usuarioId: number): Observable {\n return this.http.get(\n this.url + `api/agenda/rangos?usuarioId=${usuarioId}&applicationId=1`,\n this.httpOptions\n );\n }\n\n getAbogadosDisponiblesAgenda(listaIds: string) {\n return this.http.get(\n this.url + `api/usuario/bulk?${listaIds}`,\n this.httpOptions\n );\n }\n\n getTags(usuarioId: number): Observable {\n return this.http.get(\n this.url + `api/agenda/usuario/${usuarioId}/tags`,\n this.httpOptions\n );\n }\n\n patchRangos(usuarioId: number, tags: string[]): Observable {\n return this.http.patch(\n this.url + `api/agenda/rangos/?usuarioId=${usuarioId}&${tags}`,\n this.httpOptions\n );\n }\n\n getEspecialidadesCliente(): Observable {\n return this.http.get(\n this.url + 'api/admin/especialidades/clientes',\n this.httpOptions\n );\n }\n\n getEspecialidadesAbogados(): Observable {\n return this.http.get(\n this.url + 'api/admin/especialidades/abogados',\n this.httpOptions\n );\n }\n\n getCategoriasAll(): Observable {\n return this.http.get<[]>(\n this.url + 'api/admin/especialidades/categorias',\n this.httpOptions\n );\n }\n\n getEspecialidadesLista(): Observable {\n return this.http.get(\n this.url + 'api/admin/especialidades/',\n this.httpOptions\n );\n }\n\n getEspecialidadesListaById(planillaId: number): Observable {\n return this.http.get(\n `${this.url}api/admin/especialidades/${planillaId}`,\n this.httpOptions\n );\n }\n\n delRegistroTabla(id: number): Observable {\n const url = `${this.url}api/admin/especialidades/${id}`;\n return this.http.delete(url, this.httpOptions);\n }\n\n postEspecialidades(data: any): Observable {\n const url = `${this.url}api/admin/especialidades`;\n return this.http.post(url, data);\n }\n\n addEspecialidad(especialidad: any): void {\n this.especialidades.push(especialidad);\n }\n\n getLinkAsociacion(): Observable {\n return this.http.get(\n this.url + 'api/cuentas/mercadoPagoAsociacionUrl',\n this.httpOptions\n );\n }\n\n getCasoById(id): Observable {\n return this.http.get(\n `${this.url}api/caso/${id}`,\n this.httpOptions\n );\n }\n\n getCountry(): Observable {\n return this.http.get('http://ip-api.com/json', this.httpOptions);\n }\n\n private getHttpOptions() {\n var tk = '';\n if (window.localStorage['token'] != undefined) {\n tk = window.localStorage['token'];\n }\n var httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n Authorization: tk,\n 'Access-Control-Allow-Headers': 'Content-Type, Authorization',\n }),\n };\n console.log('httpOptions :' + httpOptions);\n return httpOptions;\n }\n\n private handleError(operation = 'operation', result?: T) {\n return (error: any): Observable => {\n console.error(error);\n return of(result as T);\n };\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanLoad, Route, UrlSegment, UrlTree } from '@angular/router';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { AuthenticationService } from './services/authentication/authentication.service';\nimport { LogOutService } from './services/logOut/log-out.service';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthGuard implements CanActivate, CanLoad {\n constructor(\n private _snackBar: MatSnackBar,\n private router: Router,\n private authenticationService: AuthenticationService,\n private logOut: LogOutService,\n ) { }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, \"\", { duration: 5000 });\n }\n \n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n const user = this.authenticationService.getRole;\n\n \n if (user) {\n if (route.data.roles != user) {\n this.openSnackBar(\"No es posible ingresar a esta página con tu rol\");\n this.logOut.limpiarStorage();\n this.router.navigate(['/']);\n return false;\n }\n return true;\n }\n\n this.logOut.limpiarStorage();\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\n return false;\n }\n\n canLoad(route: Route, segments: UrlSegment[]): boolean | UrlTree | Observable | Promise {\n const user = this.authenticationService.getRole;\n\n if (user) {\n if (route.data.roles != user) {\n this.openSnackBar(\"No es posible ingresar a esta página con tu rol\");\n this.logOut.limpiarStorage();\n this.router.navigate(['/']);\n return false;\n } else {\n return true;\n }\n }\n\n this.logOut.limpiarStorage();\n this.router.navigate(['/login']);\n return false;\n }\n\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { environment } from 'src/environments/environment';\nimport {\n Moneda,\n PlanMoneda,\n PlanPais,\n PlanPlataforma,\n Plataforma,\n PlataformaMoneda,\n Suscripcion,\n EspecialidadesCliente,\n} from './multipago.model';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MultipagoService {\n private url = environment.apiUrl + '/api/multipago';\n\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n constructor(private http: HttpClient) {}\n\n getPlanPaises(): Observable {\n return this.http.get(this.url + '/plan/pais', this.httpOptions);\n }\n\n getPlanPaisesEnabled(): Observable {\n return this.http.get(\n this.url + '/plan/pais/enabled',\n this.httpOptions\n );\n }\n\n doPlanPaisesSave(planPais: PlanPais): Observable {\n return this.http.post(\n `${this.url}/plan/pais`,\n planPais,\n this.httpOptions\n );\n }\n\n doPlanPaisesDel(planCountryId: number): Observable {\n planCountryId = planCountryId ? planCountryId : 0;\n return this.http.delete(\n `${this.url}/plan/pais/${planCountryId}`,\n this.httpOptions\n );\n }\n\n getPlanMonedas(): Observable {\n return this.http\n .get(this.url + '/plan/moneda', this.httpOptions)\n .pipe(\n map((planMonedas: PlanMoneda[]) => {\n planMonedas.forEach((planMoneda: PlanMoneda) => {\n if (!planMoneda.monto) planMoneda.monto = 0.0;\n if (!planMoneda.montoAnual) planMoneda.montoAnual = 0.0;\n });\n return planMonedas;\n })\n );\n }\n\n getPlanMonedasEnabled(): Observable {\n return this.http.get(\n this.url + '/plan/moneda/enabled',\n this.httpOptions\n );\n }\n\n getPlanMonedasByCountryUser(): Observable {\n return this.http.get(\n this.url + '/plan/moneda/byCountry',\n this.httpOptions\n );\n }\n\n getMonedasDisp(planId: number, countryId: number): Observable {\n countryId = countryId ? countryId : 0;\n planId = planId ? planId : 0;\n return this.http.get(\n `${this.url}/plan/moneda/monedasDisp?countryId=${countryId}&planId=${planId}`,\n this.httpOptions\n );\n }\n\n doPlanMonedaSave(planMoneda: PlanMoneda): Observable {\n return this.http.post(\n `${this.url}/plan/moneda`,\n planMoneda,\n this.httpOptions\n );\n }\n\n doPlanMonedaDel(planMonedaId: number): Observable {\n planMonedaId = planMonedaId ? planMonedaId : 0;\n return this.http.delete(\n `${this.url}/plan/moneda/${planMonedaId}`,\n this.httpOptions\n );\n }\n\n getPlataformas(): Observable {\n return this.http.get(\n this.url + '/plataforma',\n this.httpOptions\n );\n }\n\n getPlataformaMonedas(): Observable {\n return this.http.get(\n this.url + '/plataforma/moneda',\n this.httpOptions\n );\n }\n\n getSuscripcionEstados(): Observable {\n let url = `${this.url}/suscripcion/estados`;\n return this.http.get(url, this.httpOptions);\n }\n\n getSuscripciones(\n pageIndex?: number,\n pageSize?: number,\n countryId?: number,\n plataformaId?: number\n ): Observable {\n let url = `${this.url}/suscripcion/all?pageIndex=${pageIndex}&pageSize=${pageSize}`;\n if (countryId != null) {\n url += `&countryId=${countryId}`;\n }\n return this.http.get(url, this.httpOptions);\n }\n\n getSuscripcionesByUser(usuario: string): Observable {\n const url = `${this.url}/suscripcion/all?usuario=${usuario}`;\n return this.http.get(url);\n }\n\n getSuscripcionFilter(\n countryId: number,\n plataformaId: number = 0,\n filterUsuario: string,\n filterEstados: string[]\n ): Observable {\n let params: any = {};\n if (plataformaId) {\n params.plataformaId = plataformaId;\n }\n params.usuario = filterUsuario ?? '';\n params.estados = filterEstados;\n let httpOptions = Object.assign({}, this.httpOptions, { params });\n\n let url = `${this.url}/suscripcion/all?pageSize=100&countryId=${countryId}`;\n if (plataformaId) {\n url += `&platformId=${plataformaId}`;\n }\n\n return this.http.get(url, httpOptions);\n }\n\n getMonedas(): Observable {\n return this.http.get(\n this.url + '/plataforma/moneda/all',\n this.httpOptions\n );\n }\n\n getPlataformaDispMonedas(\n plataformaId: number,\n countryId: number\n ): Observable {\n return this.http.get(\n this.url +\n `/plataforma/moneda/monedasDisp?countryId=${countryId}&plataformaId=${plataformaId}`,\n this.httpOptions\n );\n }\n\n doPlataformaMonedaSave(\n plataformaMoneda: PlataformaMoneda\n ): Observable {\n return this.http.post(\n `${this.url}/plataforma/moneda`,\n plataformaMoneda,\n this.httpOptions\n );\n }\n\n doPlataformaMonedaDel(\n plataformaMonedaId: number\n ): Observable {\n plataformaMonedaId = plataformaMonedaId ? plataformaMonedaId : 0;\n return this.http.delete(\n `${this.url}/plataforma/moneda/${plataformaMonedaId}`,\n this.httpOptions\n );\n }\n\n getPlanPlataformas(): Observable {\n return this.http.get(\n this.url + '/plan/plataforma',\n this.httpOptions\n );\n }\n\n getPlanPlataformasFilter(\n countryId: number,\n planId: number,\n monedaId: string,\n plataformaId: number\n ): Observable {\n let params = { countryId, planId, monedaId, plataformaId };\n let httpOptions = Object.assign({}, this.httpOptions, { params });\n\n let url = `${this.url}/plan/plataforma`;\n return this.http.get(url, httpOptions);\n }\n\n getPlanPlataformasEnabled(planId: number): Observable {\n let url: string = `${this.url}/plan/plataforma/enabled?planId=${planId}`;\n\n return this.http.get(url, this.httpOptions);\n }\n\n getPlanPlatPlataformaDisp(\n countryId: number,\n monedaId: string\n ): Observable {\n let url = `${this.url}/plan/plataforma/disponibles?countryId=${countryId}&monedaId=${monedaId}`;\n return this.http.get(url, this.httpOptions);\n }\n\n doPlanPlataformaSave(\n planPlataforma: PlanPlataforma\n ): Observable {\n return this.http.post(\n `${this.url}/plan/plataforma`,\n planPlataforma,\n this.httpOptions\n );\n }\n\n doPlanPlataformaValidar(\n planPlataforma: PlanPlataforma\n ): Observable {\n return this.http.post(\n `${this.url}/plan/plataforma/validar`,\n planPlataforma,\n this.httpOptions\n );\n }\n\n doPlanPlataformaDel(planPlataformaId: number): Observable {\n planPlataformaId = planPlataformaId ? planPlataformaId : 0;\n return this.http.delete(\n `${this.url}/plan/plataforma/${planPlataformaId}`,\n this.httpOptions\n );\n }\n}\n\nexport class BaseSnackBar {\n constructor(protected snackBar: MatSnackBar) {}\n\n openSnackBar(message: string): void {\n this.snackBar.open(message, '', { duration: 5000 });\n }\n\n doShowErrorSnackBar(err: any): void {\n if (err.error && err.error.message) {\n this.openSnackBar(err.error.message);\n } else if (err.message) {\n this.openSnackBar(err.message);\n }\n }\n}\n","export enum Role {\n Cliente = 'ROLE_CLIENTE',\n Abogado = 'ROLE_ABOGADO',\n Admin = 'ROLE_ADMIN',\n}\n\nexport enum RoleNumber {\n Abogado = 2,\n Cliente = 3,\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatCardModule} from '@angular/material/card';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatBadgeModule} from '@angular/material/badge';\nimport {MatToolbarModule} from '@angular/material/toolbar';\nimport {MatMenuModule} from '@angular/material/menu';\nimport {MatRadioModule} from '@angular/material/radio';\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\nimport {MatSlideToggleModule} from '@angular/material/slide-toggle';\nimport {MatTableModule} from '@angular/material/table';\nimport {MatGridListModule} from '@angular/material/grid-list';\nimport {MatListModule} from '@angular/material/list';\nimport {MatSelectModule} from '@angular/material/select';\n\nimport {MatSnackBarModule} from '@angular/material/snack-bar';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\nimport {MatTabsModule} from '@angular/material/tabs';\nimport {MatDatepickerModule} from '@angular/material/datepicker';\nimport {MatNativeDateModule} from '@angular/material/core';\n\n@NgModule({\n declarations: [],\n imports: [\n CommonModule\n ],\n exports: [\n MatButtonModule,\n MatCardModule,\n MatCheckboxModule,\n MatIconModule,\n MatInputModule,\n MatBadgeModule,\n MatToolbarModule,\n MatMenuModule,\n MatRadioModule,\n MatProgressSpinnerModule,\n MatSlideToggleModule,\n MatTableModule,\n MatGridListModule,\n MatListModule,\n MatSelectModule,\n MatSnackBarModule,\n MatDialogModule,\n MatProgressBarModule,\n MatTabsModule,\n MatDatepickerModule,\n MatNativeDateModule\n ]\n})\nexport class MaterialModule { }\n","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { HttpClient } from '@angular/common/http';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { ReturnUser } from '../../api/user';\nimport { TokenDecoderService } from '../tokenDecoder/token-decoder.service';\nimport { LogOutService } from '../logOut/log-out.service';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthenticationService {\n private userSubject: BehaviorSubject;\n public user: Observable;\n\n constructor(private tokenDecoderService: TokenDecoderService,\n private router: Router,\n private http: HttpClient,\n private logOut: LogOutService\n ) {\n this.userSubject = new BehaviorSubject(JSON.parse(localStorage.getItem('user')));\n this.user = this.userSubject.asObservable();\n }\n\n public get getRole(): ReturnUser {\n return this.tokenDecoderService.getRole();\n }\n\n\n logout() {\n this.logOut.limpiarStorage();\n this.userSubject.next(null);\n this.router.navigate(['/login']);\n }\n}","import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LogOutService {\n\n constructor( \n private router: Router,\n private _snackBar: MatSnackBar) \n { }\n\n public cerrarSesion() {\n this.limpiarStorage();\n this.openSnackBar(\"Su sesión se cerró exitosamente\");\n this.router.navigate(['']);\n }\n\n public BajaCuenta() {\n this.limpiarStorage();\n this.openSnackBar(\"Su cuenta ha sido dado de Baja\");\n this.router.navigate(['']);\n }\n\n public expirado() {\n this.openSnackBar(\"Tu sesión ha expirado. Por favor inicia sesión nuevamente.\");\n this.limpiarStorage();\n this.router.navigate(['']);\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, \"\", { duration: 5000 });\n }\n\n public limpiarStorage() {\n localStorage.removeItem('entro');\n localStorage.removeItem('usuarioActualId');\n localStorage.removeItem('user');\n localStorage.removeItem('option');\n localStorage.removeItem('token');\n localStorage.removeItem('rol');\n }\n}\n","import { Injectable } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class TokenDecoderService {\n\n constructor() { }\n token = localStorage.getItem('token');\n user = localStorage.getItem('user');\n helper = new JwtHelperService();\n\n decodedToken() {\n let result = this.helper.decodeToken(localStorage.getItem('token'));\n return result;\n }\n\n decodedUser() {\n let result = this.helper.decodeToken(localStorage.getItem('token'));\n return result;\n }\n\n expirationDate() {\n return this.helper.getTokenExpirationDate(this.token); \n }\n\n isExpired() {\n if(this.token) {\n return this.helper.isTokenExpired(this.token);\n } else {\n return true;\n }\n }\n/*\n getRole() {\n let decoded = this.user;\n\n console.log(\"1402 DECODED \"+JSON.stringify(decoded));\n let retornable = null;\n if(decoded) {\n retornable = decoded.role;\n }\n return retornable;\n }\n*/\n \n getRole() {\n let decoded = this.decodedToken();\n\n console.log(\"1402 DECODED \"+JSON.stringify(decoded));\n let retornable = null;\n if(decoded) {\n retornable = decoded.role;\n }\n return retornable;\n }\n \n}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false,\n apiUrl: 'https://login.legalify-app.com/service/legalify',\n angularUrl: 'https://login.legalify-app.com',\n //measurement_id:'G-S8ZS180DR0',\n measurement_id:'G-S8ZS180DR0',\n //apiUrl: 'https://login.legalify-app.com/service/legalify',\n //angularUrl: 'https://login.legalify-app.com',\n //apiUrl: 'https://www.legalify.app/service/legalify',\n //angularUrl: 'https://www.legalify.app',\n mercadopago_token: 'APP_USR-1da78844-1736-4f2d-8db4-b46a0281f72f',\n paypal_clientid: 'ARi0qYGlkaxHXWFAIrfjioDpbSEbF3oYQmOA_xDuwpRSXECuRRiRVTOTpSeGzcwfz5nqEjoeOhS-r5Bl',\n paypal_partner_url: 'https://www.sandbox.paypal.com/webapps/merchantboarding/js/lib/lightbox/partner.js',\n\n webPushPublicKey: 'BENNN_N8nGxPkOno0xb41RGfD5NZeNJF46vnuK1MNbZ4WvMMdk9XCJLaEmK7jOcBtLQuoEh6qEirO8nAlgNJBAQ'\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\n\n","export enum Source {\n Login = 'login',\n Register = 'register',\n}","
\n \n \n

{{ \"creaExitosaAbo.verificando\" | translate }}

\n {{ \"creaExitosaAbo.verificabody1\" | translate }} \n {{ \"creaExitosaAbo.verificabody2\" | translate }} \n
\n \n \n
\n
\n\n","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'app-mensaje-validar',\n templateUrl: './mensaje-validar.component.html',\n styleUrls: ['./mensaje-validar.component.css']\n})\nexport class MensajeValidarComponent implements OnInit {\n\n @Input('textoBoton') textoBoton: string;\n @Input('mostrarLogo') mostrarLogo: boolean;\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Component, OnInit, Inject, Input } from '@angular/core';\n\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'dialogvalidar',\n templateUrl: 'dialogvalidar.html',\n styleUrls: ['./dialogvalidar.component.css']\n })\n\nexport class DialogValidarComponent {\n\n\n constructor(public dialog: MatDialog,\n private matIconRegistry: MatIconRegistry, \n private domSanitizer: DomSanitizer) {\n this.matIconRegistry.addSvgIcon(\n `mercadopago`,\n this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../assets/mercadopago.svg')\n );\n }\n\n }","
\n \n \n
\n\n","import { Component, OnInit, Input } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ApiService } from 'src/app/api/api.service';\n\n@Component({\n selector: 'app-mensaje-reenvio',\n templateUrl: './mensaje-reenvio.component.html',\n styleUrls: ['./mensaje-reenvio.component.css']\n})\nexport class MensajeReenvioComponent implements OnInit {\n language:String=\"\";\n constructor(public dialog: MatDialog,private apiService: ApiService, private _snackBar: MatSnackBar, private router: Router, private route: ActivatedRoute, public translate: TranslateService) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n this.language = sessionStorage.getItem('language');\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n userForm = new UntypedFormGroup({\n mail: new UntypedFormControl('', [\n Validators.required\n ]),\n });\n idCambioClave: number;\n\n ngOnInit(): void {\n }\n\n resend(){\n \n let mail = this.userForm.get('mail').value;\n this.apiService.solicitarReenvioConfirmacion(mail).subscribe(\n (response) => {\n \n this._snackBar.open(\"Se solicito el reenvio\", \"\", { duration: 5000 });\n this.dialog.closeAll();\n \n },\n (error) => {this.dialog.closeAll();}\n );\n }\n\n}\n","
\n \n \n

{{ 'recuperar.reenvio' | translate }}

\n {{ 'recuperar.solicitar' | translate }}\n\n
\n\n \n {{ 'recuperar.correoRecup' | translate }}\n \n\n \n\n
\n\n \n
\n \n
\n
\n","export const environment = {\n production: true,\n apiUrl : \"https://login.legalify-app.com/service/legalify\",\n angularUrl: 'https://login.legalify-app.com',\n measurement_id:'G-S8ZS180DR0',\n //measurement_id:'G-JCMXK9TH2P'\n mercadopago_token: 'APP_USR-06602490-3f74-40b1-beed-577bfc395c4c',\n paypal_clientid: 'ATUA-JWZMQ945_zHBddEkg4y0azoOYZ_GgKUY6vuqsphdWOsbQElEQa9rf_HsD686eMf3A637JAS-45V',\n paypal_partner_url: 'https://www.paypal.com/webapps/merchantboarding/js/lib/lightbox/partner.js'\n};\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { environment } from 'src/environments/environment';\nimport { ReturnUser } from '../api/user';\nimport { RedesCredenciales } from '../interfaces/redes-credenciales';\nimport { UrlDto } from '../interfaces/url';\nimport { TokenDecoderService } from './tokenDecoder/token-decoder.service';\nimport { Router } from '@angular/router';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ApiService } from '../api/api.service';\nimport { LogOutService } from './logOut/log-out.service';\nimport { Source } from '../enums/redesSociales';\nimport { SwPush } from '@angular/service-worker';\ndeclare var gtag;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoginService {\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n constructor(\n private http: HttpClient,\n private tokenDecoderService: TokenDecoderService,\n private _snackBar: MatSnackBar,\n private router: Router,\n private apiService: ApiService,\n private logOut: LogOutService,\n private swPush: SwPush\n ) {}\n\n public getRedPerfil(code, tipo, red) {\n return this.http.get(\n `${environment.apiUrl}/cuenta/getRedPerfil?code=${code}&tipo=${tipo}&red=${red}`\n );\n }\n \n public getPlataformaPerfil(plataforma: string, suscripcionUuid: string): Observable {\n let params = { plataforma, suscripcionUuid };\n let url = `${environment.apiUrl}/cuenta/getSuscripcionInfo`;\n\n return this.http.get(url, { params });\n }\n\n public getRedesCredentialsUrl(red, tipo?) {\n return this.http.get(\n `${environment.apiUrl}/cuenta/getRedesCredentialsUrl?red=${red}${\n tipo ? `&tipo=${tipo}` : ''\n }`\n );\n }\n\n public loginRedes(tipo, code) {\n return this.http.get(\n `${environment.apiUrl}/cuenta/loginRedes?tipo=${tipo}&code=${code}`,\n this.httpOptions\n );\n }\n\n public verificoSesion() {\n if (!this.tokenDecoderService.isExpired()) {\n this.navegacion(JSON.parse(localStorage.getItem('user')), true);\n } else {\n this.logOut.limpiarStorage();\n }\n }\n\n public getCompanyId(companyNombre: string): Observable {\n return this.http.get(`${environment.apiUrl}/cuenta/company/${companyNombre}/id`);\n }\n\n public doUpdateUsuarioCompany(usuarioId: number, companyId: number): Observable {\n let url = `${environment.apiUrl}/cuenta/company/${usuarioId}/${companyId}`;\n\n return this.http.post(url, {});\n }\n\n public handleUserData(user) {\n user = user;\n console.log(\"1402 USER LOGGED \"+JSON.stringify(user));\n localStorage.setItem('token', user.token);\n localStorage.setItem('usuarioActualId', user['id_usuario']);\n localStorage.setItem('descripcion', user['descripcion']);\n localStorage.setItem('user', JSON.stringify(user));\n if(user['lenguaje']=='T'){\n sessionStorage.setItem('language', \"it-IT\");\n }\n else if(user['lenguaje']=='N'){\n sessionStorage.setItem('language', \"es-AR\");\n }\n else{\n sessionStorage.setItem('language', \"es-AR\");\n }\n this.navegacion(user, false);\n }\n\n private navegacion(user, iniciado) {\n if (user) {\n if (user.rol.id === 1) {\n gtag('event', 'login', {\n 'send_to':environment.measurement_id,\n 'method': 'login_admin',\n });\n this.router.navigate(['/admin']);\n this.openSnackBar('Sesión de administrador iniciada exitosamente');\n } else {\n gtag('event', 'login', {\n 'send_to':environment.measurement_id,\n 'method': 'login_abogado',\n });\n if (!iniciado) {\n this.openSnackBar('Sesión iniciada exitosamente');\n }\n if (user.tutorialCompletado) {\n \n this.router.navigate(['/casos-activos/', user.rol.id]);\n \n } else {\n this.apiService.tutorialCompleto().subscribe(\n (respuesta) => {},\n (error) => {\n console.error(error);\n }\n );\n this.router.navigateByUrl('/bienvenida', { state: user.rol });\n }\n }\n }\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n\n public handleError(error, source: Source) {\n console.error(error);\n let text = '';\n switch (error.status) {\n case 409:\n if (source == Source.Login) {\n text = 'Esta cuenta no se encuentra registrada en Legalify';\n }\n if (source == Source.Register) {\n text =\n 'Ya tienes una cuenta registrada con esta red social en Legalify';\n }\n break;\n default:\n text = 'Falló el ';\n if (source == Source.Login) {\n text += 'inicio de sesión ';\n }\n if (source == Source.Register) {\n text += 'registro ';\n }\n text += 'con esta red social, por favor intente nuevamente más tarde';\n break;\n }\n this.openSnackBar(text);\n }\n\n doLoadWebPush(): void {\n this.swPush.requestSubscription({\n serverPublicKey: environment.webPushPublicKey\n }).then((value: PushSubscription) => {\n console.log(\"Aceptando notificacion, se verifica y/o registra la suscripcion.\");\n console.log(value.toJSON());\n this.apiService.doCuentaNotificacionSuscribir(value.toJSON()).subscribe();\n }).catch(reason => {\n console.log(reason);\n });\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ApiService } from 'src/app/api/api.service';\nimport { ReturnUser } from 'src/app/api/user';\nimport { AuthenticationService } from 'src/app/services/authentication/authentication.service';\n\n@Component({\n selector: 'app-language-nav',\n templateUrl: './language-nav.component.html',\n styleUrls: ['./language-nav.component.css']\n})\nexport class LanguageNavComponent implements OnInit {\n language: String = \"\";\n imgSelected: String = \"\";\n constructor(\n private apiService: ApiService,\n public translate: TranslateService,private authenticationService: AuthenticationService,) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n if(sessionStorage.getItem('language')==null){\n this.language ='es-AR';\n translate.setDefaultLang('es-AR');\n }\n else{\n this.language = sessionStorage.getItem('language');\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n translate.setDefaultLang(sessionStorage.getItem('language'));\n if(this.language == \"es-AR\")\n this.imgSelected = \"../../../assets/españa.png\"\n if(this.language == \"it-IT\")\n this.imgSelected = \"../../../assets/italia.png\"\n if(this.language == \"en-US\")\n this.imgSelected = \"../../../assets/ingles.png\"\n }\n\n ngOnInit(): void {\n }\n\n switchLang(lang: string) {\n console.log(lang)\n this.translate.use(lang);\n this.language = lang;\n sessionStorage.setItem('language', lang);\n sessionStorage.language = lang;\n let user:ReturnUser = JSON.parse(localStorage.getItem('user'));\n let leng=\"\";\n \n if(lang == \"es-AR\"){\n this.imgSelected = \"../../../assets/españa.png\"\n leng=\"P\";\n }\n if(lang == \"it-IT\"){\n this.imgSelected = \"../../../assets/italia.png\"\n leng=\"T\"\n } \n if(lang == \"en-US\"){\n this.imgSelected = \"../../../assets/ingles.png\"\n leng=\"N\"\n }\n this.apiService\n .cambiarLenguaje({\n mail: user.mail,\n lenguage: leng\n \n } as any)\n .subscribe(\n (res) => {\n console.log(\"Cambios Langu\");\n },\n (error) => {\n console.error(error);\n \n }\n ); \n }\n\n}\n","
\n \n
\n","import { Component, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { NewUser } from '../../api/user';\nimport { ApiService } from '../../api/api.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { LoginService } from 'src/app/services/login.service';\nimport { Source } from '../../enums/redesSociales';\nimport { MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { DialogValidarComponent } from './dialog-vincular/dialogvalidar.component';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MensajeReenvioComponent } from './mensaje-reenvio/mensaje-reenvio.component';\nimport { environment } from 'src/environments/environment.prod'\ndeclare var gtag;\n\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.css'],\n})\nexport class LoginComponent implements OnInit {\n public usuario = { rol: 0 };\n user: NewUser;\n flag: boolean = false;\n language:String=\"\";\n constructor(\n private apiService: ApiService,\n private _snackBar: MatSnackBar,\n private router: Router,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n private loginSrv: LoginService,\n private route: ActivatedRoute,\n public dialog: MatDialog,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n\n //localStorage.language = 'es';\n if (sessionStorage.getItem('language') == undefined) {\n var ln = window.navigator.language;\n sessionStorage.setItem('language','es-AR');\n console.log('1ro: ' + ln);\n if (ln != 'es-AR' && ln != 'it-IT') {\n sessionStorage.language = 'es-AR';\n translate.setDefaultLang('es-AR');\n } else {\n translate.setDefaultLang(ln);\n }\n } else {\n \n translate.setDefaultLang(sessionStorage.language);\n }\n this.language=sessionStorage.getItem('language');\n translate.setDefaultLang(sessionStorage.getItem('language'));\n console.log(ln);\n console.log(sessionStorage.language);\n //sessionStorage.clear();\n this.matIconRegistry.addSvgIcon(\n `google`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../assets/google.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `facebook`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../assets/facebook.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `linkedin`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../assets/linkedin.svg'\n )\n );\n }\n ngOnInit() {\n this.loginSrv.verificoSesion();\n this.route.paramMap.subscribe((params) => {\n const red = params['params'].tipo;\n\n this.route.queryParams.subscribe((params) => {\n const code = params['code'];\n if (code) {\n this.loginSrv.loginRedes(red, code).subscribe(\n (user) => {\n if(user.rol.id==1){\n this.trackLoginRedesCliente(red);\n }\n else if(user.rol.id==2){\n this.trackLoginRedesAbogado(red);\n }\n this.loginSrv.handleUserData(user);\n },\n (error) => {\n if (error.status === 401) {\n this.openSnackBar(\n 'No se encontró una cuenta de Legalify vinculada a esta red social'\n );\n } else if (error.status == 409) {\n this.openDialog();\n } else if (error.status == 406) {\n this.openSnackBar(\n this.translate.instant(\"register.notfound\"),\n 8000\n );\n } else {\n this.openSnackBar(\n this.translate.instant(\"service.error\")\n );\n }\n }\n );\n }\n });\n });\n }\n\n trackLoginRedesAbogado(red){\n if(red==\"L\"){\n gtag('event', 'login_abog_exitoso_linkedin', {\n 'send_to':environment.measurement_id,\n 'method':'registro_abog_exitoso_linkedin'\n });\n }\n else if(red==\"G\"){\n gtag('event', 'registro_abog_exitoso_gmail', {\n 'send_to':environment.measurement_id,\n 'method':'registro_abog_exitoso_gmail'\n });\n\n }\n else if(red==\"F\"){\n gtag('event', 'registro_abog_exitoso_facebook', {\n 'send_to':environment.measurement_id,\n 'method':'registro_abog_exitoso_facebook'\n });\n }\n }\n\n trackLoginRedesCliente(red){\n if(red==\"L\"){\n gtag('event', 'login_clie_exitoso_linkedin', {\n 'send_to':environment.measurement_id,\n 'method':'registro_clie_exitoso_linkedin'\n });\n }\n else if(red==\"G\"){\n gtag('event', 'registro_clie_exitoso_gmail', {\n 'send_to':environment.measurement_id,\n 'method':'registro_clie_exitoso_gmail'\n });\n\n }\n else if(red==\"F\"){\n gtag('event', 'registro_clie_exitoso_facebook', {\n 'send_to':environment.measurement_id,\n 'method':'registro_clie_exitoso_facebook'\n });\n }\n }\n\n\n trackLogin(){\n gtag('event', 'login_intento', {\n 'send_to':environment.measurement_id,\n 'method': 'login_intento'\n });\n }\n\n trackLoginSuccess(){\n gtag('event', 'login_exitoso_mail', {\n 'send_to':environment.measurement_id,\n 'method': 'login_exitoso_mail'\n });\n }\n\n userForm = new UntypedFormGroup({\n email: new UntypedFormControl(),\n password: new UntypedFormControl(),\n });\n\n switchLang(lang: string) {\n this.translate.use(lang);\n this.language = lang;\n sessionStorage.setItem('language', lang);\n sessionStorage.language = lang;\n this.flag = true;\n }\n\n redirectLinkedin() {\n this.loginSrv.getRedesCredentialsUrl('L').subscribe(\n (res) => {\n gtag('event', 'login_intento_linkedin', {\n 'send_to':environment.measurement_id,\n 'method': 'login_intento_linkedin',\n });\n window.location.href = res.url;\n },\n (error) => {\n this.loginSrv.handleError(error, Source.Login);\n }\n );\n }\n\n redirectGoogle() {\n \n this.loginSrv.getRedesCredentialsUrl('G').subscribe(\n (res) => {\n gtag('event', 'login_intento_google', {\n 'send_to':environment.measurement_id,\n 'method': 'login_intento_google',\n \n });\n window.location.href = res.url;\n },\n (error) => {\n this.loginSrv.handleError(error, Source.Login);\n }\n );\n }\n\n redirectFacebook() {\n this.loginSrv.getRedesCredentialsUrl('F').subscribe(\n (res) => {\n gtag('event', 'login_intento_facebook', {\n 'send_to':environment.measurement_id,\n 'method': 'login_intento_facebook',\n });\n window.location.href = res.url;\n },\n (error) => {\n this.loginSrv.handleError(error, Source.Login);\n }\n );\n }\n\n onSubmit() {\n if (this.userForm.value.email && this.userForm.value.password) {\n this.iniciarSesion();\n }\n }\n\n hide = true;\n\n iniciarSesion() {\n this.trackLogin();\n this.apiService\n .postUser({\n clave: this.userForm.value.password,\n mail: this.userForm.value.email,\n } as NewUser)\n .subscribe(\n (user) => {\n this.trackLoginSuccess();\n if (user.rol.id == 2 || user.rol.id == 3)\n this.loginSrv.doLoadWebPush();\n sessionStorage.companyLogo = '';\n this.loginSrv.handleUserData(user);\n },\n (error) => {\n if (error.status === 401) {\n this.openSnackBar(this.translate.instant(\"login.error\"))\n } else if (error.status == 409) {\n // this.openSnackBar(\"Tu matrícula se encuentra en proceso de validación\");\n this.openDialog();\n } else if (error.status == 406) {\n this.openSnackBar(\n this.translate.instant(\"register.notfound\"),\n 8000\n );\n } else if (error.status == 423) {\n this.openErrorSnackBar(\n 'Tu usuario se encuentra pendiente de confirmacion.',\n 8000\n );\n }\n \n else {\n this.openSnackBar(\n this.translate.instant(\"service.error\")\n );\n }\n }\n );\n }\n\n openDialog() {\n this.dialog.open(DialogValidarComponent, {\n backdropClass: 'backdropBackground',\n });\n }\n\n openDialogResendMail(){\n this.dialog.open(DialogValidarComponent, {\n backdropClass: 'backdropBackground',\n });\n }\n\n openSnackBar(message: string, setDuration?) {\n this._snackBar.open(message, '', {\n duration: setDuration ? setDuration : 5000,\n });\n }\n\n openErrorSnackBar(message: string, setDuration?) {\n this._snackBar.open(message, '', {\n duration: setDuration ? setDuration : 5000,\n panelClass: ['red-snackbar']\n });\n }\n\n openResend(){\n this.dialog.open(MensajeReenvioComponent, {\n backdropClass: 'backdropBackground',\n });\n }\n\n navegarRegistro(rol: number) {\n this.usuario.rol = rol;\n localStorage.setItem('rol', this.usuario.rol.toString());\n this.router.navigateByUrl('/redes');\n }\n}\n","\n \n \n\n
\n \n \n \n
\n

\n {{ \"inicio.crear\" | translate }}\n

\n
\n \n {{ \"inicio.cliente\" | translate }}
\n \n {{ \"inicio.abogado\" | translate }}\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n o\n
\n
\n
\n \n \n {{ \"inicio.correo\" | translate }}\n \n \n \n \n \n {{ \"inicio.contraseña\" | translate }}\n \n \n \n {{ hide ? \"visibility_off\" : \"visibility\" }}\n \n \n \n {{ \"inicio.olvidar\" | translate }}\n \n \n {{ \"inicio.reenvio\" | translate }}\n \n \n {{ \"inicio.inicioSesion\" | translate }}\n \n \n \n\n
\n Powered by Legalify\n \n
\n
\n\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SenderService {\n public nippy: boolean;\n\n constructor() {}\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { LogOutService } from 'src/app/services/logOut/log-out.service';\n\n@Component({\n selector: 'app-navbar-cliente',\n templateUrl: './navbar-cliente.component.html',\n styleUrls: ['./navbar-cliente.component.css'],\n})\nexport class NavbarClienteComponent implements OnInit {\n constructor(private router: Router, public translate: TranslateService, private logOut: LogOutService) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n btn1Style;\n btn2Style;\n\n ngOnInit(): void {\n var option = localStorage.getItem('option');\n if (option == null) {\n this.btn1Style = 'shortOpacity';\n this.btn2Style = 'completeOpacity';\n } else {\n this.activeOpacity(option);\n }\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n changeMenu(option: number, link: string, menu){\n menu.checked = false;\n localStorage.setItem('option', option.toString());\n this.router.navigateByUrl(link);\n }\n\n logout(){\n this.logOut.cerrarSesion();\n }\n\n activeOpacity(option: string) {\n this.btn1Style = option == '1' ? 'completeOpacity' : 'shortOpacity';\n this.btn2Style = option == '2' ? 'completeOpacity' : 'shortOpacity';\n }\n}\n","
\n \n
\n
\n
\n \n
\n
\n
\n
    \n
  • \n
    \n \n
    \n \n
    \n
  • \n
  • \n
    \n \n
    \n \n
    \n
  • \n
  • \n
    \n \n {{ \"perfilAbogado.cerrar\" | translate }}\n \n
    \n
  • \n
\n
\n
\n
\n \n
\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { Observable } from 'rxjs';\nimport { map} from 'rxjs/operators';\n\n@Pipe({\n name: 'secure'\n})\nexport class SecurePipe implements PipeTransform {\n\n constructor(private http: HttpClient, private sanitizer: DomSanitizer) { }\n\n transform(url): Observable {\n return this.http\n .get(url, { responseType: 'blob' }).pipe(map(val => this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(val))));\n \n }\n\n}","
\n
\n \n\n
\n \n
\n
\n
\n
\n \n
\n\n \n\n \n
\n\n
\n \n
\n \n
\n \n \n
\n
\n \n edit\n \n\n \n
\n \n \n
\n
\n {{ nombre }} {{ apellido }}\n
\n
\n \n
\n \n\n \n\n \n {{\"perfilAbogado.nombre\" | translate\n }}\n \n \n \n {{\n \"perfilAbogado.apellido\" | translate\n }}\n \n \n \n {{\n \"perfilAbogado.correo\" | translate\n }}\n \n \n\n
\n \n {{\n \"registroAbogado.tipoIdenti\" | translate\n }}\n \n \n {{ identificacion.nombre }}\n \n \n \n \n {{\n \"registroAbogado.nroDocumento\" | translate\n }}\n \n \n \n {{ \"registroAbogado.celular\" | translate }}\n \n \n\n
\n \n \n {{ perfil.provincia }}\n \n \n {{ provincia.nombre }}\n \n \n \n\n \n {{ perfil.ciudad }}\n \n {{ localidad.nombre }}\n \n \n\n\n \n {{\n \"perfilAbogado.codigo\" | translate\n }}\n \n \n \n \n Promocion\n \n \n \n
\n\n
\n\n\n \n\n \n {{\"perfilAbogado.name\" | translate\n }}\n \n \n \n {{\n \"perfilAbogado.apellido\" | translate\n }}\n \n \n \n {{\n \"perfilAbogado.correo\" | translate\n }}\n \n \n\n
\n \n \n {{ \"registroAbogado.tipoIdenti\" | translate }}\n \n \n \n {{ identificacion.nombre }}\n \n \n \n \n {{\n \"registroAbogado.nroDocumento\" | translate\n }}\n \n \n\n \n {{ \"registroAbogado.celular\" | translate }}\n \n \n\n
\n\n \n\n \n {{ perfil.provincia }}\n \n \n {{ provincia.nombre }}\n \n \n \n\n \n {{ perfil.ciudad }}\n \n {{ localidad.nombre }}\n \n \n\n\n \n {{\n \"perfilAbogado.codigo\" | translate\n }}\n \n \n \n \n Promocion\n \n \n \n\n
\n \n {{ \"perfilAbogado.cancelar\" | translate }}\n \n \n {{ \"perfilAbogado.guardarDet\" | translate }}\n \n \n \n\n \n
\n
\n
\n \n \n {{ \"perfilCliente.cerrar\" | translate }}\n \n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Identificacion, Jurisdiccion, Localidad, Perfil } from '../../../api/user';\nimport { ApiService } from '../../../api/api.service';\nimport { UntypedFormGroup, UntypedFormControl, Validators, FormControl } from '@angular/forms';\nimport { environment } from '../../../../environments/environment';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { LogOutService } from '../../../services/logOut/log-out.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SenderService } from 'src/app/services/sender.service';\n\n@Component({\n selector: 'app-perfil',\n templateUrl: './perfil.component.html',\n styleUrls: ['./perfil.component.css'],\n})\nexport class PerfilComponent implements OnInit {\n editarPerfil = false;\n tieneFoto = false;\n nuevosDatos: any;\n nippy: boolean;\n language:String=\"\";\n provinciasResidencias: Jurisdiccion[];\n localidadesResidencias: Localidad[];\n\n identificaciones: Identificacion[];\n\n sessionUser: any;\n\n constructor(\n private logOut: LogOutService,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n private _snackBar: MatSnackBar,\n private apiService: ApiService,\n public translate: TranslateService,\n private service: SenderService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n this.language=sessionStorage.getItem('language');\n translate.setDefaultLang(sessionStorage.getItem('language'));\n\n this.sessionUser = JSON.parse(localStorage.user);\n\n this.matIconRegistry.addSvgIcon(\n `perfil`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../assets/perfil.svg'\n )\n );\n }\n\n archivosForm = new UntypedFormGroup({\n archivosSeleccionados: new UntypedFormControl(),\n });\n\n cambiarDatos = new UntypedFormGroup({\n nombre: new UntypedFormControl(),\n apellido: new UntypedFormControl(),\n mail: new UntypedFormControl(),\n tipoDni: new FormControl(null),\n dni: new UntypedFormControl(),\n pais: new UntypedFormControl(),\n telefono: new UntypedFormControl(),\n localidad: new UntypedFormControl(),\n provinciaResidencia: new UntypedFormControl(),\n localidadResidencia: new UntypedFormControl(),\n direccion: new UntypedFormControl('', [Validators.pattern(/^[a-z\\d\\_\\s]+$/i)]),\n codigoPostal: new UntypedFormControl('', [Validators.max(99999999)]),\n promocion: new FormControl('', [])\n });\n\n perfil: Perfil;\n nombre: string;\n apellido: string;\n bio: string;\n mail: string;\n tipoDni: number;\n numeroDni: string;\n pais: string;\n telefono: string;\n promocion: string;\n avatarUrl: string;\n\n archivos = [];\n\n activarEditar() {\n this.editarPerfil = true;\n }\n\n cancelar(){\n this.editarPerfil = false\n }\n\n switchLang(lang: string) {\n sessionStorage.setItem('language',lang);\n this.language = lang;\n this.translate.use(lang);\n }\n\n editar() {\n this.editarPerfil = !this.editarPerfil;\n this.nuevosDatos = this.perfil;\n\n this.nuevosDatos.nombre = this.cambiarDatos.value.nombre\n ? this.cambiarDatos.value.nombre\n : this.nombre;\n this.nuevosDatos.apellido = this.cambiarDatos.value.apellido\n ? this.cambiarDatos.value.apellido\n : this.apellido;\n this.nuevosDatos.mail = this.cambiarDatos.value.mail\n ? this.cambiarDatos.value.mail\n : this.mail;\n this.nuevosDatos.telefono = this.cambiarDatos.value.telefono\n ? this.cambiarDatos.value.telefono\n : this.telefono;\n\n\n\n this.nuevosDatos.nombre = this.cambiarDatos.value.nombre\n ? this.cambiarDatos.value.nombre\n : this.nombre;\n this.nuevosDatos.apellido = this.cambiarDatos.value.apellido\n ? this.cambiarDatos.value.apellido\n : this.apellido;\n this.nuevosDatos.mail = this.cambiarDatos.value.mail\n ? this.cambiarDatos.value.mail\n : this.mail;\n this.nuevosDatos.telefono = this.cambiarDatos.value.telefono\n ? this.cambiarDatos.value.telefono\n : this.telefono;\n this.nuevosDatos.datosUsuario[0].tiposIdentificacionId = this.cambiarDatos.value.tipoDni \n ? this.cambiarDatos.value.tipoDni : this.tipoDni;\n this.nuevosDatos.datosUsuario[0].numeroDni = this.cambiarDatos\n .value.dni\n ? this.cambiarDatos.value.dni\n : this.numeroDni;\n\n this.nuevosDatos.datosUsuario[0].telefono = this.cambiarDatos\n .value.telefono\n ? this.cambiarDatos.value.telefono\n : this.telefono;\n\n this.nuevosDatos.promocion = this.cambiarDatos.value.promocion ?\n this.cambiarDatos.value.promocion : this.promocion;\n \n this.nuevosDatos.codigoPostal = this.cambiarDatos.value.codigoPostal;\n this.nuevosDatos.datosUsuario[0].codigoPostal = this.cambiarDatos.value.codigoPostal;\n if (this.cambiarDatos.value.localidadResidencia) {\n this.nuevosDatos.localidadId =\n this.cambiarDatos.value.localidadResidencia.id_localidad;\n this.nuevosDatos.datosUsuario[0].id_localidad=this.cambiarDatos.value.localidadResidencia.id_localidad;\n }\n\n \n //this.nuevosDatos.datosUsuario.push();\n this.editarCambiosPerfil();\n }\n\n private getProvinciaResidencia() {\n this.apiService.getJurisdiccionPaisesAuto().subscribe(\n (respuesta) => {\n this.provinciasResidencias = respuesta;\n },\n (error) => {}\n );\n }\n\n editarCambiosPerfil() {\n this.apiService.editarPerfil(this.nuevosDatos).subscribe(\n (respuesta) => {\n this.getMiPerfil();\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n cargarLocalidadesResidencia() {\n this.apiService\n .getLocalidades(\n this.cambiarDatos.value.provinciaResidencia.id_jurisdiccion\n )\n .subscribe(\n (localidad) => {\n this.localidadesResidencias = localidad;\n },\n (error) => {}\n );\n }\n\n selectFiles(event) {\n for (var i = 0; i < event.target.files.length; i++) {\n // this.archivos.push(event.target.files[i]);\n }\n this.archivos.push(event.target.files[0]);\n\n console.log(\"1402 FILE \"+JSON.stringify(event.target.files[0]));\n // this.archivosForm.value.archivosSeleccionados = this.archivos;\n\n this.apiService.patchAvatar(this.archivos).subscribe(\n (respuesta) => {\n this.getMiPerfil();\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n getIdentificaciones() {\n this.apiService.getIdentificacion().subscribe(\n (identificaciones) => {\n this.identificaciones = identificaciones;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n ngOnInit(): void {\n this.getMiPerfil();\n //this.nippy = this.service.nippy;\n this.nippy = sessionStorage.nippy;\n console.log('NIPPY ' + this.nippy);\n this.getProvinciaResidencia();\n this.getIdentificaciones();\n }\n\n cerrarSesion() {\n sessionStorage.removeItem('nippy');\n sessionStorage.clear()\n this.logOut.cerrarSesion();\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n\n getMiPerfil() {\n this.apiService.getPerfil().subscribe(\n (perfil) => {\n this.perfil = perfil;\n this.nombre = this.perfil.nombre;\n this.apellido = this.perfil.apellido;\n this.mail = this.perfil.mail;\n this.tipoDni = this.perfil.datosUsuario[0].tipoDniId;\n this.numeroDni = this.perfil.datosUsuario[0].numeroDni;\n this.telefono = this.perfil.datosUsuario[0].telefono;\n this.promocion = this.perfil.promocion;\n this.cambiarDatos.get('codigoPostal').setValue(this.perfil.datosUsuario[0].codigoPostal);\n\n if (this.perfil.avatarUrl != null) {\n this.tieneFoto = true;\n } else {\n this.tieneFoto = false;\n }\n this.avatarUrl = environment.apiUrl + this.perfil.avatarUrl;\n\n //01/03\n this.cambiarDatos.get('nombre').setValue(this.nombre);\n this.cambiarDatos.get('apellido').setValue(this.apellido);\n this.cambiarDatos.get('mail').setValue(this.mail);\n this.cambiarDatos.get('tipoDni').setValue(this.tipoDni);\n this.cambiarDatos.get('dni').setValue(this.numeroDni);\n this.cambiarDatos.patchValue({\n telefono: this.telefono,\n promocion: this.promocion \n });\n\n if (this.perfil.pais === 'ARG') {\n this.pais = 'Argentina';\n } else {\n this.pais = this.perfil.pais;\n }\n },\n (error) => {\n console.error(error);\n this.openSnackBar(\n 'No es posible recuperar la información del perfil. Por favor vuelva a intentarlo más tarde.'\n );\n }\n );\n }\n}\n","import { Component, OnInit, Inject, Input } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from '@angular/material/dialog';\nimport { ApiService } from '../../../api/api.service';\nimport { Planes } from '../../../api/planes';\nimport { Perfil } from '../../../api/user';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'dialog-content-example-dialog',\n templateUrl: 'dialog-content-example-dialog.html',\n styleUrls: ['./dialog.component.css'],\n})\nexport class DialogComponent {\n constructor(public dialog: MatDialog, public translate: TranslateService) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n}\n","
\n

\n {{\"planCorrecto.plan\" | translate}}\n

\n
\n\n

{{\"planCorrecto.subir\" | translate}}

\n","import { Component, OnInit, Inject, Input } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from '@angular/material/dialog';\nimport { ApiService } from '../../../api/api.service';\nimport { Planes } from '../../../api/planes';\nimport { Perfil } from '../../../api/user';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'dialogvincular-content-example-dialog',\n templateUrl: 'dialogvincular-content-example-dialog.html',\n styleUrls: ['./dialogvincular.component.css'],\n})\nexport class DialogVincularComponent {\n constructor(\n public dialog: MatDialog,\n private apiService: ApiService,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n this.matIconRegistry.addSvgIcon(\n `mercadopago`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../assets/mercadopago.svg'\n )\n );\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n vincular() {\n this.apiService.getLinkAsociacion().subscribe(\n (Response) => {\n window.open(Response.url);\n console.log(Response);\n },\n (error) => {\n console.error(error);\n }\n );\n }\n}\n","
\n \n
\n

{{\"mercadoPago.vincular\" | translate}}

\n {{\"mercadoPago.descripcion\" | translate}}\n \n
\n \n {{\"mercadoPago.btn\" | translate}}\n \n
\n","import { FormControl } from \"@angular/forms\";\n\nexport interface Pais {\n countryId: number;\n name: string\n}\n\nexport interface PaisConfig {\n countryConfigId: number;\n countryId: number;\n countryName: string;\n\tbobligatorio: boolean;\n\tbvisible: boolean;\n sclave: string;\n sdesc: string;\n svalor01: string;\n svalor02: string;\n svalordesc: string;\n}\n\nexport interface IFormPaisConfig {\n countryConfigId: FormControl;\n countryId?: FormControl;\n countryName?: FormControl;\n\tbobligatorio?: FormControl;\n\tbvisible?: FormControl;\n sclave?: FormControl;\n sdesc?: FormControl;\n svalor01?: FormControl;\n svalor02?: FormControl;\n svalordesc?: FormControl;\n}\n\nexport interface REGEX_TEMPLATE {\n desc: string,\n regexVal: string,\n regexInput: string\n}\n\nexport const REGEX_PLANTILLA = [{\n desc: '5 Digitos',\n regexVal: '^[1-9]\\\\d{4}$',\n regexInput: '^([1-9]\\\\d{0,4})?$'\n}, {\n desc: '8 Digitos',\n regexVal: '^[1-9]\\\\d{7}$',\n regexInput: '^([1-9]\\\\d{0,7})?$'\n}, {\n desc: '8 Digitos + 1 letra',\n regexVal: '^[1-9]\\\\d{7}[A-Z]$',\n regexInput: '^([1-9]\\\\d{0,7}[A-Z]?)?$'\n}, {\n desc: '9 Digitos',\n regexVal: '^[1-9]\\\\d{8}$',\n regexInput: '^([1-9]\\\\d{0,8})?$'\n}, {\n desc: '11 Digitos',\n regexVal: '^[1-9]\\\\d{10}$',\n regexInput: '^([1-9]\\\\d{0,10})?$'\n}, {\n desc: '13 Digitos',\n regexVal: '^[1-9]\\\\d{12}$',\n regexInput: '^([1-9]\\\\d{0,12})?$'\n}];\n\nexport const PAISCONFIG_KEY_CUIT = \"cuit\";\n","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ContratarPlanYAbogado, Link } from 'src/app/api/mercado';\nimport { DatosFacturacion, Planes } from 'src/app/api/planes';\nimport { MPVinculacion, PlanDefaultAmount, PlanPlataforma, Suscripcion } from 'src/app/components/admin/multipago/modules/multipago.model';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlanMultipagoService {\n\n private url = environment.apiUrl;\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n constructor(\n private http: HttpClient\n ) { }\n\n doAbogadoFacturaionUpdate(datos: DatosFacturacion): Observable{\n return this.http.patch(\n `${this.url}/api/usuario/edit/facturacion`,\n datos,\n this.httpOptions\n )\n }\n\n getPlanMonedaPlanesDips(): Observable {\n return this.http.get(\n `${this.url}/api/multipago/plan/disponibles`,\n this.httpOptions\n );\n }\n\n doAbogadoSuscribir(planPlataforma: PlanPlataforma): Observable {\n let url = `${this.url}/api/multipago/abogado/suscripcion`;\n return this.http.post(url, planPlataforma, this.httpOptions);\n }\n\n getSubscripcionLast(): Observable {\n return this.http.get(\n `${this.url}/api/multipago/abogado/suscripcion`,\n this.httpOptions\n );\n }\n\n doAbogadoSuscripcionCancelar(suscripcion: Suscripcion): Observable {\n let url = `${this.url}/api/multipago/abogado/suscripcion/cancelar`;\n return this.http.post(url, suscripcion, this.httpOptions);\n }\n\n isSuscriptionActive(suscripcion: Suscripcion): boolean {\n let result: boolean = suscripcion && suscripcion.estado == \"active\";\n return result;\n }\n\n isPlanCorpOrPrem(suscripcion: Suscripcion): boolean {\n let result: boolean;\n\n result = this.isSuscriptionActive(suscripcion);\n if (result) {\n result = suscripcion.planNombre.toLocaleUpperCase().indexOf(\"PREMIUM\") >= 0 || suscripcion.planNombre.toLocaleUpperCase().indexOf(\"CORPORATIVO\") >= 0;\n }\n return result;\n }\n\n getAbogadoVinculaciones(): Observable {\n let url = `${this.url}/api/multipago/abogado/vinculaciones`;\n return this.http.get(url, this.httpOptions);\n }\n\n getAbogadoVinculacionLink(plataformaId: number): Observable {\n let url = `${this.url}/api/multipago/abogado/vinculacion/${plataformaId}/init`;\n return this.http.get(url, this.httpOptions);\n }\n\n doAbogadoVinculacionPaypal(plataformaId: number, authCode: string, sharedId: string): Observable {\n let url = `${this.url}/api/multipago/abogado/vinculacion/${plataformaId}`;\n let data = { authCode, sharedId };\n \n return this.http.post(url, data, this.httpOptions);\n }\n\n getAbogadoVinculacionesById(abogadoId: number): Observable {\n let url = `${this.url}/api/multipago/cliente/vinculaciones/${abogadoId}`;\n return this.http.get(url, this.httpOptions);\n }\n\n getPlanDefaultAmounts(ciclo: number, jurisdiccionId: any, planIds: number[]): Observable {\n let params: HttpParams;\n let url = `${this.url}/api/multipago/cliente/plan/defaultamounts`;\n\n params = new HttpParams();\n params = params.append('ciclo', ciclo);\n params = params.append('jurisdiccionId', jurisdiccionId);\n planIds.forEach((planId: number) => {\n params = params.append('planIds', planId);\n });\n\n return this.http.get(url, {\n headers: this.httpOptions.headers,\n params: params\n });\n }\n\n doAbogadoSuscripcionCheckAndUpdate(suscripcionUuid: string): Observable {\n let url = `${this.url}/api/multipago/abogado/suscripcion/${suscripcionUuid}`;\n return this.http.post(url, this.httpOptions);\n }\n\n doAbogadoValidarIncrease(): Observable {\n let url = `${this.url}/api/multipago/abogado/validar/increase`;\n return this.http.post(url, this.httpOptions);\n }\n\n doClientePostPago(planPlataforma: PlanPlataforma, linkPago: ContratarPlanYAbogado): Observable {\n let url = `${this.url}/api/multipago/cliente/linkDePago`;\n let param = {\n 'planPlataforma': planPlataforma,\n 'linkPago': linkPago\n }\n return this.http.post(url, param, this.httpOptions);\n }\n\n doClienteValidarPago(externalReference: string): Observable {\n let url = `${this.url}/api/multipago/cliente/validarPago`;\n return this.http.post(url, externalReference, this.httpOptions);\n }\n\n doClienteCasoPago(externalReference: string, casoId: number): Observable {\n let url = `${this.url}/api/multipago/cliente/linkDePago/${externalReference}/${casoId}`;\n return this.http.post(url, externalReference, this.httpOptions);\n }\n\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { PlanService } from '../../../../services/plan/plan.service';\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from '@angular/material/dialog';\nimport { AbstractControl, FormControl, UntypedFormControl, UntypedFormGroup, Validators } from '@angular/forms';\nimport { DatosFacturacion } from '../../../../api/planes';\nimport { ApiService } from '../../../../api/api.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Router } from '@angular/router';\nimport { PlanMultipagoService } from 'src/app/services/plan/plan-multipago.service';\nimport { PaisConfig, PAISCONFIG_KEY_CUIT } from 'src/app/api/pais';\n\n@Component({\n selector: 'app-popup-facturacion',\n templateUrl: './popup-facturacion.component.html',\n styleUrls: ['./popup-facturacion.component.css'],\n})\nexport class PopupFacturacionComponent implements OnInit {\n facturacionForm = new UntypedFormGroup({\n cuit: new UntypedFormControl('', [Validators.pattern(/^[1-9]\\d{10}$/i)]),\n direccion: new UntypedFormControl('', [Validators.pattern(/^[a-z\\d\\_\\s]+$/i)]),\n codigoPostal: new UntypedFormControl('', [Validators.max(99999999)]),\n });\n\n cuitOldVal: string = \"\";\n\n cuit: string = \"\";\n direccion: string = \"\";\n codigopostal: string = \"\";\n\n paisConfigCuit: PaisConfig;\n\n countryId: number;\n\n constructor(\n private planService: PlanService,\n public dialog: MatDialog,\n private apiService: ApiService,\n private servicePlanMultipago: PlanMultipagoService,\n private _snackBar: MatSnackBar,\n private router: Router,\n private dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {}\n\n ngOnInit(): void {\n this.getSuscripcion()\n this.doPaisConfigCuitLoad();\n }\n\n getSuscripcion(){\n this.planService.getClientStatus().subscribe( res => {\n if(res.mensaje == \"OK\"){\n this.cuit = res.cuit;\n this.codigopostal = res.codigoPostal;\n this.direccion = res.direccion;\n }\n }, err => {\n console.log(err)\n })\n }\n\n doPaisConfigCuitLoad(): void {\n let countryId = JSON.parse(localStorage.getItem('user')).pais;\n\n this.apiService.getPaisConfig(countryId, PAISCONFIG_KEY_CUIT).subscribe({\n next: (paisConfigCuit: PaisConfig) => {\n console.log(`CUIT configuracion: ${countryId} - ${PAISCONFIG_KEY_CUIT}`);\n console.log(paisConfigCuit);\n this.setPaisConfigCuit(paisConfigCuit);\n }\n });\n }\n\n setPaisConfigCuit(cuit: PaisConfig): void {\n let validators = [];\n let controlCuit: AbstractControl;\n\n if (cuit && cuit.bvisible) {\n if (cuit.bobligatorio)\n validators.push(Validators.required);\n if (cuit.svalor01)\n validators.push(Validators.pattern(cuit.svalor01));\n }\n\n controlCuit = this.facturacionForm.get(\"cuit\");\n controlCuit.setValidators(validators);\n controlCuit.updateValueAndValidity();\n this.paisConfigCuit = cuit;\n }\n\n async onSubmit() {\n const { cuit, direccion, codigoPostal } = this.facturacionForm.getRawValue();\n let datos: DatosFacturacion = {\n cuit,\n direccion,\n codigoPostal\n };\n this.servicePlanMultipago.doAbogadoFacturaionUpdate(datos).subscribe(\n (respuesta) => {\n /*if(respuesta.mensaje == \"OK\"){\n this.router.navigate([\"/plan\"])\n }*/\n\n this.router.navigate([\"/plan\"])\n this.openSnackBar('Los datos se actualizaron con éxito');\n },\n (error) => {\n this.openSnackBar(\n 'Falló la actualización de tus datos de facturación. Por favor, intente nuevamente más tarde.'\n );\n console.error(error);\n }\n );\n }\n\n doCuitFix(event): void {\n if (this.paisConfigCuit) {\n let cuitValue = this.facturacionForm.getRawValue().cuit;\n if (cuitValue.match(this.paisConfigCuit.svalor02)) {\n this.cuitOldVal = cuitValue;\n } else {\n this.facturacionForm.patchValue({\n cuit: this.cuitOldVal\n });\n }\n }\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n}\n","
\n
\n

\n Por favor, completa los siguientes datos para continuar\n

\n \n \n {{ paisConfigCuit.sdesc }}\n \n \n
\n\n \n Domicilio de facturación de su medio de pago\n \n \n
\n\n \n Código postal\n \n \n\n
\n\n \n CONTINUAR\n \n\n \n \n
\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ContadorJurisdiccionesService {\n constructor() {}\n\n contador(datosProfesionales) {\n let cantidadJurisdicciones: number = 0;\n datosProfesionales.forEach((dato) => {\n if (dato.estado != 'D' && dato.estado != 'B') {\n cantidadJurisdicciones++;\n }\n });\n return cantidadJurisdicciones;\n }\n\n contadorActivas(datosProfesionales) {\n let cantidadJurisdicciones: number = 0;\n datosProfesionales.forEach((dato) => {\n if (dato.estado != 'D' && dato.estado != 'B' && dato.estado != 'P') {\n cantidadJurisdicciones++;\n }\n });\n return cantidadJurisdicciones;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n Planes,\n GetLinkData,\n // ActualizarJurisdiccionesEspecialidades,\n JurisdiccionesAEliminar,\n PlanesIncrease,\n NewClientIncrease,\n StatusIncrease,\n DeleteClient\n} from '../../api/planes';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { environment } from '../../../environments/environment';\nimport { CuentaMercado, Link } from '../../api/mercado';\nimport { Perfil } from '../../api/user';\nimport { ApiService } from '../../api/api.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { PopupFacturacionComponent } from '../../components/abogado/plan/popup-facturacion/popup-facturacion.component';\nimport { RoleNumber } from '../../enums/role';\nimport { ContadorJurisdiccionesService } from '../contadorJurisdicciones/contador-jurisdicciones.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PlanService {\n private url = environment.apiUrl + '/';\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n constructor(\n private http: HttpClient,\n private apiService: ApiService,\n public dialog: MatDialog,\n private _snackBar: MatSnackBar,\n private contadorJurisdiccionesService: ContadorJurisdiccionesService\n ) {}\n\n crearSubscripcion(data: GetLinkData): Observable {\n return this.http.get(\n this.url +\n `api/increase/createsubscription?anual=${data.anual}&planId=${data.planId}`,\n this.httpOptions\n );\n }\n\n createNewClientOld(datos: any): Observable{\n return this.http.put(\n this.url + \"api/increase/nuevo\",\n datos,\n this.httpOptions\n )\n }\n\n getPlanesIncrease(): Observable{\n return this.http.get(this.url + 'api/increase/plans', this.httpOptions);\n }\n\n\n setIncreaseClient(newClientObj):Observable{\n return this.http.post(this.url + \"api/increase/nuevaSuscripcion\", newClientObj ,this.httpOptions)\n }\n\n getClientStatus():Observable{\n return this.http.get(this.url + \"api/increase/cliente\",this.httpOptions)\n }\n\n deleteClientPlan(obj):Observable{\n return this.http.patch(this.url + \"api/increase/cancelacion\",obj,this.httpOptions)\n }\n\n getCuenta(): Observable {\n return this.http.get(\n this.url + 'api/cuentas',\n this.httpOptions\n );\n }\n\n getSubscriptionStatus(subscripcionId: string): Observable {\n let url = this.url + `api/increase/confirmsubscription/${subscripcionId}`;\n\n return this.http.get(url, {responseType: 'text'});\n }\n\n removePlan(): Observable {\n return this.http.delete(\n this.url + 'api/increase/cancelsubscription',\n this.httpOptions\n );\n }\n\n bajarJurisdicciones(\n jurisdiccionesAEliminar: JurisdiccionesAEliminar\n ): Observable {\n return this.http.post(\n this.url + 'api/usuario/datosprofesionales',\n jurisdiccionesAEliminar,\n this.httpOptions\n );\n }\n\n getPlanesAbogado(): Observable {\n return this.http.get(this.url + 'api/planes', this.httpOptions);\n }\n\n abrirModal(plan: Planes, perfil: Perfil): boolean {\n let cantidadEspecialidades: number =\n perfil.datosProfesionales[0].especialidadesAbogados.length;\n let cantidadJurisdicciones: number =\n this.contadorJurisdiccionesService.contador(perfil.datosProfesionales);\n let result: boolean = false;\n if (\n plan.especialidades < cantidadEspecialidades ||\n plan.jurisdicciones < cantidadJurisdicciones\n ) {\n result = true;\n }\n return result;\n }\n\n public verificoDatosFacturacion() {\n let user = JSON.parse(localStorage.getItem('user'));\n if (user.rol.id == RoleNumber.Abogado) {\n let tieneDatosDeFacturacion: boolean = false;\n this.apiService.getPerfil().subscribe(\n (respuesta) => {\n if (\n !respuesta.datosProfesionales[0].direccion ||\n !respuesta.datosProfesionales[0].codigoPostal\n ) {\n const dialogRef = this.dialog.open(PopupFacturacionComponent, {\n backdropClass: 'backdropBackground',\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (!result) {\n this.verificoDatosFacturacion();\n window.location.reload();\n }\n });\n }\n },\n (error) => {\n console.error(error);\n this.openSnackBar(\n 'No fue posible obtener la información del perfil. Por favor, intente nuevamente más tarde.'\n );\n }\n );\n }\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n\n isPlanActive(plan: StatusIncrease[\"suscripcion\"]): boolean {\n let result: boolean;\n\n result = plan && (plan.status !== 'canceled' && plan.status !== 'pending')\n return result;\n }\n\n isPlanCorpOrPrem(plan: StatusIncrease[\"suscripcion\"]): boolean {\n let result: boolean;\n let planExp;\n\n result = this.isPlanActive(plan);\n if (result) {\n result = plan.nombrePlan.toLocaleUpperCase().indexOf(\"PREMIUM\") >= 0 || plan.nombrePlan.toLocaleUpperCase().indexOf(\"CORPORATIVO\") >= 0;\n }\n return result;\n }\n\n}\n","
\n \n \n
\n

{{ \"editarEsp.Atencion\" | translate }}

\n

\n {{ \"editarEsp.planSel\" | translate }} ({{ plan.nombre }})\n {{ \"editarEsp.permite\" | translate }}\n {{ plan.jurisdicciones }} {{ \"editarEsp.jur\" | translate }}\n {{ plan.especialidades }} {{ \"editarEsp.tex\" | translate }}\n

\n
\n

{{ \"editarEsp.jurisdiccion\" | translate }}

\n

\n error_outline\n {{ plan.jurisdicciones }} permitidas\n

\n
\n \n
\n = plan.jurisdicciones &&\n !jurisdiccion.selected\n \"\n (click)=\"cambiarJurisdicciones(jurisdiccion)\"\n >\n place\n
{{ jurisdiccion.nombre }}
\n
\n Tomo: {{ jurisdiccion.tomo }} Folio: {{ jurisdiccion.folio }}\n
\n \n
\n
\n
\n\n
\n
\n

{{ \"editarEsp.editar\" | translate }}

\n

\n error_outline\n \n {{ plan.especialidades }} {{ \"editarEsp.permi\" | translate }}\n \n \n {{ \"editarEsp.ilim\" | translate }}\n \n

\n
\n

\n {{ \"editarEsp.Agregar\" | translate }}\n

\n
\n\n
\n

{{ \"editarEsp.especialidades\" | translate }}

\n

\n error_outline{{ plan.especialidades }} {{ \"editarEsp.permi\" | translate }}\n

\n
\n\n \n =\n this.plan.especialidades && !especialidad.selected\n \"\n [selected]=\"especialidad.selected\"\n (click)=\"cambiarEspecialidad(especialidad)\"\n >\n

{{ especialidad.nombre }}

\n \n
\n
\n
\n \n {{ \"editarEsp.pago\" | translate }}\n \n

\n {{ \"editarEsp.presionar\" | translate }}\n

\n
\n
\n \n {{ \"editarEsp.confirmar\" | translate }}\n \n
\n\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { Planes } from '../../../../api/planes';\nimport {\n Especialidad,\n JurisdiccionCheckBox,\n Perfil,\n} from '../../../../api/user';\nimport { PlanService } from '../../../../services/plan/plan.service';\nimport {\n MatDialog,\n MAT_DIALOG_DATA,\n} from '@angular/material/dialog';\nimport { ApiService } from '../../../../api/api.service';\nimport { RoleNumber } from '../../../../enums/role';\n\n@Component({\n selector: 'app-popup-downgrade',\n templateUrl: './popup-downgrade.component.html',\n styleUrls: ['./popup-downgrade.component.css'],\n})\nexport class PopupDowngradeComponent implements OnInit {\n perfil: Perfil;\n plan: Planes;\n labelPosition = 'before';\n desactivarBoton: boolean = true;\n desactivarBotonEspecialidades: boolean = true;\n cantidadJurisdiccionesSeleccionadas: number = 0;\n cantidadEspecialidadesSeleccionadas: number = 0;\n jurisdicciones: JurisdiccionCheckBox[] = [];\n especialidades: Especialidad[] = [];\n clase: string = 'scrooleableHidden';\n especialidadesExistentes: Especialidad[] = [];\n\n constructor(\n private planService: PlanService,\n public dialog: MatDialog,\n private apiService: ApiService,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {}\n\n ngOnInit(): void {\n this.getMiPerfil();\n this.plan = this.data.plan;\n console.log(this.plan)\n }\n\n changeClass(change: boolean) {\n if (change) {\n this.clase = 'scrooleable';\n } else {\n this.clase = 'scrooleableHidden';\n }\n }\n\n getMiPerfil() {\n this.apiService.getPerfil().subscribe(\n (perfil) => {\n this.perfil = perfil;\n if (this.data.downgrade) {\n this.crearEspecialidades();\n this.crearJurisdicciones();\n } else {\n this.getEspecialidades();\n }\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n getEspecialidades() {\n this.apiService.getEspecialidadesByPais(RoleNumber.Abogado, +this.perfil.pais).subscribe(\n (especialidades) => {\n this.especialidades = especialidades.map((especialidad) => {\n const nombreReemplazado = especialidad.nombre.replace('/', ' ');\n let selected: boolean = false;\n this.perfil.datosProfesionales[0].especialidadesAbogados.forEach(\n (especialidadSeleccionada) => {\n if (especialidad.nombre == especialidadSeleccionada.nombre) {\n selected = true;\n }\n }\n );\n return {\n ...especialidad,\n nombre: nombreReemplazado,\n selected: selected,\n };\n });\n this.crearEspecialidades();\n this.cambiarEspecialidad(null);\n },\n (error) => {}\n );\n }\n\n crearEspecialidades() {\n this.perfil.datosProfesionales[0].especialidadesAbogados.forEach(\n (especialidad) => {\n let selected: boolean = false;\n if (!this.data.downgrade) {\n selected = true;\n }\n let aux = {\n nombre: especialidad.nombre,\n id_especialidad: especialidad.id_especialidad,\n selected: selected,\n nombreCliente: especialidad.nombreCliente,\n };\n if (this.data.downgrade) {\n this.especialidades.push(aux);\n } else {\n this.especialidadesExistentes.push(aux);\n }\n }\n );\n }\n\n cambiarEspecialidad(especialidad: Especialidad) {\n this.especialidades.forEach((element) => {\n if (especialidad && element.id_especialidad === especialidad.id_especialidad) {\n element.selected = !element.selected;\n }\n });\n this.cantidadEspecialidadesSeleccionadas = 0;\n this.especialidades.forEach((element) => {\n if (element.selected == true) {\n this.cantidadEspecialidadesSeleccionadas++;\n }\n });\n this.botonDisabled();\n }\n\n crearJurisdicciones() {\n let contador = 0;\n this.perfil.datosProfesionales.forEach((dato) => {\n let selected: boolean = false;\n // if(contador == 0) {\n // selected = true;\n // }\n contador++;\n let aux = {\n nombre: dato.localidad.jurisdiccion.nombre,\n id_jurisdiccion: dato.id_datos_profesionales,\n selected: selected,\n tomo: dato.tomo,\n folio: dato.folio,\n };\n if (dato.estado != 'D') {\n this.jurisdicciones.push(aux);\n }\n });\n }\n\n cambiarJurisdicciones(jurisdiccion: JurisdiccionCheckBox) {\n this.jurisdicciones.forEach((element) => {\n if (element.id_jurisdiccion === jurisdiccion.id_jurisdiccion) {\n element.selected = !element.selected;\n }\n });\n this.cantidadJurisdiccionesSeleccionadas = 0;\n this.jurisdicciones.forEach((element) => {\n if (element.selected == true) {\n this.cantidadJurisdiccionesSeleccionadas++;\n }\n });\n this.botonDisabled();\n }\n\n botonDisabled() {\n let jurisdiccionesValidas: boolean =\n this.cantidadJurisdiccionesSeleccionadas >= 1 &&\n this.cantidadJurisdiccionesSeleccionadas <= this.plan.jurisdicciones;\n let especialidadesValidas: boolean =\n this.cantidadEspecialidadesSeleccionadas >= 1 &&\n this.cantidadEspecialidadesSeleccionadas <= this.plan.especialidades;\n\n // if(this.plan.jurisdicciones >1) {\n this.desactivarBoton = !(jurisdiccionesValidas && especialidadesValidas);\n // } else {\n // this.desactivarBoton = !especialidadesValidas;\n // }\n this.desactivarBotonEspecialidades = !especialidadesValidas;\n }\n\n onSubmit() {\n let especialidadesAEliminar: number[] = [];\n let jurisdiccionesAEliminar: number[] = [];\n this.especialidades.map((especialidad) => {\n if (especialidad.selected) {\n especialidadesAEliminar.push(especialidad.id_especialidad);\n }\n });\n this.jurisdicciones.map((jurisdiccion) => {\n if (!jurisdiccion.selected) {\n jurisdiccionesAEliminar.push(jurisdiccion.id_jurisdiccion);\n }\n });\n sessionStorage.setItem(\n 'especialidadesAEliminar',\n JSON.stringify(especialidadesAEliminar)\n );\n sessionStorage.setItem(\n 'jurisdiccionesAEliminar',\n JSON.stringify(jurisdiccionesAEliminar)\n );\n }\n\n onSubmitEspecialidades() {\n let especialidadesAEliminar: number[] = [];\n let especialidadesSeleccionadas: Especialidad[] = [];\n\n this.especialidades.forEach((especialidad) => {\n if (!especialidad.selected) {\n this.especialidadesExistentes.forEach((seleccionada) => {\n if (seleccionada.nombre == especialidad.nombre) {\n seleccionada.selected = false;\n especialidadesAEliminar.push(especialidad.id_especialidad);\n }\n });\n }\n\n if (especialidad.selected) {\n let encontrada: boolean = false;\n this.especialidadesExistentes.forEach((seleccionada) => {\n if (seleccionada.nombre == especialidad.nombre) {\n seleccionada.selected = false;\n encontrada = true;\n }\n });\n especialidadesSeleccionadas.push(especialidad);\n }\n });\n sessionStorage.setItem(\n 'especialidadesSeleccionadas',\n JSON.stringify(especialidadesSeleccionadas)\n );\n sessionStorage.setItem(\n 'especialidadesAEliminar',\n JSON.stringify(especialidadesAEliminar)\n );\n }\n}\n","
\n
\n

{{ data.titulo }}

\n {{ data.texto }}\n \n {{ data.textoBotonConfirmar }}\n \n \n {{ data.textoBotonCerrar }}\n \n
\n
\n","import { Component, OnInit, Inject } from '@angular/core';\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from '@angular/material/dialog';\n\n@Component({\n selector: 'app-cancelar',\n templateUrl: './cancelar.component.html',\n styleUrls: ['./cancelar.component.css'],\n})\nexport class CancelarComponent implements OnInit {\n titulo: string = '';\n texto: string = '';\n textoBotonCerrar: string = '';\n constructor(\n public dialog: MatDialog,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {}\n\n ngOnInit(): void {\n this.titulo = this.data.titulo;\n }\n\n cancelar() {}\n}\n","import { Respuesta } from \"./respuesta\";\n\nexport class Certificacion {\n mail: string;\n title: string;\n doc: string;\n respuestas : Respuesta[];\n\n constructor(mail,title,doc,respuestas){\n this.mail=mail;\n this.title=title;\n this.doc=doc;\n this.respuestas=respuestas;\n }\n \n}\n \n ","import { Injectable } from '@angular/core';\nimport { environment } from '../../environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PuntuacionesService {\n\n constructor() { }\n\n avatar(opinion) {\n if (opinion.usuarioCreador.avatarUrl != null) {\n opinion.tieneFoto = true;\n opinion.avatarUrl = environment.apiUrl + opinion.usuarioCreador.avatarUrl;\n } else {\n opinion.tieneFoto = false;\n }\n return opinion;\n }\n\n crearEstrellasMapeando(opiniones) {\n opiniones = opiniones.map(opinion => {\n this.crearEstrellasIndividualEmojis(opinion);\n this.avatar(opinion);\n })\n }\n\n crearEstrellasIndividualEmojis(opinion) {\n let parteEntera = Math.trunc(opinion.puntuacion);\n let parteDecimal = opinion.puntuacion % 1;\n\n switch (parteEntera) {\n case 1:\n opinion.estrellas = \"★ \";\n break;\n case 2:\n opinion.estrellas = \"★ ★ \";\n break;\n case 3:\n opinion.estrellas = \"★ ★ ★ \";\n break;\n case 4:\n opinion.estrellas = \"★ ★ ★ ★ \";\n break;\n case 5:\n opinion.estrellas = \"★ ★ ★ ★ ★ \";\n break;\n default:\n opinion.estrellas = \"★ ★ ★ ★ ★ \";\n break;\n }\n\n switch (parteEntera) {\n case 1:\n opinion.estrellas = opinion.estrellas + \"☆ ☆ ☆ ☆\";\n break;\n case 2:\n opinion.estrellas = opinion.estrellas + \"☆ ☆ ☆\";\n break;\n case 3:\n opinion.estrellas = opinion.estrellas + \"☆ ☆\";\n break;\n case 4:\n opinion.estrellas = opinion.estrellas + \"☆\";\n break;\n }\n\n return opinion;\n\n }\n\n crearEstrellasIndividual(opinion) {\n let parteEntera = Math.trunc(opinion.puntuacion);\n let parteDecimal = opinion.puntuacion % 1;\n\n switch (parteEntera) {\n case 1:\n opinion.estrellas = \"star\";\n break;\n case 2:\n opinion.estrellas = \"star star\";\n break;\n case 3:\n opinion.estrellas = \"star star star\";\n break;\n case 4:\n opinion.estrellas = \"star star star star\";\n break;\n case 5:\n opinion.estrellas = \"star star star star star\";\n break;\n default:\n opinion.estrellas = \"star_border\";\n break;\n }\n\n if (parteDecimal < 0.5 && parteEntera != 5) {\n opinion.estrellas = opinion.estrellas + \" star_border \";\n }\n if (parteDecimal >= 0.5) {\n opinion.estrellas = opinion.estrellas + \" star_half \";\n }\n\n switch (parteEntera) {\n case 1:\n opinion.estrellas = opinion.estrellas + \"star_border star_border star_border\";\n break;\n case 2:\n opinion.estrellas = opinion.estrellas + \"star_border star_border\";\n break;\n case 3:\n opinion.estrellas = opinion.estrellas + \"star_border\";\n break;\n case 4:\n opinion.estrellas = opinion.estrellas;\n break;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class TiempoSubscripcionService {\n constructor() {}\n\n getTiempo(respuesta) {\n let separado = respuesta.vencimientoPeriodoPrueba.toString().split('T');\n let aux = separado[0].split('-');\n let mesFinal = parseInt(aux[1], 10);\n let today = new Date();\n let duracion = mesFinal - (today.getMonth() + 1);\n let tiempo = '';\n if (duracion > 1) {\n tiempo = 'MESES';\n } else {\n if (duracion == 1) {\n tiempo = 'MES';\n } else {\n if (duracion >= 0) {\n let diaFinal = parseInt(aux[2], 10);\n duracion = diaFinal - today.getDate();\n tiempo = 'DIAS';\n } else {\n duracion = 12 - (today.getMonth() + 1) + mesFinal;\n tiempo = 'MESES';\n }\n }\n }\n let retornarString: string = respuesta.status == \"trial\"\n ? 'SUBSCRIPCIÓN GRATIS POR ' + duracion + ' ' + tiempo\n : 'SUBSCRIPCIÓN DURANTE ' + duracion + ' ' + tiempo;\n return retornarString;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ApiService } from '../../api/api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UpdateRangesService {\n constructor(private apiService: ApiService) {}\n\n public updateTags(\n userId: number,\n newTags: string[],\n isEspecialidad: boolean\n ) {\n let response: boolean = true;\n response = this.getTags(userId, newTags, isEspecialidad);\n return response;\n }\n\n private getTags(userId: number, newTags, isEmpty: boolean) {\n let done: boolean = false;\n this.apiService.getTags(userId).subscribe(\n (oldTags) => {\n let allTags: string;\n if (!isEmpty) {\n allTags = this.appendTags(oldTags, newTags);\n } else {\n let empty = [];\n allTags = this.appendTags(empty, newTags);\n }\n done = this.updateRanges(userId, allTags);\n return done;\n },\n (error) => {\n console.error(error);\n done = false;\n return done;\n }\n );\n return done;\n }\n\n private appendTags(oldTags: string[], newTags: string[]) {\n let tags = '';\n oldTags.forEach((tag) => {\n tags += 'tags=' + tag + '&';\n });\n newTags.forEach((tag) => {\n tags += 'tags=' + tag + '&';\n });\n return tags;\n }\n\n private updateRanges(userId, allTags) {\n let done: boolean = false;\n this.apiService.patchRangos(userId, allTags).subscribe(\n (respuesta) => {\n if (respuesta == null) {\n done = true;\n return done;\n }\n },\n (error) => {\n console.error(error);\n done = false;\n return done;\n }\n );\n return done;\n }\n\n public updateWithEmptyTags(): Promise {\n return new Promise((resolve, reject) => {\n let tags = [];\n this.apiService.getPerfil().subscribe(\n (perfil) => {\n perfil.datosProfesionales.forEach((dato) => {\n if (dato.estado != 'D')\n tags.push(dato.localidad.jurisdiccion.nombre);\n });\n perfil.datosProfesionales[0].especialidadesAbogados.forEach(\n (especialidad) => {\n tags = tags.concat(especialidad.nombreCliente);\n tags = [...new Set([...tags, ...especialidad.nombreCliente])];\n }\n );\n this.updateTags(perfil.id_usuario, tags, true);\n resolve(tags);\n },\n (error) => {\n reject();\n }\n );\n });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { LogOutService } from 'src/app/services/logOut/log-out.service';\n\n@Component({\n selector: 'app-navbar-abogado',\n templateUrl: './navbar-abogado.component.html',\n styleUrls: ['./navbar-abogado.component.css'],\n})\nexport class NavbarAbogadoComponent implements OnInit {\n constructor(private logOut: LogOutService,private router: Router, public translate: TranslateService) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n btn1Style;\n btn2Style;\n btn3Style;\n\n ngOnInit(): void {\n var option = localStorage.getItem('option');\n if (option == null) {\n this.btn1Style = 'shortOpacity';\n this.btn3Style = 'shortOpacity';\n this.btn2Style = 'completeOpacity';\n } else {\n this.activeOpacity(option);\n }\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n changeMenu(option: number, link: string, menu){\n menu.checked = false;\n localStorage.setItem('option', option.toString());\n this.router.navigateByUrl(link);\n }\n\n\n logout(){\n this.logOut.cerrarSesion();\n }\n\n activeOpacity(option: string) {\n this.btn1Style = option == '1' ? 'completeOpacity' : 'shortOpacity';\n this.btn2Style = option == '2' ? 'completeOpacity' : 'shortOpacity';\n this.btn3Style = option == '3' ? 'completeOpacity' : 'shortOpacity';\n }\n}\n","
\n \n
\n
\n
\n \n
\n
\n
\n
    \n
  • \n \n
    \n \n
  • \n
  • \n
    \n \n
    \n \n
    \n
  • \n
  • \n
    \n \n
    \n \n
    \n
  • \n
  • \n
    \n \n
    \n \n
    \n
  • \n
  • \n
    \n \n
    \n \n
    \n
  • \n
  • \n
    \n \n {{ \"perfilAbogado.cerrar\" | translate }}\n \n
    \n
  • \n \n
\n
\n
\n \n \n
\n
\n\n\n\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EspecialidadDelCasoService {\n\n constructor() { }\n\n match(especialidad, abogado) {\n let especialidadesAbogados = abogado.datosProfesionales[0].especialidadesAbogados;\n let especialidadParaMostrar = \"\";\n let contador = 0;\n especialidadesAbogados.forEach(especialidadAbogado => {\n especialidadAbogado.nombreCliente.forEach(nombreParaCliente => {\n if(nombreParaCliente == especialidad) {\n contador++;\n if(nombreParaCliente != \"Otros\") {\n especialidadParaMostrar = especialidadParaMostrar + \" \" + especialidadAbogado.nombre;\n } else {\n especialidadParaMostrar = especialidadesAbogados[0].nombre;\n }\n }\n });\n });\n return especialidadParaMostrar;\n }\n}\n","\n
\n \n
\n
\n \n \n \n \n
\n
\n {{ abogado.nombre }} {{ abogado.apellido }}\n
\n \n

\n place {{ abogado.provincia }},\n {{ abogado.ciudad }} ds\n

\n

\n {{ abogado.datosProfesionales[0].especialidadesAbogados[0].nombre }}\n

\n
\n \n

{{ especialidadParaMostrar }}

\n

\n {{ stars }}\n

\n

\n {{ abogado.cantOpiniones }} {{ \"vistaPrevia.opiniones\" | translate }}\n

\n
\n \n {{ \"vistaPrevia.info\" | translate }}\n \n
\n
\n
\n\n","import { Component, OnInit, Input } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Location } from '@angular/common';\nimport { environment } from '../../../../environments/environment';\nimport { EspecialidadDelCasoService } from '../../../services/especialidad/especialidad-del-caso.service';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-vista-previa',\n templateUrl: './vista-previa.component.html',\n styleUrls: ['./vista-previa.component.css'],\n})\nexport class VistaPreviaComponent implements OnInit {\n @Input('nombre') nombre: string;\n @Input('certified') certified: boolean;\n @Input('apellido') apellido: string;\n @Input('titulo') titulo: string;\n @Input() abogado: any;\n @Input('id_caso') id_caso: number;\n @Input('caso') caso: any;\n @Input('avatarUrl') avatarUrl: string;\n @Input('tieneFoto') tieneFoto: boolean;\n @Input('mostrarBoton') mostrarBoton: boolean;\n\n stars: string =\n 'star_outline star_outline star_outline star_outline star_outline';\n\n hayAvatar = false;\n especialidadParaMostrar = '';\n mostrar = false;\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private _location: Location,\n private especialidadService: EspecialidadDelCasoService,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n this.matIconRegistry.addSvgIcon(\n `perfil`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../assets/perfil.svg'\n )\n );\n }\n\n datos = {\n titulo: '',\n id_caso: 0,\n abogado: '',\n caso: '',\n tieneFoto: true,\n };\n\n countryId = 54;\n rolId = 3;\n\n ngOnInit(): void {\n if (this.abogado && this.abogado.puntuacionFinal) {\n this.generateStars();\n }\n if (\n this.abogado.avatarUrl != null &&\n !this.abogado.avatarUrl.includes(null)\n ) {\n this.tieneFoto = true;\n } else {\n this.tieneFoto = false;\n }\n this.datos.tieneFoto = this.tieneFoto;\n this.datos.titulo = this.titulo;\n this.nombre = this.abogado.nombre;\n this.apellido = this.abogado.apellido;\n if (this.caso && this.caso.especialidad && this.caso.especialidad.nombre) {\n this.especialidadParaMostrar = this.especialidadService.match(\n this.caso.especialidad.nombre,\n this.abogado\n );\n if (this.especialidadParaMostrar.length > 2) {\n this.mostrar = true;\n }\n } else {\n this.caso = JSON.parse(localStorage.getItem('caso'));\n if (this.caso && this.caso.especialidad) {\n this.especialidadParaMostrar = this.especialidadService.match(\n this.caso.especialidad.nombre,\n this.abogado\n );\n } else {\n let aux: string = '';\n console.log(this.abogado);\n this.abogado.datosProfesionales[0].especialidadesAbogados.map(\n (especialidad) => {\n aux = aux + especialidad.nombre + ', ';\n }\n );\n this.especialidadParaMostrar = aux.substring(0, aux.length - 2);\n }\n if (this.especialidadParaMostrar.length > 2) {\n this.mostrar = true;\n }\n }\n\n let userData = JSON.parse(localStorage.user);\n this.countryId = userData.pais;\n this.rolId = userData.rol?.id;\n }\n\n \n\n private generateStars() {\n let baseStar =\n 'star_outline star_outline star_outline star_outline star_outline';\n for (let i = 1; i <= this.abogado.puntuacionFinal; i++) {\n baseStar = baseStar.replace('star_outline', 'star');\n }\n this.stars = baseStar;\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n navegar() {\n if (this.titulo != undefined) {\n this.datos.abogado = this.abogado;\n this.datos.id_caso = this.id_caso;\n this.datos.caso = this.caso;\n this.datos.tieneFoto = this.tieneFoto;\n this.router.navigateByUrl('/seleccion/datos', { state: this.datos });\n }\n }\n}\n","\n

{{ \"opinion.puntuacion\" | translate }}

\n
\n {{\n puntuacionPropia.puntuacion\n }}\n
\n {{ puntuacionPropia.estrellas }}\n {{ cantOpiniones }}\n {{ \"opinion.opiniones\" | translate }}\n
\n
\n

{{ \"opinion.opiClientes\" | translate }}

\n
\n
\n \n \n
\n
\n {{ opinion.usuarioCreador.nombre }}\n {{ opinion.usuarioCreador.apellido }}\n \n \n {{ opinion.estrellas }}\n \n
\n {{ opinion.comentario }}\n
\n
\n
\n
\n","import { Component, OnInit, Input } from '@angular/core';\nimport { Opiniones } from '../../../api/user';\nimport { PuntuacionesService } from '../../../services/puntuaciones.service';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-opiniones',\n templateUrl: './opiniones.component.html',\n styleUrls: ['./opiniones.component.css'],\n})\nexport class OpinionesComponent implements OnInit {\n @Input() opiniones: Opiniones;\n @Input() datosPerfil: any;\n\n puntuacionPropia = {\n puntuacion: 4.5,\n estrellas: '',\n };\n cantOpiniones: number = 0;\n constructor(\n private puntuacionesService: PuntuacionesService,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n ngOnInit(): void {\n if (this.datosPerfil) {\n this.puntuacionPropia.puntuacion = this.datosPerfil.puntuacionFinal;\n this.cantOpiniones = this.datosPerfil.cantOpiniones;\n }\n this.puntuacionesService.crearEstrellasMapeando(this.opiniones);\n this.puntuacionesService.crearEstrellasIndividual(this.puntuacionPropia);\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n}\n","
\n \n \n\n
\n
\n

{{ \"baja.title\" | translate }}

\n

\n error_outline\n \n

\n
\n \n
\n\n \n \n

{{ motivo.descripcion }}

\n \n
\n\n \n\n
\n \n {{ \"editarEsp.confirmar\" | translate }}\n \n
\n\n
","import { Component, OnInit, Input, Inject } from '@angular/core';\nimport { Planes } from '../../../../api/planes';\nimport {\n BajaInput,\n Especialidad,\n Jurisdiccion,\n JurisdiccionCheckBox,\n MotivoBaja,\n Perfil,\n} from '../../../../api/user';\nimport { PlanService } from '../../../../services/plan/plan.service';\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from '@angular/material/dialog';\nimport { ApiService } from '../../../../api/api.service';\nimport { RoleNumber } from '../../../../enums/role';\nimport { LogOutService } from 'src/app/services/logOut/log-out.service';\n\n@Component({\n selector: 'app-popup-baja',\n templateUrl: './popup-baja.component.html',\n styleUrls: ['./popup-baja.component.css'],\n})\nexport class PopupBajaComponent implements OnInit {\n\n perfil: Perfil;\n plan: Planes;\n labelPosition = 'before';\n motivosBaja:MotivoBaja[];\n motivo:MotivoBaja;\n cantidadMotivosSeleccionadas=0;\n desactivarBoton=false;\n clase:String;\n constructor(private logOut: LogOutService,\n private planService: PlanService,\n public dialog: MatDialog,\n private apiService: ApiService,\n @Inject(MAT_DIALOG_DATA) public data: any\n ) {}\n \n ngOnInit(): void {\n this.getMiPerfil();\n this.getMotivos();\n this.plan = this.data.plan;\n }\n\n getMiPerfil() {\n this.apiService.getPerfil().subscribe(\n (perfil) => {\n this.perfil = perfil;\n\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n\n getMotivos() {\n this.apiService.getMotivosBaja().subscribe(\n (motivos) => {\n this.motivosBaja = motivos;\n },\n (error) => {}\n );\n }\n\n cambiarMotivo(motivo: MotivoBaja) {\n this.motivo =motivo;\n this.motivosBaja.forEach((element) => {\n if (element.id === motivo.id) {\n element.selected = !element.selected;\n }\n });\n this.cantidadMotivosSeleccionadas = 0;\n this.motivosBaja.forEach((element) => {\n if (element.selected == true) {\n this.cantidadMotivosSeleccionadas++;\n }\n });\n this.botonDisabled();\n }\n\n botonDisabled() {\n\n let motivosValidas: boolean =\n this.cantidadMotivosSeleccionadas>= 1 ;\n\n this.desactivarBoton = !motivosValidas;\n }\n\n onSubmitBaja(){\n\n let baja:BajaInput ={id:this.perfil.id_usuario,estado:\"B\",motivoBaja:this.motivo.id} \n this.apiService.baja(baja).subscribe(\n (response) => {\n \n this.cerrarSesion();\n \n },\n (error) => {}\n );\n }\n\n changeClass(change: boolean) {\n if (change) {\n this.clase = 'scrooleable';\n } else {\n this.clase = 'scrooleableHidden';\n }\n }\n\n cerrarSesion() {\n this.logOut.BajaCuenta();\n }\n \n \n\n}","import { Component, OnInit, Inject } from '@angular/core';\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from '@angular/material/dialog';\nimport { Tipo } from '../../../../interfaces/modal';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'dialog-content-example-dialog',\n templateUrl: 'dialog-content-example-dialog.html',\n styleUrls: ['./dialog.component.css'],\n})\nexport class DialogComponent {\n constructor(\n public dialog: MatDialog,\n public translate: TranslateService,\n @Inject(MAT_DIALOG_DATA) public data: Tipo\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang('es-AR');\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n}\n","{{\n planNombre\n}}\n
\n {{plan.moneda ? plan.moneda : '$'}} {{ planPrecio }}\n \n \n / {{ \"planDescripcion.mes\" | translate }}\n {{plan.monedaAnual ? plan.monedaAnual : '$'}} {{ planPrecio }}\n \n \n / {{ \"planDescripcion.año\" | translate }}\n
\n{{\n \"planDescripcion.prueba\" | translate\n}}\n
\n{{\n \"planDescripcion.incluye\" | translate\n}}\n
\n \n done\n {{ \"planDescripcion.match\" | translate }}\n \n \n \n done\n 0 && plan.especialidades<9998\">\n {{ plan.especialidades }}  {{ \"plan.especialidades\" | translate }}\n \n 9998\">\n {{ \"plan.especialidadesilim\" | translate }}\n \n \n \n \n \n done\n 0 && plan.jurisdicciones<9998\">\n {{ plan.jurisdicciones }}  {{ \"plan.jurisdicciones\" | translate }}\n \n 9998\">\n {{ \"plan.jurisdiccionessilim\" | translate }}\n \n \n \n done\n {{ \"planDescripcion.agenda\" | translate }}\n \n \n \n done\n {{ \"planDescripcion.llamada\" | translate }}\n \n \n
\n","
\n

{{data.titulo}}

\n
\n\n\n

{{\"planPreguntas.pregunta1\" | translate}}

\n
    \n
  1. {{data.uno}}
  2. \n
  3. {{data.dos}}
  4. \n
  5. {{data.tres}}
  6. \n
  7. {{data.cuatro}}
  8. \n
\n

{{\"planPreguntas.pregunta2\" | translate}}

\n {{data.paga}}\n {{\"planPreguntas.terminos\" | translate}}\n
\n
\n \n
\n","import { Component, OnInit, Input } from '@angular/core';\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from '@angular/material/dialog';\nimport { DialogComponent } from '../modal/dialog.component';\nimport { Tipo } from '../../../../interfaces/modal';\nimport { PlanesConvertidos } from '../../../../api/planes';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Suscripcion } from 'src/app/components/admin/multipago/modules/multipago.model';\n\n@Component({\n selector: 'app-detalle',\n templateUrl: './detalle.component.html',\n styleUrls: ['./detalle.component.css'],\n})\nexport class DetalleComponent implements OnInit {\n @Input('planPrecio') planPrecio: number;\n @Input('planNombre') planNombre: string;\n @Input('plan') plan: any;\n @Input('planContratado') planContratado: any;\n @Input('mostrarAyuda') mostrarAyuda: boolean;\n @Input('anual') anual: boolean;\n @Input('suscripcion') suscripcion:Suscripcion;\n\n datos = [\n {\n tipo: 1,\n titulo: 'Match con casos de tu interés',\n uno: 'Legalify detectará casos que hagan match con las especialidades y jurisdicciones que seleccionaste',\n dos: 'Cada vez que haya un match, Legalify te notificará sobre la oportunidad mediante e-mail ',\n tres: 'En la sección de “Oportunidades” podrás leer el caso y seleccionar si te interesa o no.',\n cuatro:\n 'Si te interesa, el cliente podrá contactarte por e-mail. El cliente solo visualizará los 3 primeros abogados que hayan mostrado interés en su caso, así que si te interesa ¡no tardes en mostrar interés!',\n paga: 'En esta modalidad, tanto las tarifas como las condiciones de la consulta serán acordadas por el cliente y el abogado por fuera de Legalify. Para más información podes visitar nuestros',\n },\n {\n tipo: 2,\n titulo: 'Agenda para citas pagas',\n uno: 'Los abogados configurarán la disponibilidad de su agenda a través de rangos horarios.',\n dos: 'Cuando un cliente cree un caso y seleccione la opción de “Agendar Cita”, podrá visualizar tu disponibilidad',\n tres: 'Si el cliente decide agendar una cita con el abogado, primero deberá pagar la consulta dentro de Legalify. (Utilizando Mercado Pago) En esta modalidad, el precio lo pone Legalify',\n cuatro:\n 'En ese momento, Legalify le notificará al abogado que tiene una cita agendada y le brindará los datos del cliente para que coordinen el medio por el cual tendrán la consulta',\n paga: 'A fin de mes, Legalify le paga al abogado $1400 por cada consulta realizada. Es por eso que para que los abogados puedan utilizar este servicio, deben vincular su cuenta de Legalify a una cuenta de Mercado Pago para poder recibir los pagos de Legalify. Esto deben hacerlo en la sección de Perfil. Para más información podes visitar nuestros',\n },\n {\n tipo: 3,\n titulo: 'Llamada express',\n uno: 'Los abogados configurarán su disponibilidad para atender llamados a través de rangos horarios.',\n dos: 'Cuando un cliente cree un caso y seleccione la opción de “Llamada Express”, podrá visualizar a los abogados que coincidan con el horarios en el que se está creando el caso',\n tres: 'Si el cliente decide contactar al abogado, primero deberá pagar la consulta dentro de Legalify. (Utilizando Mercado Pago) En esta modalidad, el precio lo pone Legalify',\n cuatro:\n 'En ese momento, Legalify le notificará al abogado que tiene una consulta paga y que el cliente lo estára contactando.',\n paga: 'A fin de mes, Legalify le paga al abogado $3000 por cada consulta realizada. Es por eso que para que los abogados puedan utilizar este servicio, deben vincular su cuenta de Legalify a una cuenta de Mercado Pago para poder recibir los pagos de Legalify. Esto deben hacerlo en la sección de Perfil. Para más información podes visitar nuestros',\n },\n ];\n\n textoEspecialidades = '1 especialidad';\n textoJurisdicciones = '1 jurisdicción';\n constructor(public dialog: MatDialog, public translate: TranslateService) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n \n }\n\n ngOnInit(): void {\n let especialidades: number = 0;\n let jurisdicciones: number = 0;\n switch(this.planNombre){\n case \"Plan Basico\":\n especialidades = 1;\n jurisdicciones = 1;\n break;\n case \"Plan Premium\":\n especialidades = 3;\n jurisdicciones = 2;\n break;\n case \"Plan Corporativo\":\n especialidades = 9999;\n jurisdicciones = 9999;\n break;\n }\n this.plan.planVencido = false\n if (especialidades > 1) {\n this.textoEspecialidades = especialidades + ' especialidades';\n }\n if (especialidades > 9998) {\n this.textoEspecialidades = 'Especialidades ilimitadas';\n }\n if (jurisdicciones > 1) {\n this.textoJurisdicciones = jurisdicciones + ' jurisdicciones';\n }\n if (jurisdicciones > 9998) {\n this.textoJurisdicciones = 'Jurisdicciones ilimitadas';\n }\n\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n ayuda(tipo: number) {\n this.dialog.open(DialogComponent, {\n width: '600px',\n data: {\n tipo: tipo,\n titulo: this.datos[tipo - 1].titulo,\n uno: this.datos[tipo - 1].uno,\n dos: this.datos[tipo - 1].dos,\n tres: this.datos[tipo - 1].tres,\n cuatro: this.datos[tipo - 1].cuatro,\n paga: this.datos[tipo - 1].paga,\n },\n backdropClass: 'backdropBackground',\n });\n }\n}\n","
\n
\n {{ textoSubscripcion }}\n
\n \n
\n
\n \n
\n

\n \n {{ 'perfilAbogado.camPlan' | translate }}\n \n
\n \n {{ 'perfilAbogado.canSusc' | translate }}\n \n \n\n\n
\n
\n\n
\n
\n Su Plan se encuentra inactivo por falta de pago,debe regularizar el proceso.\n
\n \n
\n
\n \n
\n

\n
\n \n CONTRATAR PLAN\n \n
\n\n
\n
\n\n\n\n\n
\n
\n error_outlined\n

{{ 'perfilAbogado.sinplantitulo' | translate }}

\n

\n {{ 'perfilAbogado.sinplanmsg' | translate }}\n

\n
\n
\n \n {{ 'perfilAbogado.sinplanbutc' | translate }}\n \n
\n
\n\n\n {{ 'perfilAbogado.sinplanbutb' | translate }}\n \n","import { Component, OnInit, Input } from '@angular/core';\nimport { Planes, PlanesIncrease, StatusIncrease } from 'src/app/api/planes';\nimport { PopupBajaComponent } from './../plan/popup-baja/popup-baja.component';\nimport { MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { CuentaMercado } from 'src/app/api/mercado';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Suscripcion } from '../../admin/multipago/modules/multipago.model';\n@Component({\n selector: 'app-plan-en-perfil',\n templateUrl: './plan-en-perfil.component.html',\n styleUrls: ['./plan-en-perfil.component.css'],\n})\nexport class PlanEnPerfilComponent implements OnInit {\n \n _plan: StatusIncrease[\"suscripcion\"] | Planes;\n _suscripcion: Suscripcion;\n @Input('cuenta') cuenta:CuentaMercado;\n //@Input('plan') plan: StatusIncrease[\"suscripcion\"] | Planes;\n @Input('textoSubscripcion') textoSubscripcion: string;\n //@Input('suscripcion') suscripcion: Suscripcion;\n\n language:String=\"\";\n constructor(public dialog: MatDialog,public translate: TranslateService) {\n this.language=sessionStorage.getItem('language');\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n ngOnInit(): void {\n }\n\n get plan(): any {\n return this._plan;\n }\n\n @Input('plan')\n set plan(value: any) {\n this._plan = value;\n this.doUpdateCostos();\n }\n\n get suscripcion(): any {\n return this._suscripcion;\n }\n\n @Input('suscripcion')\n set suscripcion(value: any) {\n this._suscripcion = value;\n this.doUpdateCostos();\n }\n\n doUpdateCostos(): void {\n if (this.plan && this.suscripcion) {\n if (this.suscripcion.planPlataformaCiclo == 1) {\n this.plan.costo = this.suscripcion.monto;\n this.plan.moneda = this.suscripcion.monedaId;\n } else if (this.suscripcion.planPlataformaCiclo == 2) {\n this.plan.costoAnual = this.suscripcion.monto;\n this.plan.monedaAnual = this.suscripcion.monedaId;\n }\n }\n }\n \n switchLang(lang: string) {\n sessionStorage.setItem('language',lang);\n this.language = lang;\n this.translate.use(lang);\n }\n\n baja(){\n\n const dialogRef = this.dialog.open(PopupBajaComponent, {\n width: '400px',\n data: {\n plan: this.plan,\n downgrade: false,\n },\n backdropClass: 'backdropBackground',\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n \n }\n });\n\n }\n}\n","
\n
\n \n \n
\n \n \n
\n
\n
\n \n \n
\n \n \n \n \n
\n
\n \n \n
\n
\n \n {{ nombre }} {{ apellido }}\n
\n

{{ \"perfilAbogado.bio\" | translate }}

\n
\n

{{ descripcion }}


\n  \n info\n \n
\n
\n\n
\n
\n \n \n {{ \"registroAbogado.sign_remember_title\" | translate }}\n \n

{{ \"registroAbogado.sign_remember_content\" | translate }}

\n \n
\n
\n
\n
\n \n \n \n \n {{ \"perfilAbogado.editarBio\" | translate }}\n \n
\n
\n \n \n \n \n {{ \"perfilAbogado.guardarbio\" | translate }}\n \n
\n
\n
\n \n

{{ \"agregar.jurisdiccion\" | translate }}

\n
\n {{\n \"perfilAbogado.pendienteV\" | translate\n }}\n
\n
\n \n place{{ dato.jurisdiccionNombre }} \n \n
\n \n Tomo: {{ dato.tomo }} Folio:\n {{ dato.folio }} \n \n Colegio:{{dato.colegio}} Matricula:{{ dato.otro }}\n
\n
\n \n place\n {{ dato.jurisdiccionNombre }}\n \n
\n\n \n Tomo: {{ dato.tomo }} Folio:\n {{ dato.folio }} \n \n Colegio:{{dato.colegio}} Matricula:{{ dato.otro }}\n
\n
\n \n edit_outline \n \n \n \n \n \n
\n
\n
\n
\n \n {{ \"perfilAbogado.agregarJur\" | translate }}\n \n
\n
\n\n \n

{{ \"perfilAbogado.especialidades\" | translate }}

\n
\n
\n \n \n
{{ especialidad }}
\n \n \n \n
\n
\n
\n \n \n
\n {{ especialidad }}\n
\n \n \n \n
\n
\n

\n
\n \n {{ \"perfilAbogado.agregarEspe\" | translate }}\n \n
\n
\n\n \n

{{ \"perfilAbogado.datosPer\" | translate }}

\n
\n
\n
\n
\n \n {{\n \"perfilAbogado.nombre\" | translate\n }}\n

{{ nombre }}

\n
\n \n \n {{\n \"perfilAbogado.apellido\" | translate\n }}\n

{{ apellido }}

\n
\n
\n
\n \n {{ \"perfilAbogado.correo\" | translate }}\n

{{ mail }}

\n
\n
\n
\n \n {{\n \"perfilAbogado.nombre\" | translate\n }}\n

{{ nombre }}

\n
\n \n \n {{\n \"perfilAbogado.apellido\" | translate\n }}\n

{{ apellido }}

\n
\n \n \n {{\n \"perfilAbogado.correo\" | translate\n }}\n

{{ mail }}

\n
\n
\n
\n
\n
\n \n {{\n \"perfilAbogado.celular\" | translate\n }}\n

{{ telefono }}

\n
\n \n {{\n perfil.datosProfesionales[0].tipoDni\n }}\n

{{ numeroDni }}

\n
\n
\n \n {{\n \"perfilAbogado.provincia\" | translate\n }}\n

{{ perfil.provincia }}

\n
\n \n \n {{\n \"perfilAbogado.localidad\" | translate\n }}\n

{{ perfil.ciudad }}

\n
\n\n
\n
\n \n {{\n \"perfilAbogado.domicilio\" | translate\n }}\n

{{ direccion }}

\n
\n \n {{\n \"perfilAbogado.codigo\" | translate\n }}\n

{{ codigoPostal }}

\n
\n \n {{\n paisConfigCuit?.sdesc\n }}\n

{{ cuit }}

\n
\n
\n \n
\n
\n \n \n Promocion\n \n

{{ promocion }}

\n
\n
\n\n
\n \n {{\n \"registroAbogado.otro\" | translate\n }}\n

{{ otro }}

\n
\n \n \n \n \n \n \n
\n\n
\n \n {{ \"perfilAbogado.editarDet\" | translate }}\n \n
\n
\n\n
\n \n {{\n \"perfilAbogado.nombre\" | translate\n }}\n \n \n \n {{\n \"perfilAbogado.apellido\" | translate\n }}\n \n \n \n {{\n \"perfilAbogado.correo\" | translate\n }}\n \n \n \n {{\n \"perfilAbogado.celular\" | translate\n }}\n \n \n\n \n {{ \"registroAbogado.tipoIdenti\" | translate }}\n \n {{ identificacion.nombre }}\n \n \n\n\n \n \n {{\n \"registroAbogado.nroDocumento\" | translate\n }}\n \n \n\n
\n Residencia\n \n {{ perfil.provincia }}\n \n \n {{ provincia.nombre }}\n \n \n \n\n \n {{ perfil.ciudad }}\n \n {{ localidad.nombre }}\n \n \n\n \n {{\n \"perfilAbogado.domicilio\" | translate\n }}\n \n \n\n \n {{\n \"perfilAbogado.codigo\" | translate\n }}\n \n \n\n \n {{\n paisConfigCuit.sdesc\n }}\n \n \n \n \n Promocion\n \n \n \n\n
\n \n {{ \"perfilAbogado.guardarDet\" | translate }}\n \n
\n
\n
\n\n \n\n \n

{{ \"perfilAbogado.agenda\" | translate }}

\n
\n
\n
\n error_outlined\n

Plan sin Agendas

\n

\n Contrata un plan PREMIUM o CORPORATIVO
\n Para habilitar esta caracteristica.\n

\n
\n
\n
\n \n

{{ \"perfilAbogado.agenda\" | translate }}

\n
\n
\n \n
\n
\n {{ dia.nombre }}\n \n
\n
\n
\n
\n \n \n \n \n \n \n \n \n {{\n \"perfilAbogado.horaIn\" | translate\n }}\n \n \n {{ range.viewValue }}\n \n \n \n\n \n {{\n \"perfilAbogado.horaFin\" | translate\n }}\n \n \n {{ range.viewValue }}\n \n \n \n \n \n \n \n \n {{ \"perfilAbogado.agregarRan\" | translate }}\n \n \n {{ \"perfilAbogado.guardarHorario\" | translate }}\n \n \n
\n
\n
\n
\n \n
\n
\n\n \n

{{ \"perfilAbogado.llamada\" | translate }}

\n
\n
\n
\n error_outlined\n

Plan sin llamadas

\n

\n Contrata un plan PREMIUM o CORPORATIVO
\n Para habilitar esta caracteristica.\n

\n
\n
\n
\n \n

{{ \"perfilAbogado.llamada\" | translate }}

\n
\n
\n \n
\n
\n {{ dia.nombre }}\n \n
\n
\n
\n \n \n {{\n dia.inicioString\n ? dia.inicioString\n : \"No hay horario\"\n }}\n \n \n \n {{\n dia.modificar ? hour.viewValue : dia.inicioString\n }}\n \n \n \n \n {{\n dia.finString ? dia.finString : \"No hay horario\"\n }}\n \n \n \n {{ dia.modificar ? hour.viewValue : dia.finString }}\n \n \n \n\n \n \n \n \n
\n \n Guardar este día\n \n
\n
\n \n
\n
\n\n \n

{{ \"perfilAbogado.plan\" | translate }}

\n \n
\n
\n \n\n \n\n \n \n {{ \"perfilAbogado.cerrar\" | translate }}\n \n \n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { Especialidad, Identificacion, JurisdiccionEditarVer, Perfil } from '../../../api/user';\nimport { Rango, RangoConId } from '../../../api/horarios';\nimport { ApiService } from '../../../api/api.service';\nimport {\n UntypedFormArray,\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators,\n UntypedFormControl,\n AbstractControl,\n FormControl,\n} from '@angular/forms';\nimport { environment } from '../../../../environments/environment';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { DialogComponent } from './dialog.component';\nimport { DialogVincularComponent } from './dialogvincular.component';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { JurisdiccionesAEliminar, Planes, StatusIncrease } from '../../../api/planes';\nimport { Puntuacion } from '../../../interfaces/Puntuacion';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { PlanService } from '../../../services/plan/plan.service';\nimport { PuntuacionesService } from '../../../services/puntuaciones.service';\nimport { LogOutService } from '../../../services/logOut/log-out.service';\nimport { TiempoSubscripcionService } from '../../../services/tiempoSubscripcion/tiempo-subscripcion.service';\nimport { Jurisdiccion, Localidad } from '../../../api/user';\nimport { PopupDowngradeComponent } from '../plan/popup-downgrade/popup-downgrade.component';\nimport { UpdateRangesService } from '../../../services/agenda/update-ranges.service';\nimport { ContadorJurisdiccionesService } from '../../../services/contadorJurisdicciones/contador-jurisdicciones.service';\nimport { CancelarComponent } from '../plan/cancelar/cancelar/cancelar.component';\nimport { LangChangeEvent, TranslateService } from '@ngx-translate/core';\nimport { CuentaMercado } from 'src/app/api/mercado';\nimport { PopupFacturacionComponent } from '../plan/popup-facturacion/popup-facturacion.component';\nimport { Certificacion } from 'src/app/api/certificacion';\nimport { Respuesta } from 'src/app/api/respuesta';\nimport { MPVinculacion, Suscripcion } from '../../admin/multipago/modules/multipago.model';\nimport { PlanMultipagoService } from 'src/app/services/plan/plan-multipago.service';\nimport { PaisConfig, PAISCONFIG_KEY_CUIT } from 'src/app/api/pais';\n\nclass RangeHour {\n value: string;\n viewValue: string;\n \n\n constructor(value: string, viewValue: string) {\n this.value = value;\n this.viewValue = viewValue;\n }\n}\n\nclass ProductFormArray {\n productForm: UntypedFormGroup;\n dia: number;\n\n constructor(dia: number, productForm: UntypedFormGroup) {\n this.dia = dia;\n this.productForm = productForm;\n }\n}\n\n@Component({\n selector: 'app-perfil-abogado',\n templateUrl: './perfil-abogado.component.html',\n styleUrls: ['./perfil-abogado.component.css'],\n})\nexport class PerfilAbogadoComponent implements OnInit {\n language:String=\"\";\n planI: StatusIncrease[\"suscripcion\"];\n diasAgenda=[];\n diasLlamada = [];\n suscripcionSel: Suscripcion;\n planSel: Planes;\n\n isChecked = true;\n hide = true;\n formGroup: UntypedFormGroup;\n cuenta:CuentaMercado;\n planApto = false;\n cuentaVinculada = false;\n planNombre: string;\n tags = ['', ''];\n \n identificaciones: Identificacion[];\n\n name = 'Angular';\n\n productForm: UntypedFormGroup;\n masHorarios: UntypedFormGroup;\n\n productFormArray: ProductFormArray[];\n\n duraciones: number[] = [30, 60, 90];\n duracionLlamada: number;\n duracionAgenda: number;\n\n initRangeHours: RangeHour[] = [];\n endRangeHours: RangeHour[] = [];\n\n lst: number[];\n\n initRangeHoursTemp: { [id: string]: RangeHour[] } = {};\n endtRangeHoursTemp: { [id: string]: RangeHour[] } = {};\n\n userId: number;\n textoSubscripcion: string;\n\n provinciasResidencias: Jurisdiccion[];\n localidadesResidencias: Localidad[];\n cacheVinculaciones: MPVinculacion[] = [];\n certified;\n cert_requested=false;\n otro:string='';\n\n paisConfigCuit: PaisConfig;\n cuitOldVal: string = \"\";\n\n constructor(\n private logOut: LogOutService,\n private planService: PlanService,\n private puntuacionesService: PuntuacionesService,\n private _snackBar: MatSnackBar,\n private fb: UntypedFormBuilder,\n private route: ActivatedRoute,\n private router: Router,\n public dialog: MatDialog,\n private apiService: ApiService,\n formBuilder: UntypedFormBuilder,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n public tiempoSubscripcionService: TiempoSubscripcionService,\n private updateRangesService: UpdateRangesService,\n private contadorJurisdiccionesService: ContadorJurisdiccionesService,\n private servicePlanMP: PlanMultipagoService,\n public translate: TranslateService\n ) {\n this.language=sessionStorage.getItem('language');\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n if(sessionStorage.getItem('language')==null){\n translate.setDefaultLang('es-AR');\n sessionStorage.setItem('language','es-AR');\n }\n else{\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n this.matIconRegistry.addSvgIcon(\n `borrar`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/garbage.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `basico`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../assets/basico.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `premium`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../assets/premium.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `corporativo`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../assets/corporativo.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho Laboral`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/Laboral.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho de Familia y Sucesiones`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/individuos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho Comercial`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/comercial.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Contratos`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/contratos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho del Consumidor`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/defensa.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho Tributario`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/impuestos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Inmobiliario y Propiedad Horizontal`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/inmobiliaria.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Otros`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/otros.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho Penal`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/penal.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Sucesiones y herencias`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/sucesiones.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho Previsional`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/previsional.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho Digital Internet y Tecnología`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/digital.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Daños y Perjuicios`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/perjuicios.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho de Sociedades y Corporativo`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/societario.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Accidentes de tránsito`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/accidentes.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Propiedad Industrial e Intelectual`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/propiedad.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Mala Praxis y Salud`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/mala.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Discriminación y violencia de género`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/discriminacion.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `ayuda`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/ayuda.svg'\n )\n );\n\n this.matIconRegistry.addSvgIcon(\n `Derecho Administrativo y Regulación Económica`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/administrativo.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho Migratorio`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/derecho-migratorio.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho Civil`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/derecho-civil.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho Ambiental`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/derecho ambiental.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Concursos y Quiebras`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/quiebras.svg'\n )\n );\n\n this.matIconRegistry.addSvgIcon(\n `Derecho Aduanero y Comercio Exterior`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/aduanero.svg'\n )\n );\n\n this.matIconRegistry.addSvgIcon(\n `perfil`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/perfil.svg'\n )\n );\n\n this.formGroup = formBuilder.group({\n activado: false,\n inicio: new UntypedFormControl('', [Validators.max(24), Validators.min(0)]),\n fin: new UntypedFormControl('', [Validators.max(24), Validators.min(0)]),\n duracionLlamada: Number,\n duracionAgenda: Number,\n });\n\n this.masHorarios = this.fb.group({\n name: '',\n horariosLista: this.fb.array([]),\n });\n\n this.productForm = this.fb.group({\n name: '',\n quantities: this.fb.array([]),\n });\n\n this.productFormArray = [];\n\n for (let i = 0; i < 7; i++) {\n var a = new ProductFormArray(\n i,\n this.fb.group({\n name: '',\n quantities: this.fb.array([]),\n })\n );\n\n this.productFormArray.push(a);\n }\n\n for (let i = 0; i < 24; i++) {\n var strHour: String;\n strHour = i < 10 ? '0' + i + ':' : i + ':';\n this.initRangeHours.push(new RangeHour(strHour + '00', strHour + '00'));\n this.initRangeHours.push(new RangeHour(strHour + '30', strHour + '30'));\n }\n\n \n\n \n }\n\n ngOnInit(): void {\n this.route.queryParams.subscribe(params => {\n if (params?.jurisdiccion == 1) {\n this.actualizarJurisdicciones = true;\n }\n });\n\n this.getSuscripcion();\n this.planService.verificoDatosFacturacion();\n localStorage.removeItem('caso');\n this.crearHorarios();\n this.datosJurisdiccion = [];\n this.tags = [];\n this.obtenerHorariosLlamada();\n this.getMiPerfil();\n this.getPuntuaciones();\n this.datosAux.jurisdiccionNombre = '';\n this.datosAux.localidadNombre = '';\n this.datosAux.pais = '';\n this.datosAux.tomo = '';\n this.datosAux.folio = '';\n this.getProvinciaResidencia();\n this.getCuenta();\n this.getIdentificaciones();\n this.initTranslateComponent();\n this.translate.onLangChange.subscribe((event: LangChangeEvent) => {\n this.initTranslateComponent();\n });\n\n this.servicePlanMP.getAbogadoVinculaciones().subscribe({\n next: (vinculaciones: MPVinculacion[]) => {\n this.cacheVinculaciones = vinculaciones;\n }\n });\n\n this.doPaisConfigCuitLoad();\n }\n\n doPaisConfigCuitLoad(): void {\n let countryId = JSON.parse(localStorage.getItem('user')).pais;\n\n this.apiService.getPaisConfig(countryId, PAISCONFIG_KEY_CUIT).subscribe({\n next: (paisConfigCuit: PaisConfig) => {\n console.log(`CUIT configuracion: ${countryId} - ${PAISCONFIG_KEY_CUIT}`);\n console.log(paisConfigCuit);\n this.setPaisConfigCuit(paisConfigCuit);\n }\n });\n }\n\n setPaisConfigCuit(cuit: PaisConfig): void {\n let validators = [];\n let controlCuit: AbstractControl;\n\n if (cuit && cuit.bvisible) {\n if (cuit.bobligatorio)\n validators.push(Validators.required);\n if (cuit.svalor01)\n validators.push(Validators.pattern(cuit.svalor01));\n }\n\n controlCuit = this.cambiarDatos.get(\"cuit\");\n controlCuit.setValidators(validators);\n controlCuit.updateValueAndValidity();\n this.paisConfigCuit = cuit;\n this.cuitOldVal = this.cambiarDatos.getRawValue().cuit;\n }\n\n certify(){\n\n let respuestas:Respuesta[] =[];\n\n let dto= new Certificacion(this.mail,\"Certificacion\",\"\",respuestas);\n this.apiService.certification(dto).subscribe(preg => {\n this.openSnackBar(\"Revise su bandeja de correo para la firma del manifiesto\");\n this.getMiPerfil();\n },\n error => {\n console.error(error);\n this.openSnackBar(\"Estamos trabajando para mejorar el servicio, por favor intente nuevamente más tarde\");\n });\n\n\n }\n\n initTranslateComponent(){\n\n this.translate.get(['']).subscribe(translations => {\n this.diasAgenda = [\n {\n dia: 2,\n nombre:this.translate.instant('perfilAbogado.lunes'),\n activado: false,\n inicio: 0,\n fin: 0,\n id_rango_horario: 0,\n endHourButton: true,\n rangeHour: 0,\n addRange: false,\n addRanges: false,\n },\n {\n dia: 3,\n nombre: this.translate.instant('perfilAbogado.martes'),\n activado: false,\n inicio: 0,\n fin: 0,\n id_rango_horario: 0,\n endHourButton: true,\n rangeHour: 1,\n addRange: false,\n addRanges: false,\n },\n {\n dia: 4,\n nombre: this.translate.instant('perfilAbogado.miercoles'),\n activado: false,\n inicio: 0,\n fin: 0,\n id_rango_horario: 0,\n endHourButton: true,\n rangeHour: 2,\n addRange: false,\n addRanges: false,\n },\n {\n dia: 5,\n nombre: this.translate.instant('perfilAbogado.jueves'),\n activado: false,\n inicio: 0,\n fin: 0,\n id_rango_horario: 0,\n endHourButton: true,\n rangeHour: 3,\n addRange: false,\n addRanges: false,\n },\n {\n dia: 6,\n nombre: this.translate.instant('perfilAbogado.viernes'),\n activado: false,\n inicio: 0,\n fin: 0,\n id_rango_horario: 0,\n endHourButton: true,\n rangeHour: 4,\n addRange: false,\n addRanges: false,\n },\n {\n dia: 7,\n nombre: this.translate.instant('perfilAbogado.sabado'),\n activado: false,\n inicio: 0,\n fin: 0,\n id_rango_horario: 0,\n endHourButton: true,\n rangeHour: 5,\n addRange: false,\n addRanges: false,\n },\n {\n dia: 1,\n nombre: this.translate.instant('perfilAbogado.domingo'),\n activado: false,\n inicio: 0,\n fin: 0,\n id_rango_horario: 0,\n endHourButton: true,\n rangeHour: 6,\n addRange: false,\n addRanges: false,\n },\n ];\n\n this.diasLlamada = [\n {\n dia: 1,\n nombre: this.translate.instant('perfilAbogado.lunes'),\n activado: false,\n inicio: 0,\n fin: 0,\n cargado: false,\n id_rango_horario: 0,\n inicioString: '',\n finString: '',\n modificar: false,\n borrado: false,\n },\n {\n dia: 2,\n nombre: this.translate.instant('perfilAbogado.martes'),\n activado: false,\n inicio: 0,\n fin: 0,\n cargado: false,\n id_rango_horario: 0,\n inicioString: '',\n finString: '',\n modificar: false,\n borrado: false,\n },\n {\n dia: 3,\n nombre: this.translate.instant('perfilAbogado.miercoles'),\n activado: false,\n inicio: 0,\n fin: 0,\n cargado: false,\n id_rango_horario: 0,\n inicioString: '',\n finString: '',\n modificar: false,\n borrado: false,\n },\n {\n dia: 4,\n nombre: this.translate.instant('perfilAbogado.jueves'),\n activado: false,\n inicio: 0,\n fin: 0,\n cargado: false,\n id_rango_horario: 0,\n inicioString: '',\n finString: '',\n modificar: false,\n borrado: false,\n },\n {\n dia: 5,\n nombre: this.translate.instant('perfilAbogado.viernes'),\n activado: false,\n inicio: 0,\n fin: 0,\n cargado: false,\n id_rango_horario: 0,\n inicioString: '',\n finString: '',\n modificar: false,\n borrado: false,\n },\n {\n dia: 6,\n nombre: this.translate.instant('perfilAbogado.sabado'),\n activado: false,\n inicio: 0,\n fin: 0,\n cargado: false,\n id_rango_horario: 0,\n inicioString: '',\n finString: '',\n modificar: false,\n borrado: false,\n },\n {\n dia: 7,\n nombre: this.translate.instant('perfilAbogado.domingo'),\n activado: false,\n inicio: 0,\n fin: 0,\n cargado: false,\n id_rango_horario: 0,\n inicioString: '',\n finString: '',\n modificar: false,\n borrado: false,\n },\n ];\n });\n\n \n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n\n quantities(index): UntypedFormArray {\n return this.productFormArray\n .find((x) => x.dia == index)\n .productForm.get('quantities') as UntypedFormArray;\n }\n\n newQuantity(): UntypedFormGroup {\n return this.fb.group({\n init: new UntypedFormControl('', [Validators.max(24), Validators.min(0)]),\n end: new UntypedFormControl('', [Validators.max(24), Validators.min(0)]),\n id: new String(),\n });\n }\n\n getIdentificaciones() {\n this.apiService.getIdentificacion().subscribe(\n (identificaciones) => {\n this.identificaciones = identificaciones;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n horariosLista(): UntypedFormArray {\n return this.masHorarios.get('horariosLista') as UntypedFormArray;\n }\n\n nuevosHorarios(): UntypedFormGroup {\n return this.fb.group({\n inicio: new UntypedFormControl('', [Validators.max(24), Validators.min(0)]),\n fin: new UntypedFormControl('', [Validators.max(24), Validators.min(0)]),\n });\n }\n\n agregarInput() {\n this.horariosLista().push(this.nuevosHorarios());\n }\n\n addQuantity(index) {\n this.diasAgenda.find((elemento) => elemento.rangeHour === index).addRange =\n true;\n\n this.enableRanges(index, true, false);\n\n var initRangeHours = this.calculateNewRange(index);\n\n var indexInitRange = 0;\n\n if (Object.keys(this.initRangeHoursTemp).length > 0) {\n indexInitRange = Object.entries(this.initRangeHoursTemp).filter(\n (x) => x[0].substring(0, 1) == index\n ).length;\n }\n\n this.initRangeHoursTemp[index.toString() + indexInitRange] = initRangeHours;\n\n this.enableRanges(index, false, true);\n\n this.quantities(index).push(this.newQuantity());\n }\n\n switchLang(lang: string) {\n sessionStorage.setItem('language',lang);\n this.language = lang;\n this.translate.use(lang);\n console.log(\"Switch lang\");\n this.initTranslateComponent();\n }\n\n loadNewInitRange(index) {\n this.diasAgenda.find((elemento) => elemento.rangeHour === index).addRange =\n true;\n\n this.enableRanges(index, true, false);\n\n var initRangeHours = this.calculateNewRange(index);\n\n var indexInitRange = 0;\n\n if (Object.keys(this.initRangeHoursTemp).length > 0) {\n indexInitRange =\n Object.entries(this.initRangeHoursTemp).filter(\n (x) => x[0].substring(0, 1) == index\n ).length - 1;\n }\n\n this.initRangeHoursTemp[index.toString() + indexInitRange] = initRangeHours;\n\n this.enableRanges(index, false, true);\n\n this.quantities(index).push(this.newQuantity());\n }\n\n removeQuantity(i, index) {\n var controlsScheduler = this.diasAgenda.find(\n (elemento) => elemento.rangeHour === index\n );\n controlsScheduler.addRange = false;\n\n var aux: boolean = false;\n\n var lastRemoveWithoutData: boolean = false;\n\n var quantities = this.productFormArray[index].productForm.controls\n .quantities as any;\n var control = quantities.controls[i].controls;\n if (control.id.value != '') {\n var idRange = control.id.value;\n\n this.apiService.removeRange(idRange).subscribe(\n (respuesta) => {},\n (error) => {\n this.openSnackBar('No fue posible guardar este rango');\n }\n );\n }\n\n this.quantities(index).removeAt(i);\n\n for (let it = 0; it < Object.keys(this.initRangeHoursTemp).length; it++) {\n if (it == i) {\n if (it + 1 == Object.keys(this.initRangeHoursTemp).length) {\n delete this.initRangeHoursTemp[index.toString() + it];\n delete this.endtRangeHoursTemp[index.toString() + it];\n lastRemoveWithoutData = true;\n break;\n } else {\n aux = true;\n this.initRangeHoursTemp[index.toString() + it] =\n this.initRangeHoursTemp[index.toString() + (it + 1)];\n this.endtRangeHoursTemp[index.toString() + it] =\n this.endtRangeHoursTemp[index.toString() + (it + 1)];\n }\n } else {\n if (\n it + 1 == Object.keys(this.initRangeHoursTemp).length ||\n this.initRangeHoursTemp[index.toString() + (it + 1)] == null\n ) {\n if (this.initRangeHoursTemp[index.toString() + it] == null) {\n delete this.initRangeHoursTemp[index.toString() + (it - 1)];\n delete this.endtRangeHoursTemp[index.toString() + (it - 1)];\n } else {\n delete this.initRangeHoursTemp[index.toString() + it];\n delete this.endtRangeHoursTemp[index.toString() + it];\n }\n break;\n }\n if (\n aux &&\n this.initRangeHoursTemp[index.toString() + (it + 1)] != null\n ) {\n this.initRangeHoursTemp[index.toString() + it] =\n this.initRangeHoursTemp[index.toString() + (it + 1)];\n this.endtRangeHoursTemp[index.toString() + it] =\n this.endtRangeHoursTemp[index.toString() + (it + 1)];\n }\n }\n }\n\n this.activeAddRanges(index);\n\n if (!lastRemoveWithoutData) {\n var indexLast = parseInt(\n Object.keys(this.initRangeHoursTemp)\n .map((x) => x)\n .reverse()[0]\n );\n\n this.enableRanges(index, true, false);\n\n var time = this.initRangeHoursTemp[\n index.toString() + indexLast\n ][0] as any;\n\n this.enableRanges(index, false, true);\n }\n }\n\n calculateNewRange(index) {\n var range = this.productFormArray[index].productForm.value.quantities;\n\n this.initRangeHours = [];\n for (let i = 0; i < 24; i++) {\n var strHour: String;\n strHour = i < 10 ? '0' + i + ':' : i + ':';\n\n if (range != null && range.length > 0) {\n var existIntervalZero = range.filter(\n (x) =>\n i * 60 >=\n parseInt(x.init.split(':')[0]) * 60 +\n parseInt(x.init.split(':')[1]) &&\n i * 60 <\n parseInt(x.end.split(':')[0]) * 60 + parseInt(x.end.split(':')[1])\n );\n\n var existIntervalMid = range.filter(\n (x) =>\n i * 60 + 30 >=\n parseInt(x.init.split(':')[0]) * 60 +\n parseInt(x.init.split(':')[1]) &&\n i * 60 + 30 <\n parseInt(x.end.split(':')[0]) * 60 + parseInt(x.end.split(':')[1])\n );\n\n if (existIntervalZero.length == 0)\n this.initRangeHours.push(\n new RangeHour(strHour + '00', strHour + '00')\n );\n if (existIntervalMid.length == 0)\n this.initRangeHours.push(\n new RangeHour(strHour + '30', strHour + '30')\n );\n } else {\n this.initRangeHours.push(new RangeHour(strHour + '00', strHour + '00'));\n this.initRangeHours.push(new RangeHour(strHour + '30', strHour + '30'));\n }\n }\n\n return this.initRangeHours;\n }\n\n onFormSubmitMasHorarios(index) {\n var controlsScheduler = this.diasAgenda.find(\n (elemento) => elemento.rangeHour === index\n );\n\n let diaSeleccionado = this.diasAgenda.find(\n (elemento) => elemento.rangeHour === index\n );\n var indexLast = parseInt(\n Object.keys(this.initRangeHoursTemp)\n .map((x) => x)\n .reverse()[0]\n );\n\n var quantities = this.productFormArray[index].productForm.controls\n .quantities as any;\n var time = quantities.controls[quantities.controls.length - 1].controls;\n diaSeleccionado.inicio =\n parseInt(time.init.value.split(':')[0]) * 60 +\n parseInt(time.init.value.split(':')[1]);\n diaSeleccionado.fin =\n parseInt(time.end.value.split(':')[0]) * 60 +\n parseInt(time.end.value.split(':')[1]);\n if (isNaN(diaSeleccionado.inicio) || isNaN(diaSeleccionado.fin)) {\n let text = '';\n if (isNaN(diaSeleccionado.inicio)) {\n text = text + ' hora inicial';\n if (isNaN(diaSeleccionado.fin)) {\n text = text + ' y';\n }\n }\n if (isNaN(diaSeleccionado.fin)) {\n text = text + ' hora final';\n }\n this.openSnackBar(`Por favor, seleccioná ${text}`);\n } else {\n controlsScheduler.addRange = false;\n this.cargarHorariosAgenda(index, diaSeleccionado);\n this.activeAddRanges(index);\n }\n diaSeleccionado.endHourButton = false;\n }\n\n activeAddRanges(index) {\n var controlsScheduler = this.diasAgenda.find(\n (elemento) => elemento.rangeHour === index\n );\n this.enableRanges(index, true, false);\n\n var ranges = this.calculateNewRange(index);\n\n if (ranges != null && ranges.length == 0) {\n controlsScheduler.addRanges = true;\n } else {\n controlsScheduler.addRanges = false;\n }\n\n this.enableRanges(index, false, true);\n }\n\n abogado = {\n nombre: '',\n apellido: '',\n };\n\n horariosLlamadaConId: RangoConId[];\n horarioLlamada: Rango[];\n nuevoHorario = {\n desde: 0,\n dia: 0,\n hasta: 0,\n };\n\n cambiarDatos = new UntypedFormGroup({\n nombre: new UntypedFormControl(),\n apellido: new UntypedFormControl(),\n mail: new UntypedFormControl(),\n dni: new UntypedFormControl(),\n tipoIdentificacion: new UntypedFormControl(),\n // password: new FormControl('', [\n // Validators.required,\n // Validators.pattern(/^(?=.*[A-Z])(?=.*[0-9])(?=.{8,})/),\n // ]),\n // repeatPassword: new FormControl('', [\n // Validators.required\n // ]),\n tomo: new UntypedFormControl(),\n folio: new UntypedFormControl(),\n colegio: new UntypedFormControl(),\n pais: new UntypedFormControl(),\n jurisdiccion: new UntypedFormControl(),\n localidad: new UntypedFormControl(),\n especialidad: new UntypedFormControl(),\n descripcion: new UntypedFormControl(),\n plan: new UntypedFormControl(),\n telefono: new UntypedFormControl(),\n provinciaResidencia: new UntypedFormControl(),\n localidadResidencia: new UntypedFormControl(),\n direccion: new UntypedFormControl('', [Validators.pattern(/^[a-z\\d\\_\\s]+$/i)]),\n codigoPostal: new UntypedFormControl('', [Validators.max(99999999)]),\n cuit: new UntypedFormControl('', [Validators.required]),\n promocion: new FormControl('', [])\n });\n\n archivosForm = new UntypedFormGroup({\n archivosSeleccionados: new UntypedFormControl(),\n });\n\n perfil: Perfil;\n nuevosDatos: any;\n datosGuardados: boolean = false;\n actualizarJurisdicciones: boolean = false;\n terminoCarga: boolean = false;\n modificarEspecialidades: boolean = false;\n agregoEspecialidades: boolean = false;\n\n direccion: string;\n codigoPostal: number;\n cuit: string;\n promocion: string;\n nombre: string;\n apellido: string;\n bio: string;\n mail: string;\n localidad: string[] = [];\n jurisdiccion: string[] = [];\n colegio: string[] = [];\n especialidadesAbogados: [\n {\n id_especialidad: '';\n nombre: '';\n }\n ];\n especialidadesNombre: string[] = [];\n especialidadesIds: number[] = [];\n folio: string[] = [];\n numeroDni: string;\n tomo: string[] = [];\n pais: string;\n telefono: string;\n descripcion: string;\n avatarUrl: string;\n datosJurisdiccion: JurisdiccionEditarVer[] = [];\n\n datosAux = {\n jurisdiccionNombre: '',\n localidadNombre: '',\n pais: '',\n tomo: '',\n folio: '',\n };\n\n archivos= [];\n\n plan: Planes;\n\n editarBio = false;\n editarDatos = false;\n tieneFoto = false;\n opiniones: Array = [];\n\n activar(dia) {\n if (this.hasLinkedPayment() && this.planApto /*&& this.plan.agenda*/) {\n let diaSeleccionado = this.diasAgenda.find(\n (elemento) => elemento.nombre === dia.nombre\n );\n diaSeleccionado.activado = !diaSeleccionado.activado;\n dia.activado == true;\n } else {\n if (!this.planApto || !this.suscripcionSel.planAgenda) {\n this.openSnackBar(\n 'Por favor cambia tu plan para poder recibir citas agendadas'\n );\n this.router.navigate(['/plan']);\n }\n if (!this.hasLinkedPayment() && this.servicePlanMP.isSuscriptionActive(this.suscripcionSel)) {\n console.log('ENTRO ACA');\n this.router.navigate([\"/abogado/vinculaciones\"]);\n }\n }\n }\n\n activartemp(dia) {\n console.log('ENTRO ACA');\n let diaSeleccionado = this.diasAgenda.find(\n (elemento) => elemento.nombre === dia.nombre\n );\n diaSeleccionado.activado = !diaSeleccionado.activado;\n dia.activado == true;\n \n }\n\n onFormSubmitHorarioAgenda() {\n this.duracionAgenda = this.formGroup.value.duracionAgenda;\n }\n\n activarLlamada(dia) {\n if (this.hasLinkedPayment() && this.planApto /*&& this.plan.llamada*/) {\n let diaSeleccionado = this.diasLlamada.find(\n (elemento) => elemento.nombre === dia.nombre\n );\n diaSeleccionado.activado = !diaSeleccionado.activado;\n dia.activado == true;\n } else {\n if (!this.planApto || !this.suscripcionSel.planLlamada) {\n this.openSnackBar(\n 'Por favor cambia tu plan para poder recibir llamadas express'\n );\n this.router.navigate(['/plan']);\n }\n if (!this.hasLinkedPayment() && this.servicePlanMP.isSuscriptionActive(this.suscripcionSel)) {\n this.router.navigate([\"/abogado/vinculaciones\"]);\n }\n }\n }\n\n onFormSubmitLlamada(dia) {\n let diaSeleccionado = this.diasLlamada.find(\n (elemento) => elemento.nombre === dia.nombre\n );\n\n diaSeleccionado.inicio = this.formGroup.value.inicio;\n diaSeleccionado.fin = this.formGroup.value.fin;\n\n if(diaSeleccionado.inicio === '' || diaSeleccionado.fin === ''){\n this.openSnackBar('Debe seleccionar un horario.');\n }else{\n this.cargarHorarios(dia);\n //(diaSeleccionado.inicio = 0),\n //(diaSeleccionado.fin = 0),\n this.diasLlamada.map((dia) => {\n dia.modificar = true;\n });\n this.obtenerHorariosLlamada();\n }\n \n \n }\n\n borrarHorarioLlamada(dia) {\n let posicion = dia.dia - 1;\n this.apiService.deleteHorario(dia.id_rango_horario).subscribe(\n (response) => {\n this.diasLlamada[posicion].inicioString = '';\n this.diasLlamada[posicion].finString = '';\n this.diasLlamada[posicion].inicio = 0;\n this.diasLlamada[posicion].fin = 0;\n this.diasLlamada[posicion].borrado = false;\n this.diasLlamada[posicion].cargado = false;\n this.openSnackBar('Se borró el horario exitosamente.');\n this.obtenerHorariosLlamada();\n },\n (error) => {\n this.openSnackBar(\n 'No se pudo borrar el horario, por favor intente nuevamente más tarde.'\n );\n }\n );\n }\n\n cargarHorariosAgenda(index, dia) {\n this.nuevoHorario.dia = dia.dia;\n this.nuevoHorario.desde = dia.inicio;\n this.nuevoHorario.hasta = dia.fin;\n let datos = {\n dia: this.nuevoHorario.dia,\n estado: 1,\n horaFin: this.nuevoHorario.hasta,\n horaInicio: this.nuevoHorario.desde,\n tags: this.tags,\n usuarioId: this.perfil.id_usuario,\n };\n\n var quantities = this.productFormArray[index].productForm.controls\n .quantities as any;\n var control = quantities.controls[quantities.controls.length - 1].controls;\n\n console.log(\"GUARDANDO rango\")\n this.apiService.guardarRangoCitas(datos).subscribe(\n (response) => {\n \n //0904control.id.value = response.id;\n\n control.id.value = response.id\n this.openSnackBar('Se guardó el horario exitosamente');\n },\n (error) => {\n console.log(\"Error \"+JSON.stringify(error));\n this.openSnackBar('No fue posible guardar este rango');\n }\n );\n }\n\n cargarHorarios(dia) {\n this.nuevoHorario.desde =\n parseInt(dia.inicio.split(':')[0]) * 60 +\n parseInt(dia.inicio.split(':')[1]);\n this.nuevoHorario.hasta =\n parseInt(dia.fin.split(':')[0]) * 60 + parseInt(dia.fin.split(':')[1]);\n this.nuevoHorario.dia = parseInt(dia.dia, 10);\n if (\n this.nuevoHorario.desde > this.nuevoHorario.hasta ||\n this.nuevoHorario.desde == this.nuevoHorario.hasta\n ) {\n this.openSnackBar(\n 'La hora final no puede ser antes que la hora inicial ni pueden ser iguales'\n );\n } else {\n if (dia.cargado) {\n this.apiService\n .modificarHorario(this.nuevoHorario, dia.id_rango_horario)\n .subscribe(\n (respuesta) => {\n this.openSnackBar('Se guardó el horario exitosamente');\n this.obtenerHorariosLlamada();\n },\n (error) => {\n this.openSnackBar(\n 'No fue posible guardar el horario, por favor intente nuevamente más tarde'\n );\n }\n );\n } else {\n this.apiService.postHorario(this.nuevoHorario).subscribe(\n (respuesta) => {\n this.openSnackBar('Se guardó el horario exitosamente');\n this.obtenerHorariosLlamada();\n },\n (error) => {}\n );\n }\n }\n }\n\n obtenerHorariosLlamada() {\n this.apiService.getHorariosLlamada().subscribe(\n (horarios) => {\n this.horariosLlamadaConId = horarios;\n this.convertirAHorasYMinutos();\n this.cargarExistentes();\n },\n (error) => {}\n );\n }\n\n convertirAHorasYMinutos() {\n this.horariosLlamadaConId.map((horario) => {\n horario.desde = horario.desde / 60;\n horario.hasta = horario.hasta / 60;\n });\n }\n\n convertirString(horario) {\n let hora = Math.trunc(horario).toString();\n if (hora.length == 1) {\n hora = '0' + hora;\n }\n let minutosNumero = horario % 1;\n let minutos;\n switch (minutosNumero) {\n case 0.5:\n minutos = '30';\n break;\n case 0:\n minutos = '00';\n break;\n }\n return hora + ':' + minutos;\n }\n\n modificar(dia, modo) {\n if (modo === true) {\n dia.modificar = true;\n } else {\n dia.modificar = false;\n }\n }\n\n cargarExistentes() {\n this.horariosLlamadaConId.map((element) => {\n this.diasLlamada.find((encontrado) => {\n if (encontrado.dia === element.dia) {\n encontrado.inicio = element.desde;\n encontrado.inicioString = this.convertirString(element.desde);\n encontrado.fin = element.hasta;\n encontrado.finString = this.convertirString(element.hasta);\n encontrado.cargado = true;\n encontrado.id_rango_horario = element.id_rango_horario;\n encontrado.borrado = true;\n }\n });\n });\n }\n\n initCallHours: any;\n endCallHours: any;\n crearHorarios() {\n this.initCallHours = [];\n this.endCallHours = [];\n for (let i = 0; i < 24; i++) {\n var strHour: String;\n strHour = i < 10 ? '0' + i + ':' : i + ':';\n this.initCallHours.push(new RangeHour(strHour + '00', strHour + '00'));\n this.initCallHours.push(new RangeHour(strHour + '30', strHour + '30'));\n if (i != 0) {\n this.endCallHours.push(new RangeHour(strHour + '00', strHour + '00'));\n }\n this.endCallHours.push(new RangeHour(strHour + '30', strHour + '30'));\n }\n this.endCallHours.push(new RangeHour('24:00', '24:00'));\n }\n\n\n selectFiles(event) {\n for (var i = 0; i < event.target.files.length; i++) {\n //this.archivos.push(event.target.files[i]);\n }\n this.archivos=[];\n console.log(\"1402 FILE \"+event.target.files[0].name);\n this.archivos.push(event.target.files[0]);\n // this.archivosForm.value.archivosSeleccionados = this.archivos;\n\n this.apiService.patchAvatar(this.archivos).subscribe(\n (respuesta) => {\n event.target.value = '';\n this.getMiPerfil();\n this.terminoCarga = true;\n },\n (error) => {\n this.openSnackBar('No fue posible actualizar la foto de perfil');\n }\n );\n }\n\n openDialog() {\n this.dialog.open(DialogComponent, {\n backdropClass: 'backdropBackground',\n });\n }\n\n openDialogVincular() {\n this.dialog.open(DialogVincularComponent, {\n backdropClass: 'backdropBackground',\n });\n }\n\n editar(campo) {\n const BIO = 1;\n const EDITAR_BIO = 11;\n const JURISDICCION = 2;\n const DATOS = 4;\n const EDITAR_DATOS = 44;\n\n this.nuevosDatos = this.perfil;\n\n switch (campo) {\n case BIO: {\n this.nuevosDatos.nombre = this.cambiarDatos.value.nombre\n ? this.cambiarDatos.value.nombre\n : this.nombre;\n this.nuevosDatos.apellido = this.cambiarDatos.value.apellido\n ? this.cambiarDatos.value.apellido\n : this.apellido;\n this.nuevosDatos.mail = this.cambiarDatos.value.mail\n ? this.cambiarDatos.value.mail\n : this.mail;\n this.nuevosDatos.telefono = this.cambiarDatos.value.telefono\n ? this.cambiarDatos.value.telefono\n : this.telefono;\n this.nuevosDatos.datosProfesionales[0].numeroDni = this.cambiarDatos\n .value.dni\n ? this.cambiarDatos.value.dni\n : this.numeroDni;\n\n this.nuevosDatos.direccion = this.cambiarDatos.value.direccion\n ? this.cambiarDatos.value.direccion\n : this.direccion;\n this.nuevosDatos.codigoPostal = this.cambiarDatos.value.codigoPostal\n ? this.cambiarDatos.value.codigoPostal\n : this.codigoPostal;\n if (this.cambiarDatos.value.localidadResidencia) {\n this.nuevosDatos.localidadId =\n this.cambiarDatos.value.localidadResidencia.id_localidad;\n }\n\n let TiposIdentificacion = {id_tipos_identificacion:this.cambiarDatos.value.tipoIdentificacion};\n\n this.nuevosDatos.datosProfesionales[0].especialidadesAbogados = null;\n this.nuevosDatos.datosProfesionales[0].TiposIdentificacion = TiposIdentificacion;\n this.nuevosDatos.descripcion = this.cambiarDatos.value.descripcion;\n this.descripcion = this.cambiarDatos.value.descripcion;\n this.editarBio = false;\n this.editarPerfil();\n break;\n }\n case JURISDICCION: {\n }\n case DATOS: {\n if (this.cambiarDatos.status !== \"VALID\")\n return;\n\n this.nuevosDatos.nombre = this.cambiarDatos.value.nombre\n ? this.cambiarDatos.value.nombre\n : this.nombre;\n this.nuevosDatos.apellido = this.cambiarDatos.value.apellido\n ? this.cambiarDatos.value.apellido\n : this.apellido;\n this.nuevosDatos.mail = this.cambiarDatos.value.mail\n ? this.cambiarDatos.value.mail\n : this.mail;\n this.nuevosDatos.telefono = this.cambiarDatos.value.telefono\n ? this.cambiarDatos.value.telefono\n : this.telefono;\n this.nuevosDatos.datosProfesionales[0].numeroDni = this.cambiarDatos\n .value.dni\n ? this.cambiarDatos.value.dni\n : this.numeroDni;\n\n this.nuevosDatos.direccion = this.cambiarDatos.value.direccion\n ? this.cambiarDatos.value.direccion\n : this.direccion;\n this.nuevosDatos.codigoPostal = this.cambiarDatos.value.codigoPostal\n ? this.cambiarDatos.value.codigoPostal\n : this.codigoPostal;\n this.nuevosDatos.cuit = this.cambiarDatos.value.cuit \n ? this.cambiarDatos.value.cuit \n : this.cuit;\n this.nuevosDatos.promocion = this.cambiarDatos.value.promocion ? this.cambiarDatos.value.promocion : this.promocion;\n if (this.cambiarDatos.value.localidadResidencia) {\n this.nuevosDatos.localidadId =\n this.cambiarDatos.value.localidadResidencia.id_localidad;\n }\n\n let TiposIdentificacion = {id_tipos_identificacion:this.cambiarDatos.value.tipoIdentificacion};\n\n this.nuevosDatos.datosProfesionales[0].especialidadesAbogados = null;\n this.nuevosDatos.datosProfesionales[0].TiposIdentificacion = TiposIdentificacion;\n this.editarPerfil();\n this.editarDatos = false;\n break;\n }\n\n case EDITAR_BIO: {\n\n this.nuevosDatos.nombre = this.cambiarDatos.value.nombre\n ? this.cambiarDatos.value.nombre\n : this.nombre;\n this.nuevosDatos.apellido = this.cambiarDatos.value.apellido\n ? this.cambiarDatos.value.apellido\n : this.apellido;\n this.nuevosDatos.mail = this.cambiarDatos.value.mail\n ? this.cambiarDatos.value.mail\n : this.mail;\n this.nuevosDatos.telefono = this.cambiarDatos.value.telefono\n ? this.cambiarDatos.value.telefono\n : this.telefono;\n this.nuevosDatos.datosProfesionales[0].numeroDni = this.cambiarDatos\n .value.dni\n ? this.cambiarDatos.value.dni\n : this.numeroDni;\n\n this.nuevosDatos.direccion = this.cambiarDatos.value.direccion\n ? this.cambiarDatos.value.direccion\n : this.direccion;\n this.nuevosDatos.codigoPostal = this.cambiarDatos.value.codigoPostal\n ? this.cambiarDatos.value.codigoPostal\n : this.codigoPostal;\n if (this.cambiarDatos.value.localidadResidencia) {\n this.nuevosDatos.localidadId =\n this.cambiarDatos.value.localidadResidencia.id_localidad;\n }\n\n let TiposIdentificacion = {id_tipos_identificacion:this.cambiarDatos.value.tipoIdentificacion};\n\n this.nuevosDatos.datosProfesionales[0].especialidadesAbogados = null;\n this.nuevosDatos.datosProfesionales[0].TiposIdentificacion = TiposIdentificacion;\n this.descripcion = this.cambiarDatos.value.descripcion;\n this.editarBio = true;\n this.editarPerfil();\n \n\n this.editarBio = true;\n break;\n }\n case EDITAR_DATOS: {\n this.editarDatos = true;\n break;\n }\n // case CAMBIAR_PASSWORD: {\n // break;\n // }\n }\n }\n\n verificoPlan(campo: number) {\n const JURISDICCION = 1;\n const ESPECIALIDAD = 2;\n localStorage.removeItem('jurisdiccion');\n if (!this.planApto) {\n this.openDialog();\n this.router.navigate(['/plan']);\n } else {\n let mostrar = {\n jurisdiccion: false,\n especialidades: false,\n };\n let cantidadEspecialides =\n this.perfil.datosProfesionales[0].especialidadesAbogados.length;\n let cantidadJurisdicciones: number =\n this.contadorJurisdiccionesService.contador(\n this.perfil.datosProfesionales\n );\n switch (campo) {\n case JURISDICCION: {\n if (\n this.contadorJurisdiccionesService.contadorActivas(\n this.perfil.datosProfesionales\n ) > 0\n ) {\n console.log('cantidad1:' + cantidadJurisdicciones);\n console.log('cantidad2:' + this.suscripcionSel.planJurisdicciones);\n if (cantidadJurisdicciones < this.suscripcionSel.planJurisdicciones) {\n mostrar.jurisdiccion = true;\n localStorage.setItem(\n 'jurisdiccionesExistentes',\n JSON.stringify(this.datosJurisdiccion)\n );\n localStorage.setItem('mode', 'jurisdiccion');\n this.router.navigateByUrl('/agregar');\n } else {\n this.planApto = false;\n this.openSnackBar(\n 'Por favor cambia tu plan para poder agregar más jurisdicciones'\n );\n this.router.navigate(['/plan']);\n }\n } else {\n this.openSnackBar(\n 'No podrás agregar jurisdicciones hasta que tengas una activa'\n );\n }\n break;\n }\n case ESPECIALIDAD: {\n // if (cantidadEspecialides < this.plan.especialidades) {\n mostrar.especialidades = true;\n localStorage.setItem(\n 'especialidades',\n JSON.stringify(this.especialidadesNombre)\n );\n localStorage.setItem('mode', 'especialidades');\n const dialogRef = this.dialog.open(PopupDowngradeComponent, {\n data: {\n plan: this.planSel,\n downgrade: false,\n },\n backdropClass: 'backdropBackground',\n });\n console.log(\"LLEGAMOOOOS ACAA PAAA\")\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.actualizarEspecialidades();\n }\n });\n // this.router.navigateByUrl(\"/agregar\");\n // } else {\n // this.planApto = false;\n // this.openSnackBar(\"Por favor cambia tu plan para poder agregar más especialidades\");\n // this.router.navigate(['/plan']);\n // }\n break;\n }\n }\n }\n }\n\n editarJurisdiccion(dato) {\n localStorage.setItem('jurisdiccion', JSON.stringify(dato));\n localStorage.setItem('mode', 'editar');\n this.router.navigateByUrl('/agregar');\n }\n\n borrarJurisdiccion(dato) {\n let aux = this.perfil.datosProfesionales.filter(\n (dato) => dato.estado != 'D'\n );\n if (aux.length > 1) {\n const dialogRef = this.dialog.open(CancelarComponent, {\n data: {\n titulo: '¿Deseas borrar esta jurisdicción?',\n texto:\n 'Este proceso es irreversible, si deseas volver a tenerla deberás cargar los datos nuevamente.',\n textoBotonCerrar: 'NO',\n textoBotonConfirmar: 'BORRAR',\n mostrarCancelar: true,\n },\n backdropClass: 'backdropBackground',\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n let jurisdiccionesAEliminar: number[] = [];\n jurisdiccionesAEliminar.push(dato.id_datos_profesionales);\n let data: JurisdiccionesAEliminar = {\n jurisdiccionesAEliminar,\n };\n this.planService.bajarJurisdicciones(data).subscribe(\n (respuesta) => {\n this.openSnackBar('Jurisdicción eliminada exitosamente');\n this.datosGuardados = false;\n this.actualizarJurisdicciones = true;\n this.tags = [];\n this.datosJurisdiccion = [];\n this.especialidadesNombre = [];\n this.getMiPerfil();\n },\n (error) => {\n console.error(error);\n this.openSnackBar(\n 'No fue posible eliminar la jurisdicción, por favor intente nuevamente más tarde.'\n );\n }\n );\n }\n });\n } else {\n this.openSnackBar('No se puede eliminar tu única jurisdicción');\n }\n }\n\n actualizarEspecialidades() {\n let especialidadesSeleccionadas: Especialidad[] = JSON.parse(\n sessionStorage.getItem('especialidadesSeleccionadas')\n );\n let nuevasEspecialidades: number[] = especialidadesSeleccionadas.map(\n (e) => e.id_especialidad\n );\n this.agregoEspecialidades = true;\n this.agregarEspecialidades(\n especialidadesSeleccionadas,\n nuevasEspecialidades\n );\n }\n\n agregarEspecialidades(\n especialidadesSeleccionadas: Especialidad[],\n nuevasEspecialidades: number[]\n ) {\n this.apiService.editarDatosProfesionales(nuevasEspecialidades).subscribe(\n (respuesta) => {\n let texto: string = '';\n especialidadesSeleccionadas.length > 1\n ? (texto = 'Especialidades agregadas exitosamente')\n : (texto = 'Especialidad agregada exitosamente');\n this.openSnackBar(texto);\n this.especialidadesNombre = [];\n this.modificarEspecialidades = true;\n this.getMiPerfil();\n },\n (error) => {\n console.error(error);\n this.openSnackBar(\n 'Falló agregar nueva especialidad, por favor intente nuevamente más tarde.'\n );\n }\n );\n }\n\n editarPerfil() {\n this.apiService.editarPerfil(this.nuevosDatos).subscribe(\n (respuesta) => {\n this.getMiPerfil();\n },\n (error) => {\n this.openSnackBar('No es posible editar el perfil');\n this.nombre = 'Nombre';\n }\n );\n }\n\n getSuscripcion(){\n this.servicePlanMP.getSubscripcionLast().subscribe({\n next: (suscripcion: Suscripcion) => {\n this.suscripcionSel = suscripcion;\n if (this.suscripcionSel) {\n switch(this.suscripcionSel.planNombre){\n case \"Plan Basico\":\n this.suscripcionSel.planEspecialidades = 1;\n this.suscripcionSel.planJurisdicciones = 1;\n break;\n case \"Plan Premium\":\n this.suscripcionSel.planLlamada = true\n this.suscripcionSel.planAgenda = true\n this.suscripcionSel.planEspecialidades = 3;\n this.suscripcionSel.planJurisdicciones = 2;\n break;\n case \"Plan Corporativo\":\n this.suscripcionSel.planLlamada = true\n this.suscripcionSel.planAgenda = true\n this.suscripcionSel.planEspecialidades = 9999;\n this.suscripcionSel.planJurisdicciones = 9999;\n break;\n }\n }\n\n this.apiService.getPlanes().subscribe({\n next: (planes: Planes[]) => {\n let selPlan: Planes;\n\n planes.some((plan: Planes) => {\n if (suscripcion && plan.id_plan == suscripcion.planId) {\n selPlan = plan;\n return true;\n }\n });\n this.planSel = selPlan;\n }\n });\n }\n });\n this.planService.getClientStatus().subscribe( res => {\n if(res.mensaje == \"OK\"){\n this.planI = res.suscripcion;\n this.textoSubscripcion = this.tiempoSubscripcionService.getTiempo(res.suscripcion);\n if(res.tieneSuscripcion)\n switch(this.planI.nombrePlan){\n case \"Plan Basico\":\n this.planI.especialidades = 1;\n this.planI.jurisdicciones = 1;\n break;\n case \"Plan Premium\":\n this.planI.llamada = true\n this.planI.agenda = true\n this.planI.especialidades = 3;\n this.planI.jurisdicciones = 2;\n break;\n case \"Plan Corporativo\":\n this.planI.llamada = true\n this.planI.agenda = true\n this.planI.especialidades = 9999;\n this.planI.jurisdicciones = 9999;\n break;\n }\n this.planI.planVencido = true\n if(res.cuit == null || res.cuit.length < 1 || res.codigoPostal == null || res.direccion == null){\n const dialogRef = this.dialog.open(PopupFacturacionComponent, {\n backdropClass: 'backdropBackground',\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (!result) {\n this.planService.verificoDatosFacturacion();\n window.location.reload();\n }\n });\n }\n }\n\n }, err => {\n console.log(err)\n })\n }\n\n getCuenta() {\n this.planService.getCuenta().subscribe(\n (respuesta) => {\n this.planApto = true;\n this.cuenta = respuesta;\n\n console.log(\"GET CUENTA \"+JSON.stringify(respuesta));\n //this.plan = respuesta.plan;\n console.log(respuesta);\n if (respuesta.estaAsociado) {\n this.cuentaVinculada = true;\n } else {\n this.cuentaVinculada = false;\n }\n console.log(this.planApto);\n \n },\n (error) => {\n if (error.status === 404) {\n this.cuentaVinculada = false;\n this.planApto = false;\n }\n }\n );\n }\n\n definirIdentificacion(){\n\n }\n\n private getProvinciaResidencia() {\n this.apiService.getJurisdiccionPaisesAuto().subscribe(\n (respuesta) => {\n this.provinciasResidencias = respuesta;\n },\n (error) => {}\n );\n }\n\n cargarLocalidadesResidencia() {\n this.apiService\n .getLocalidades(\n this.cambiarDatos.value.provinciaResidencia.id_jurisdiccion\n )\n .subscribe(\n (localidad) => {\n this.localidadesResidencias = localidad;\n },\n (error) => {}\n );\n }\n\n private getPuntuaciones() {\n this.apiService.getPuntuacion().subscribe((res) => {\n this.opiniones = res;\n this.puntuacionesService.crearEstrellasMapeando(this.opiniones);\n });\n }\n\n loadScheduler(userId: number) {\n this.apiService.getRanges(userId).subscribe(\n (response) => {\n this.initRangeHours = [];\n this.endRangeHours = [];\n for (let i = 0; i < 24; i++) {\n var strHour: String;\n strHour = i < 10 ? '0' + i + ':' : i + ':';\n this.initRangeHours.push(\n new RangeHour(strHour + '00', strHour + '00')\n );\n this.initRangeHours.push(\n new RangeHour(strHour + '30', strHour + '30')\n );\n if (i != 0) {\n this.endRangeHours.push(\n new RangeHour(strHour + '00', strHour + '00')\n );\n }\n this.endRangeHours.push(\n new RangeHour(strHour + '30', strHour + '30')\n );\n }\n\n this.endRangeHours.push(new RangeHour('24:00', '24:00'));\n\n for (let i = 0; i < response.length; i++) {\n var scheduler = this.diasAgenda.filter(\n (x) => x.dia === response[i].dia\n );\n var indexEndRange: number = 0;\n\n if (Object.keys(this.initRangeHoursTemp).length > 0) {\n var indexLast = Object.keys(this.initRangeHoursTemp).filter(\n (x) => parseInt(x.substring(0, 1)) == scheduler[0].rangeHour\n );\n indexEndRange =\n indexLast.length > 0\n ? parseInt(\n indexLast.map((x) => x.substring(1, 2)).reverse()[0]\n ) + 1\n : 0;\n }\n\n this.initRangeHoursTemp[\n scheduler[0].rangeHour.toString() + indexEndRange\n ] = this.initRangeHours;\n this.endtRangeHoursTemp[\n scheduler[0].rangeHour.toString() + indexEndRange\n ] = this.endRangeHours;\n\n this.quantities(scheduler[0].rangeHour).push(this.newQuantity());\n var quantities = this.productFormArray[scheduler[0].rangeHour]\n .productForm.controls.quantities as any;\n var control =\n quantities.controls[quantities.controls.length - 1].controls;\n control.id.value = response[i].id;\n var hourInit = parseInt(response[i].horaInicio.toString()) / 60;\n var minuteInit = parseInt(response[i].horaInicio) % 60;\n var hourEnd = parseInt(response[i].horaFin) / 60;\n var minuteEnd = parseInt(response[i].horaFin) % 60;\n control.init.value =\n parseInt(hourInit.toString()) > 9\n ? parseInt(hourInit.toString())\n : '0' + parseInt(hourInit.toString());\n control.init.value +=\n parseInt(minuteInit.toString()) > 9\n ? ':' + parseInt(minuteInit.toString())\n : ':' + '0' + parseInt(minuteInit.toString());\n control.end.value =\n parseInt(hourEnd.toString()) > 9\n ? parseInt(hourEnd.toString())\n : '0' + parseInt(hourEnd.toString());\n control.end.value +=\n parseInt(minuteEnd.toString()) > 9\n ? ':' + parseInt(minuteEnd.toString())\n : ':' + '0' + parseInt(minuteEnd.toString());\n this.enableRanges(scheduler[0].rangeHour, false, true);\n }\n },\n (error) => {}\n );\n }\n\n getCertification(){\n this.apiService.getcertification(this.mail).subscribe(\n (certification) => {\n console.log(\"CERT \"+JSON.stringify(certification));\n if(certification!=null){\n this.cert_requested=true;\n if(certification.status_doc=='CO'){\n this.certified=true;\n }\n else{\n this.certified=false;\n }\n }\n else{\n this.certified=false;\n this.cert_requested=false;\n }\n \n },\n (error) => {\n this.openSnackBar(\n 'No es posible recuperar la información del perfil. Por favor vuelva a intentarlo más tarde.'\n );\n }\n );\n }\n\n getMiPerfil() {\n this.apiService.getPerfil().subscribe(\n (perfil) => {\n this.perfil = perfil;\n this.userId = this.perfil.id_usuario;\n this.loadScheduler(this.userId);\n this.nombre = this.perfil.nombre;\n this.apellido = this.perfil.apellido;\n\n this.direccion = this.perfil.datosProfesionales[0].direccion;\n this.codigoPostal = this.perfil.datosProfesionales[0].codigoPostal;\n this.cuit = this.perfil.datosProfesionales[0].cuit;\n this.promocion = this.perfil.promocion;\n this.abogado.nombre = this.nombre;\n this.abogado.apellido = this.apellido;\n this.mail = this.perfil.mail;\n this.numeroDni = this.perfil.datosProfesionales[0].numeroDni;\n this.otro = this.perfil.datosProfesionales[0].otro==null ? '':this.perfil.datosProfesionales[0].otro;\n this.descripcion = this.perfil.descripcion\n ? this.perfil.descripcion\n : ' ';\n this.telefono = this.perfil.datosProfesionales[0].telefono;\n this.getCertification();\n\n if (!this.datosGuardados) {\n this.perfil.datosProfesionales.forEach((dato) => {\n let datosAux: JurisdiccionEditarVer = {\n jurisdiccionNombre: '',\n localidadNombre: '',\n tomo: '',\n folio: '',\n colegio: '',\n aceptada: true,\n otro:'',\n id_datos_profesionales: 0,\n };\n this.datosGuardados = true;\n if (\n dato.especialidadesAbogados[0] &&\n dato.especialidadesAbogados[0].id_especialidad\n ) {\n this.especialidadesIds.push(\n dato.especialidadesAbogados[0].id_especialidad\n );\n }\n if (dato.estado != 'D') {\n this.tags.push(dato.localidad.jurisdiccion.nombre);\n }\n if (dato.estado == 'P') {\n datosAux.aceptada = false;\n }\n datosAux.jurisdiccionNombre = dato.localidad.jurisdiccion.nombre;\n datosAux.localidadNombre = dato.localidad.nombre;\n datosAux.tomo = dato.tomo;\n datosAux.folio = dato.folio;\n datosAux.id_datos_profesionales = dato.id_datos_profesionales;\n datosAux.colegio = dato.colegio;\n datosAux.otro = dato.otro;\n if (dato.estado != 'B' && dato.estado != 'D') {\n this.datosJurisdiccion.push(datosAux);\n }\n });\n\n this.perfil.datosProfesionales[0].especialidadesAbogados.forEach(\n (especialidad) => {\n let especialidadAlterada = especialidad.nombre.replace('/', ' ');\n this.especialidadesNombre.push(especialidadAlterada);\n this.tags = this.tags.concat(especialidad.nombreCliente);\n this.tags = [\n ...new Set([...this.tags, ...especialidad.nombreCliente]),\n ];\n }\n );\n }\n this.cambiarDatos.patchValue({ nombre: perfil.nombre });\n this.cambiarDatos.patchValue({ apellido: perfil.apellido });\n this.cambiarDatos.patchValue({ descripcion: perfil.descripcion });\n this.cambiarDatos.patchValue({\n telefono: perfil.datosProfesionales[0].telefono,\n });\n this.cambiarDatos.patchValue({\n dni: perfil.datosProfesionales[0].numeroDni,\n });\n this.cambiarDatos.patchValue({ mail: perfil.mail });\n this.cambiarDatos.patchValue({\n direccion: perfil.datosProfesionales[0].direccion,\n });\n this.cambiarDatos.patchValue({\n codigoPostal: perfil.datosProfesionales[0].codigoPostal,\n });\n this.cambiarDatos.patchValue({\n cuit: perfil.datosProfesionales[0].cuit,\n promocion: perfil.promocion\n });\n\n if (this.perfil.avatarUrl != null) {\n this.tieneFoto = true;\n } else {\n this.tieneFoto = false;\n }\n this.avatarUrl = environment.apiUrl + this.perfil.avatarUrl;\n\n if (this.perfil.pais === 'ARG') {\n this.pais = 'Argentina';\n } else {\n this.pais = this.perfil.pais;\n }\n if (this.modificarEspecialidades) {\n this.modificarEspecialidades = false;\n this.actualizarAgenda();\n this.redibujarEspecialidades();\n }\n if (this.actualizarJurisdicciones) {\n this.actualizarJurisdicciones = false;\n this.actualizarAgenda();\n }\n this.terminoCarga = true;\n },\n (error) => {\n this.openSnackBar(\n 'No es posible recuperar la información del perfil. Por favor vuelva a intentarlo más tarde.'\n );\n }\n );\n }\n\n async actualizarAgenda() {\n try {\n this.tags = await this.updateRangesService.updateWithEmptyTags();\n } catch (error) {\n this.openSnackBar('Falló la actualización de agenda');\n }\n }\n\n redibujarEspecialidades() {\n this.perfil.datosProfesionales[0].especialidadesAbogados.forEach(\n (especialidad) => {\n let especialidadAlterada = especialidad.nombre.replace('/', ' ');\n this.especialidadesNombre.push(especialidadAlterada);\n }\n );\n }\n\n loadEndRangeHours(value, index) {\n this.endRangeHours = [];\n var hour = parseInt(value.split(':')[0]);\n var minute = parseInt(value.split(':')[1]);\n\n this.enableRanges(index, true, false);\n\n var range = this.productFormArray[index].productForm.value.quantities;\n var existIntervalZeroTwo: any[] = [];\n var existIntervalMidTwo: any[] = [];\n\n for (let i = hour; i <= 24; i++) {\n var existIntervalZero = range.filter(\n (x) =>\n i * 60 >\n parseInt(x.init.split(':')[0]) * 60 +\n parseInt(x.init.split(':')[1]) &&\n i * 60 <\n parseInt(x.end.split(':')[0]) * 60 + parseInt(x.end.split(':')[1])\n );\n\n var intervalToRemoveHour = range.filter(\n (x) =>\n i * 60 >=\n parseInt(x.init.split(':')[0]) * 60 +\n parseInt(x.init.split(':')[1]) &&\n i * 60 <\n parseInt(x.end.split(':')[0]) * 60 + parseInt(x.end.split(':')[1])\n );\n\n if (intervalToRemoveHour.length > 0)\n intervalToRemoveHour.forEach(function (item) {\n existIntervalZeroTwo.push(item);\n });\n\n var existIntervalMid = range.filter(\n (x) =>\n i * 60 + 30 >\n parseInt(x.init.split(':')[0]) * 60 +\n parseInt(x.init.split(':')[1]) &&\n i * 60 + 30 <\n parseInt(x.end.split(':')[0]) * 60 + parseInt(x.end.split(':')[1])\n );\n\n var intervalToRemoveMid = (intervalToRemoveMid = range.filter(\n (x) =>\n i * 60 + 30 >=\n parseInt(x.init.split(':')[0]) * 60 +\n parseInt(x.init.split(':')[1]) &&\n i * 60 + 30 <\n parseInt(x.end.split(':')[0]) * 60 + parseInt(x.end.split(':')[1])\n ));\n\n if (intervalToRemoveMid.length > 0)\n intervalToRemoveMid.forEach(function (item) {\n existIntervalMidTwo.push(item);\n });\n\n var strHour: String;\n strHour = i < 10 ? '0' + i + ':' : i + ':';\n\n if (i == hour && minute == 0 && existIntervalMid == 0) {\n this.endRangeHours.push(new RangeHour(strHour + '30', strHour + '30'));\n continue;\n } else if (i == hour && minute == 30) {\n continue;\n }\n\n if (existIntervalZero.length == 0)\n this.endRangeHours.push(new RangeHour(strHour + '00', strHour + '00'));\n if (existIntervalMid.length == 0 && i != 24)\n this.endRangeHours.push(new RangeHour(strHour + '30', strHour + '30'));\n }\n\n if (existIntervalZeroTwo.length > 0) {\n var itemsDuplicatedHour = this.endRangeHours.filter(\n (z) =>\n existIntervalZeroTwo.map((x) => x.end).filter((x) => x == z.value)\n .length > 0\n );\n\n var hour: number;\n itemsDuplicatedHour.forEach(function (item, index) {\n var itemHour =\n parseInt(item.value.split(':')[0]) * 60 +\n parseInt(item.value.split(':')[1]);\n if (index == 0) hour = itemHour;\n else {\n if (itemHour - hour >= 60) {\n itemsDuplicatedHour.splice(index, itemsDuplicatedHour.length);\n }\n }\n });\n\n if (itemsDuplicatedHour.length > 0) {\n this.endRangeHours = this.endRangeHours.filter(\n (x) =>\n parseInt(x.value.split(':')[0]) * 60 +\n parseInt(x.value.split(':')[1]) <\n parseInt(itemsDuplicatedHour[0].value.split(':')[0]) * 60 +\n parseInt(itemsDuplicatedHour[0].value.split(':')[1])\n );\n }\n }\n if (existIntervalMidTwo.length > 0) {\n var itemsDuplicatedMid = this.endRangeHours.filter(\n (z) =>\n existIntervalMidTwo.map((x) => x.end).filter((x) => x == z.value)\n .length > 0\n );\n\n var hour: number;\n itemsDuplicatedMid.forEach(function (item, index) {\n var itemHour =\n parseInt(item.value.split(':')[0]) * 60 +\n parseInt(item.value.split(':')[1]);\n if (index == 0) hour = itemHour;\n else {\n if (itemHour - hour >= 60) {\n itemsDuplicatedMid.splice(index, itemsDuplicatedMid.length);\n }\n }\n });\n\n if (itemsDuplicatedMid.length > 0) {\n this.endRangeHours = this.endRangeHours.filter(\n (x) =>\n parseInt(x.value.split(':')[0]) * 60 +\n parseInt(x.value.split(':')[1]) <\n parseInt(itemsDuplicatedMid[0].value.split(':')[0]) * 60 +\n parseInt(itemsDuplicatedMid[0].value.split(':')[1])\n );\n }\n }\n\n if (range.length > 1) {\n this.enableRanges(index, false, false);\n }\n\n var indexEndRange = 0;\n\n if (Object.keys(this.endtRangeHoursTemp).length > 0) {\n var indexLast = parseInt(\n Object.keys(this.initRangeHoursTemp)\n .filter((x) => parseInt(x.substring(0, 1)) == index)\n .map((x) => x.substring(1, 2))\n .reverse()[0]\n );\n indexEndRange = indexLast;\n }\n\n this.endtRangeHoursTemp[index.toString() + indexEndRange] =\n this.endRangeHours;\n }\n\n getInitRanges(i, index) {\n return this.initRangeHoursTemp[index.toString() + i];\n }\n\n getEndRanges(i, index) {\n return this.endtRangeHoursTemp[index.toString() + i];\n }\n\n enableRanges(index, active, indexStart) {\n var cont = this.productFormArray[index].productForm.get(\n 'quantities'\n ) as UntypedFormGroup;\n\n var lstControls = cont.controls as any;\n\n if (lstControls.length > 0) {\n lstControls.forEach(function (item, i) {\n if (active) {\n item.get('init').enable();\n item.get('end').enable();\n } else {\n if (i != lstControls.length - 1) {\n item.get('init').disable();\n item.get('end').disable();\n } else {\n if (indexStart) {\n item.get('init').disable();\n item.get('end').disable();\n }\n }\n }\n });\n }\n }\n\n loadInitRange(index) {\n var initRangeHours = this.calculateNewRange(index);\n\n var indexInitRange = 0;\n\n if (Object.keys(this.initRangeHoursTemp).length > 0) {\n indexInitRange = parseInt(\n Object.keys(this.initRangeHoursTemp)\n .map((x) => x)\n .reverse()[0]\n );\n }\n\n this.initRangeHoursTemp[index.toString() + indexInitRange] = initRangeHours;\n\n this.enableRanges(index, false, false);\n }\n\n cerrarSesion() {\n this.logOut.cerrarSesion();\n }\n\n isPlanExpensive(): boolean {\n return this.servicePlanMP.isPlanCorpOrPrem(this.suscripcionSel);\n }\n\n isSuscriptionActive(): boolean {\n // result = plan.nombrePlan.toLocaleUpperCase().indexOf(\"PREMIUM\") >= 0 || plan.nombrePlan.toLocaleUpperCase().indexOf(\"CORPORATIVO\") >= 0;\n return this.servicePlanMP.isSuscriptionActive(this.suscripcionSel);\n }\n\n isSuscriptionActiveAndAgenda(): boolean {\n let result: boolean = this.isSuscriptionActive() && this.suscripcionSel.planAgenda;\n return result;\n }\n\n isSuscriptionActiveAndLlamada(): boolean {\n let result: boolean = this.isSuscriptionActive() && this.suscripcionSel.planLlamada;\n return result;\n }\n\n hasLinkedPayment(): boolean {\n let result: boolean = false;\n\n if (this.cacheVinculaciones) {\n result = this.cacheVinculaciones.some((vinculacion: MPVinculacion) => {\n if (!vinculacion.needLinked)\n return true;\n if (vinculacion.needLinked && vinculacion.linked)\n return true;\n return false;\n });\n }\n\n return result;\n }\n\n fixDigits(digits: number, event): void {\n if (event.target.value.length > digits)\n this.cambiarDatos.get(\"codigoPostal\").setValue(event.target.value.slice(0, digits));\n }\n\n doCuitFix(event): void {\n if (this.paisConfigCuit) {\n let cuitValue = this.cambiarDatos.getRawValue().cuit;\n if (cuitValue.match(this.paisConfigCuit.svalor02)) {\n this.cuitOldVal = cuitValue;\n } else {\n this.cambiarDatos.patchValue({\n cuit: this.cuitOldVal\n });\n }\n }\n }\n\n}\n","export class NuevaPuntuacion {\n puntuacion: number;\n comentario: string;\n usuario: number;\n caso: number;\n}","import { Component, OnInit } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-dialog',\n templateUrl: './dialog.component.html',\n styleUrls: ['./dialog.component.css'],\n})\nexport class DialogCalificarComponent implements OnInit {\n constructor(\n public dialogRef: MatDialogRef,\n public dialog: MatDialog,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n ngOnInit(): void {}\n\n cerrar(): void {\n this.dialogRef.close();\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n}\n","\n

{{ \"calificar.cerrar\" | translate }}

\n
\n \n {{ \"calificar.continuar\" | translate }}\n \n \n {{ \"calificar.volverbtn\" | translate }}\n \n
\n
\n","
\n \n \n \n {{ \"calificar.cali\" | translate }} {{ clienteAbogado }}\n \n\n
\n \n
\n
\n \n

{{ \"calificar.registrar\" | translate }}

\n \n {{ \"calificar.volver\" | translate }}\n \n
\n
\n
\n\n
\n
\n \n

{{ \"calificar.estas\" | translate }}

\n

{{ \"calificar.calificaste\" | translate }}

\n
\n \n \n
\n
\n

{{ calificando.nombre }} {{ calificando.apellido }}

\n {{ especialidadCaso }}\n \n

{{ \"calificar.caso\" | translate }}

\n

{{ caso.titulo }}

\n {{ caso.categoria }}\n
\n
\n \n

{{ \"calificar.tuCali\" | translate }}

\n\n
\n {{\n opinion.puntuacion\n }}\n
\n
\n {{\n estrella[1]\n }}\n {{\n estrella[2]\n }}\n {{\n estrella[3]\n }}\n {{\n estrella[4]\n }}\n {{\n estrella[5]\n }}\n
\n {{ ayuda }}\n \n {{ \"calificar.tuOpi\" | translate }}\n \n \n
\n \n \n {{ \"calificar.confirmar\" | translate }}\n \n \n {{ \"calificar.confirmar\" | translate }}\n \n \n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { ApiService } from './../../api/api.service';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { AfterViewInit } from '@angular/core';\nimport { Puntuacion } from 'src/app/interfaces/Puntuacion';\nimport { NuevaPuntuacion } from 'src/app/interfaces/NuevaPuntuacion';\nimport { environment } from 'src/environments/environment';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { EspecialidadDelCasoService } from '../../services/especialidad/especialidad-del-caso.service';\nimport { CasoDetallado } from '../../api/user';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogCalificarComponent } from './dialog/dialog.component';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-calificar',\n templateUrl: './calificar.component.html',\n styleUrls: ['./calificar.component.css'],\n})\nexport class CalificarComponent implements OnInit {\n titulo: string;\n\n calificando = {\n nombre: '',\n apellido: '',\n categoriaAbogado: '',\n titulo: '',\n categoriaCaso: '',\n };\n\n caso: CasoDetallado;\n especialidadCaso = '';\n\n calificado = false;\n clickeada = false;\n estrella = [\n '',\n 'star_border',\n 'star_border',\n 'star_border',\n 'star_border',\n 'star_border',\n ];\n ayuda = '';\n datos;\n clienteAbogado = 'cliente';\n puntuacion: NuevaPuntuacion = new NuevaPuntuacion();\n isAbogado: boolean = false;\n avatarUrl: string;\n\n opinion = {\n nombre: '',\n apellido: '',\n puntuacion: 0,\n estrellas: '',\n comentario: '',\n };\n\n constructor(\n private _snackBar: MatSnackBar,\n private router: Router,\n private route: ActivatedRoute,\n private apiService: ApiService,\n private _location: Location,\n private especialidadService: EspecialidadDelCasoService,\n public dialog: MatDialog,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n this.matIconRegistry.addSvgIcon(\n `perfil`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../assets/perfil.svg'\n )\n );\n this.caso = JSON.parse(localStorage.getItem('caso'));\n this.datos = JSON.parse(localStorage.getItem('datos'));\n console.log(this.caso, this.datos);\n this.isAbogado = this.datos.rolActual == '2';\n if (\n !this.isAbogado &&\n this.datos &&\n this.datos.abogado &&\n this.datos.abogado.avatarUrl\n ) {\n this.avatarUrl = environment.apiUrl + this.datos.abogado.avatarUrl;\n this.clienteAbogado = 'abogado';\n }\n if (\n this.isAbogado &&\n this.datos &&\n this.datos.cliente &&\n this.datos.cliente.avatarUrl\n ) {\n this.avatarUrl = environment.apiUrl + this.datos.cliente.avatarUrl;\n this.clienteAbogado = 'cliente';\n }\n }\n\n opinionForm = new UntypedFormGroup({\n nombre: new UntypedFormControl(),\n apellido: new UntypedFormControl(),\n comentario: new UntypedFormControl(),\n });\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n onSubmit() {\n if (this.opinion.puntuacion < 1 || this.opinion.puntuacion > 5) {\n this.ayuda = 'Califica y luego presiona continuar';\n } else {\n this.ayuda = '';\n this.opinion.comentario = this.opinionForm.value.comentario;\n this.openDialog();\n }\n }\n\n openDialog() {\n const { comentario } = this.opinionForm.value;\n this.puntuacion.caso = this.datos.id_caso;\n this.puntuacion.comentario = comentario;\n this.puntuacion.usuario = this.isAbogado\n ? this.datos.cliente.id_usuario\n : this.datos.abogado.id_usuario;\n this.puntuacion.puntuacion = this.opinion.puntuacion;\n const dialogRef = this.dialog.open(DialogCalificarComponent, {\n backdropClass: 'backdropBackground',\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.publicar();\n }\n });\n }\n\n puntuar(puntos) {\n this.clickeada = true;\n switch (puntos) {\n case 1:\n this.opinion.puntuacion = 1;\n break;\n case 2:\n this.opinion.puntuacion = 2;\n break;\n case 3:\n this.opinion.puntuacion = 3;\n break;\n case 4:\n this.opinion.puntuacion = 4;\n break;\n case 5:\n this.opinion.puntuacion = 5;\n break;\n default:\n break;\n }\n for (let i = 0; i < puntos + 1; i++) {\n this.estrella[i] = 'star';\n }\n for (let i = puntos + 1; i < this.estrella.length; i++) {\n this.estrella[i] = 'star_border';\n }\n }\n\n ngOnInit(): void {\n this.mapCalificando();\n }\n\n private mapCalificando() {\n if (!this.isAbogado) {\n this.calificando.nombre = this.datos.abogado.nombre;\n this.calificando.apellido = this.datos.abogado.apellido;\n this.calificando.categoriaAbogado = this.especialidadesToString(\n this.datos.abogado.datosProfesionales[0].especialidadesAbogados\n );\n this.especialidadCaso = this.especialidadService.match(\n this.caso.especialidad.nombre,\n this.datos.abogado\n );\n } else {\n this.calificando.nombre = this.datos.cliente.nombre;\n this.calificando.apellido = this.datos.cliente.apellido;\n }\n this.calificando.titulo = this.datos.tituloDelCaso;\n this.calificando.categoriaCaso = this.datos.categoriaCaso;\n }\n\n private especialidadesToString(especialidades: Array) {\n return especialidades.map((e) => e.nombre).join();\n }\n\n publicar() {\n const { comentario } = this.opinionForm.value;\n this.puntuacion.caso = this.datos.id_caso;\n this.puntuacion.comentario = comentario;\n this.puntuacion.usuario = this.isAbogado\n ? this.datos.cliente.id_usuario\n : this.datos.abogado.id_usuario;\n this.puntuacion.puntuacion = this.opinion.puntuacion;\n this.apiService.createPuntuacion(this.puntuacion).subscribe(\n () => {\n if (this.isAbogado) {\n this.calificado = true;\n } else {\n this.calificado = true;\n }\n localStorage.removeItem('datos');\n },\n (error) => {\n console.error(error);\n this.openSnackBar(\n 'No es posible publicar tu calificación, por favor intentá nuevamente más tarde'\n );\n }\n );\n this.calificado = true;\n }\n\n navegar() {\n this.router.navigate(['casos-activos/', this.isAbogado ? '2' : '3']);\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n}\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { loadScript } from '@paypal/paypal-js';\nimport { PlanPlataforma } from 'src/app/components/admin/multipago/modules/multipago.model';\nimport { environment } from 'src/environments/environment';\n\nexport enum PAYPAL_TIPO {\n SUSCRIPCION,\n PAGO\n}\n\n@Component({\n selector: 'app-popup-paypal-pago',\n templateUrl: './popup-paypal-pago.component.html',\n styleUrls: ['./popup-paypal-pago.component.css']\n})\nexport class PopupPaypalPagoComponent implements OnInit {\n\n planUuid: string;\n usuarioId: number;\n\n typePago: PAYPAL_TIPO = PAYPAL_TIPO.SUSCRIPCION;\n\n paypalClientId: string = environment.paypal_clientid;\n\n planPlataforma: PlanPlataforma;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) private data: any,\n public dialogRef: MatDialogRef\n ) { \n if (data['planUuid'])\n this.planUuid = data.planUuid;\n if (data['usuarioId'])\n this.usuarioId = data.usuarioId;\n if (data['typePago'])\n this.typePago = data.typePago;\n if (data['clientId'])\n this.paypalClientId = data.clientId;\n if (data['planPlataforma'])\n this.planPlataforma = data.planPlataforma;\n }\n\n ngOnInit(): void {\n const planUuid = this.planUuid;\n const usuarioId = this.usuarioId;\n\n if (this.typePago == PAYPAL_TIPO.SUSCRIPCION)\n this.doLoadSuscripcion();\n }\n\n doLoadSuscripcion(): void {\n loadScript({\n \"client-id\": this.paypalClientId,\n \"vault\": true,\n \"intent\": \"subscription\"\n }).then((paypal) => {\n paypal.Buttons({\n style: {\n shape: 'rect',\n color: 'gold',\n layout: 'vertical',\n label: 'subscribe'\n },\n createSubscription: (data, actions) => {\n return actions.subscription.create({\n plan_id: `${this.planUuid}`,\n custom_id: `${this.usuarioId}`\n });\n },\n onApprove: (data, actions) => {\n return new Promise(() => {\n console.log(\"OnApprove.\");\n console.log(data);\n console.log(actions);\n alert(\"Aprobado, en los proximos minutos se habilitara la suscripcion.\");\n this.dialogRef.close(data);\n });\n }\n }).render(\"#paypal-buttons\");\n });\n }\n\n doLoadCheckout(): void {\n loadScript({\n \"client-id\": this.paypalClientId\n }).then(paypal => {\n paypal.Buttons({\n style: {\n shape: 'rect',\n color: 'gold',\n layout: 'vertical'\n },\n createOrder(data, actions) {\n return actions.order.create({\n intent: 'CAPTURE',\n purchase_units: [{\n amount: {\n value: this.planPlataforma.monto,\n currency_code: this.planPlataforma.monedaId\n },\n payee: {\n email_address: JSON.parse(localStorage.user).mail\n },\n payment_instruction: {\n disbursement_mode: 'INSTANT',\n platform_fees: [{\n amount: {\n currency_code: this.planPlataforma.monedaId,\n value: \"3\"\n }\n }]\n }\n }],\n application_context: {\n return_url: `${environment.angularUrl}/pago`,\n cancel_url: `${environment.angularUrl}/cancel`\n }\n })\n },\n }).render(\"#paypal-buttons\");\n });\n }\n\n}\n","
","export interface NewUser {\n clave: string;\n mail: string;\n tutorialCompletado: boolean;\n}\n\nexport interface ResetPassword {\n mail: string;\n redirectUrl: string;\n}\n\nexport interface ResetPasswordRepeat {\n clave: string;\n idCambioClave: number;\n}\n\nexport interface ReturnUser {\n mail: string;\n lastName: string;\n name: string;\n clave: string;\n rol: Rol;\n token: string;\n tutorialCompletado: boolean;\n}\n\nexport interface RegisterClient {\n apellido: string;\n clave: string;\n datosUsuario: [\n {\n localidadId: number;\n numeroDni: string;\n tipoDni: string;\n direccion: string;\n codigoPostal: string;\n telefono: string;\n }\n ];\n lenguaje: string;\n mail: string;\n localidadId: number;\n nombre: string;\n pais: string;\n rol: number;\n mailConfirmUrl: string;\n redesSociales?: boolean;\n token?: string;\n}\n\nexport interface RegisterAbogado {\n apellido: string;\n clave: string;\n datosProfesionales: [\n {\n colegio: string;\n especialidadesIds: [number];\n folio: string;\n otro: string;\n localidadId: number;\n numeroDni: string;\n tipoDni: string;\n tomo: string;\n telefono: string;\n }\n ];\n mail: string;\n localidadId: number;\n nombre: string;\n pais: string;\n rol: number;\n mailConfirmUrl: string;\n suscripcionPlataforma?: string;\n suscripcionUuid?: string;\n id_usuario?: number;\n}\n\ninterface Rol {\n descripcion: string;\n estado: string;\n id: number;\n}\n\nexport interface Identificacion {\n id_tipos_identificacion: number;\n nombre: string;\n}\n\nexport interface PendienteAbogado {\n apellido: string;\n clave: string;\n datosProfesionales: [\n {\n colegio: string;\n especialidades: [\n {\n id_especialidad: 0;\n nombre: string;\n }\n ];\n folio: string;\n localidad: {\n id_localidad: 0;\n jurisdiccion: {\n id_jurisdiccion: 0;\n nombre: string;\n };\n nombre: string;\n };\n numeroDni: string;\n tipoDni: string;\n tomo: string;\n telefono: string;\n estado: string;\n }\n ];\n mail: string;\n nombre: string;\n pais: string;\n ciudad: string;\n provincia: string;\n rol: number;\n token: string;\n id_usuario: number;\n paisNombre:string;\n}\n\nexport interface PendienteAbogadoModal {\n apellido: string;\n clave: string;\n datosProfesionales: [\n {\n colegio: string;\n especialidadesIds: [number];\n folio: string;\n localidadId: number;\n numeroDni: string;\n tipoDni: string;\n tomo: string;\n }\n ];\n mail: string;\n nombre: string;\n pais: string;\n rol: number;\n token: string;\n id_usuario: number;\n}\n\nexport interface JurisdiccionEditarVer {\n jurisdiccionNombre: string;\n localidadNombre: string;\n tomo: string;\n folio: string;\n otro: string;\n id_datos_profesionales: number;\n colegio: string;\n aceptada: boolean;\n}\n\nexport interface JurisdiccionEditarVer2 {\n localidadId: number;\n colegio: string;\n tomo: string;\n folio: string;\n otro: string;\n id_datos_profesionales: number;\n jurisdiccionNombre: string;\n}\n\nexport interface JurisdiccionEditarVer3 {\n localidadId: number;\n colegio: string;\n tomo: string;\n folio: string;\n otro: string;\n datosProfesionalesId: number;\n jurisdiccionNombre: string;\n}\n\nexport interface Perfil {\n apellido: string;\n clave: string;\n datosProfesionales: [\n {\n id_datos_profesionales: number;\n colegio: string;\n especialidadesAbogados: [\n {\n id_especialidad: 0;\n nombre: string;\n nombreCliente: string[];\n }\n ];\n direccion: string;\n codigoPostal: number;\n cuit: string;\n folio: string;\n localidad: {\n id_localidad: 0;\n jurisdiccion: {\n id_jurisdiccion: 0;\n nombre: string;\n };\n nombre: string;\n };\n numeroDni: string;\n tipoDni: string;\n tomo: string;\n telefono: string;\n estado: string;\n otro: string;\n }\n ];\n datosUsuario: [\n {\n localidadId:number;\n direccion: string;\n codigoPostal: number;\n localidad: {\n id_localidad: 0;\n jurisdiccion: {\n id_jurisdiccion: 0;\n nombre: string;\n };\n nombre: string;\n };\n numeroDni: string;\n tipoDniId: number;\n tiposIdentificacionId: number;\n tipoDni: string;\n tomo: string;\n telefono: string;\n estado: string;\n }\n ];\n mail: string;\n nombre: string;\n pais: string;\n rol: number;\n token: string;\n id_usuario: number;\n descripcion: string;\n telefono: string;\n avatarUrl: string;\n puntuacionFinal?: number;\n cantOpiniones?: number;\n promocion?: string;\n}\n\nexport interface PerfilEditar {\n apellido: string;\n clave: string;\n datosProfesionales: [\n {\n colegio: string;\n especialidadesId: [number];\n folio: string;\n localidadId: number;\n numeroDni: string;\n tipoDni: string;\n tomo: string;\n }\n ];\n mail: string;\n mailConfirmUrl: string;\n nombre: string;\n pais: string;\n rol: number;\n token: string;\n id_usuario: number;\n descripcion: string;\n telefono: string;\n}\n\nexport interface Especialidad {\n id_especialidad: number;\n nombre: string;\n nombreCliente: string[];\n selected?: boolean;\n}\n\nexport interface MotivoBaja {\n id: String;\n descripcion: string;\n selected?: boolean;\n}\n\nexport interface BajaInput {\n id: Number;\n estado: String;\n motivoBaja: String;\n}\n\nexport interface Jurisdiccion {\n id_jurisdiccion: number;\n nombre: string;\n countryId?: number;\n}\n\nexport interface JurisdiccionCheckBox {\n id_jurisdiccion: number;\n nombre: string;\n selected: boolean;\n}\n\nexport interface DatosJurisdiccion {\n folio: string;\n tomo: string;\n colegio: string;\n localidadId: number;\n telefono: string;\n numeroDni: string;\n tipoDni: string;\n datosProfesionalesId: number;\n}\n\nexport interface Categoria {\n descripcion: string;\n id_categoria: number;\n titulo: string;\n}\n\nexport interface Localidad {\n id_localidad: number;\n jurisdiccion: {\n id_jurisdiccion: number;\n nombre: string;\n };\n nombre: string;\n}\n\nexport interface Caso {\n titulo: string;\n descripcion: string;\n localidadId: number;\n categoriaId: number;\n}\n\nexport interface CasoDetallado {\n categoria: {\n descripcion: string;\n id_categoria: number;\n titulo: string;\n tituloAlterado: string;\n };\n especialidad: {\n id_especialidad: number;\n nombre: string;\n nombreCliente: string;\n };\n descripcion: string;\n fechaCreacion: number;\n id_caso: number;\n localidad: {\n id_localidad: number;\n jurisdiccion: {\n id_jurisdiccion: number;\n nombre: string;\n };\n nombre: string;\n };\n profesionalAsignado: {\n colegio: string;\n especialidades: [\n {\n id_especialidad: number;\n nombre: string;\n }\n ];\n folio: string;\n localidad: {\n id_localidad: number;\n jurisdiccion: {\n id_jurisdiccion: number;\n nombre: string;\n };\n nombre: string;\n };\n numeroDni: string;\n tipoDni: string;\n tomo: string;\n };\n titulo: string;\n tituloAlterado: string;\n usuarioId: number;\n estado: string;\n isrejected: boolean;\n toggled:boolean;\n}\n\nexport interface Caso {\n titulo: string;\n descripcion: string;\n localidadId: number;\n categoriaId: number;\n}\n\nexport interface Opiniones {\n nombre: string;\n apellido: string;\n puntuacion: number;\n estrellas: string;\n comentario: string;\n}\n\nexport interface ListaArchivos {\n fecha: {\n calendarType: string;\n firstDayOfWeek: number;\n lenient: true;\n minimalDaysInFirstWeek: number;\n time: string;\n timeInMillis: number;\n timeZone: {\n displayName: string;\n dstsavings: number;\n id: string;\n rawOffset: number;\n };\n weekDateSupported: true;\n weekYear: number;\n weeksInWeekYear: number;\n };\n id_adjunto_caso: number;\n nombre: string;\n nombreoriginal: string;\n tipo: string;\n}\n\nexport interface Archivo {\n description: string;\n filename: string;\n inputStream: {};\n open: true;\n readable: true;\n uri: string;\n url: string;\n}\n\nexport const TI_MP = {\n 1: \"DNI\",\n 2: \"CI\",\n 3: \"LC\",\n 4: \"LE\",\n 5: \"Otro\"\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Component, Inject, OnInit, Renderer2 } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { TI_MP } from 'src/app/api/user';\nimport { PlanPlataforma } from 'src/app/components/admin/multipago/modules/multipago.model';\nimport { environment } from 'src/environments/environment';\n\ndeclare var MercadoPago: any; \n\n@Component({\n selector: 'app-popup-mercadopago-tarjeta',\n\n templateUrl: './popup-mercadopago-tarjeta.component.html',\n styleUrls: ['./popup-mercadopago-tarjeta.component.css']\n})\nexport class PopupMercadopagoTarjetaComponent implements OnInit {\n\n mpPublickToken = environment.mercadopago_token;\n\n planPlataforma: PlanPlataforma;\n\n cardFormdata: any;\n\n constructor(\n private _renderer2: Renderer2,\n @Inject(DOCUMENT) private _document,\n @Inject(MAT_DIALOG_DATA) private data: any,\n public dialogRef: MatDialogRef,\n ) { \n if (data['planPlataforma'])\n this.planPlataforma = data.planPlataforma;\n }\n\n ngOnInit(): void {\n let script = this._renderer2.createElement('script');\n script.type = 'text/javascript';\n script.src = 'https://sdk.mercadopago.com/js/v2';\n script.onload = () => {\n console.log(\"MercadoPago\"); \n console.log(MercadoPago);\n this.doLoadMercadoPago();\n };\n this._renderer2.appendChild(this._document.body, script);\n }\n\n ngAfterViewInit(): void {\n }\n\n doLoadMercadoPago(): void {\n let usuario: any = JSON.parse(localStorage.getItem('user'));\n const mp = new MercadoPago(this.mpPublickToken, {\n locale: 'es-AR'\n });\n const bricksBuilder = mp.bricks();\n const renderCardPaymentBrick = async (bricksBuilder) => {\n const settings = {\n initialization: {\n amount: this.planPlataforma.monto, // monto a ser pago\n payer: {\n email: `${usuario.mail}`,\n identification: {\n type: `${TI_MP[usuario.datosProfesionales[0].tipoDniId]}`,\n number: `${usuario.datosProfesionales[0].numeroDni}`\n }\n }\n },\n customization: {\n visual: {\n style: {\n theme: 'default', // | 'dark' | 'bootstrap' | 'flat'\n texts: {\n cardholderName: {\n placeholder: \"_\"\n }\n }\n }\n },\n paymentMethods: {\n minInstallments: 1,\n maxInstallments: 1\n },\n },\n callbacks: {\n onReady: () => {\n // callback llamado cuando Brick esté listo\n },\n onSubmit: (cardFormData) => {\n // callback llamado cuando el usuario haga clic en el botón enviar los datos\n // ejemplo de envío de los datos recolectados por el Brick a su servidor\n console.log(cardFormData);\n this.cardFormdata = cardFormData;\n this.dialogRef.close(cardFormData);\n return;\n },\n onError: (error) => {\n // callback llamado para todos los casos de error de Brick\n },\n },\n };\n await bricksBuilder.create('cardPayment', 'cardPaymentBrick_container', settings);\n };\n renderCardPaymentBrick(bricksBuilder);\n }\n\n doLoadMercadoPagoAPI(): void {\n let usuario: any = JSON.parse(localStorage.getItem('user'));\n const mp = new MercadoPago(this.mpPublickToken);\n\n const cardForm = mp.cardForm({\n amount: `${this.planPlataforma.monto}`,\n iframe: true,\n form: {\n id: \"form-checkout\",\n cardNumber: {\n id: \"form-checkout__cardNumber\",\n placeholder: \"Numero de tarjeta\",\n },\n expirationDate: {\n id: \"form-checkout__expirationDate\",\n placeholder: \"MM/YY\",\n },\n securityCode: {\n id: \"form-checkout__securityCode\",\n placeholder: \"Código de seguridad\",\n },\n cardholderName: {\n id: \"form-checkout__cardholderName\",\n placeholder: \"Titular de la tarjeta\",\n },\n issuer: {\n id: \"form-checkout__issuer\",\n placeholder: \"Banco emisor\",\n },\n installments: {\n id: \"form-checkout__installments\",\n placeholder: \"Cuotas\",\n }, \n identificationType: {\n id: \"form-checkout__identificationType\",\n placeholder: \"Tipo de documento\",\n },\n identificationNumber: {\n id: \"form-checkout__identificationNumber\",\n placeholder: \"Número del documento\",\n },\n cardholderEmail: {\n id: \"form-checkout__cardholderEmail\",\n placeholder: \"E-mail\",\n },\n },\n callbacks: {\n onFormMounted: error => {\n if (error) return console.warn(\"Form Mounted handling error: \", error);\n console.log(\"Form mounted\");\n },\n onSubmit: event => {\n event.preventDefault();\n\n const {\n paymentMethodId: payment_method_id,\n issuerId: issuer_id,\n cardholderEmail: email,\n amount,\n token,\n installments,\n identificationNumber,\n identificationType,\n } = cardForm.getCardFormData();\n\n fetch(\"/process_payment\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n token,\n issuer_id,\n payment_method_id,\n transaction_amount: Number(amount),\n installments: Number(installments),\n description: \"Descripción del producto\",\n payer: {\n email,\n identification: {\n type: identificationType,\n number: identificationNumber,\n },\n },\n }),\n });\n },\n onFetching: (resource) => {\n console.log(\"Fetching resource: \", resource);\n\n // Animate progress bar\n const progressBar = document.querySelector(\".progress-bar\");\n progressBar.removeAttribute(\"value\");\n\n return () => {\n progressBar.setAttribute(\"value\", \"0\");\n };\n }\n },\n });\n }\n}\n","
\n","import { AfterViewInit, Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Subject } from 'rxjs';\nimport { PlanPlataforma } from 'src/app/components/admin/multipago/modules/multipago.model';\nimport { PopupMercadopagoTarjetaComponent } from '../popup-mercadopago-tarjeta/popup-mercadopago-tarjeta.component';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\n\n@Component({\n selector: 'app-popup-mercadopago-opciones',\n templateUrl: './popup-mercadopago-opciones.component.html',\n styleUrls: ['./popup-mercadopago-opciones.component.css']\n})\nexport class PopupMercadopagoOpcionesComponent implements OnInit, AfterViewInit {\n\n planPlataforma: PlanPlataforma;\n\n onReturnURL: Subject;\n\n formMail: FormGroup;\n\n constructor(@Inject(MAT_DIALOG_DATA) private data: any,\n private dialogRef: MatDialogRef,\n private dialog: MatDialog\n ) {\n let mail: string;\n if (data['planPlataforma'])\n this.planPlataforma = data.planPlataforma;\n \n this.onReturnURL = new Subject();\n\n mail = JSON.parse(localStorage.user).mail;\n this.formMail = new FormGroup({\n mail: new FormControl(mail, [Validators.required, Validators.email])\n });\n }\n\n ngOnInit(): void {\n console.log(\"PopupMercadopagoOpcionesComponent\");\n this.formMail.valid\n }\n\n ngAfterViewInit(): void {\n console.log(\"PopupMercadopagoOpcionesComponent: ngAfterViewInit\");\n }\n\n onSelTarjeta(): void {\n this.dialogRef.close();\n\n const dialogRef = this.dialog.open(PopupMercadopagoTarjetaComponent, {\n backdropClass: 'backdropBackground',\n data: {\n planPlataforma: this.planPlataforma\n }\n });\n\n dialogRef.afterClosed().subscribe(response => {\n try {\n if (!response)\n return;\n \n this.doSelOption(response.token);\n } finally {\n this.onReturnURL.complete();\n }\n });\n }\n\n onSelPlataforma(): void {\n this.dialogRef.close();\n\n this.doSelOption(\"false\");\n this.onReturnURL.complete();\n }\n\n onSelByUrl(): void {\n this.dialogRef.close();\n\n this.doSelOption(\"isPlanByUrl\");\n this.onReturnURL.complete();\n }\n\n doSelOption(option: string): void {\n let send = Object.assign({}, this.planPlataforma);\n send.optional01 = option;\n send.optional02 = this.formMail.getRawValue().mail;\n\n this.onReturnURL.next(send);\n }\n\n}\n","
\n \n Correo electronico\n \n Correo electronico con la se asociara a la cuenta MercadoPago\n \n
\n \n \n \n
\n
\n","\n \n \n Planes\n\n\n
\n
\n \n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n {{ textoSubscripcion }}\n
\n {{ 'plan.textoFinalizacion' | translate }}\n
\n \n
\n \n
\n \n Cancelar plan\n \n
\n
\n
\n\n \n
\n INACTIVO\n PENDIENTE DE PAGO\n
\n \n
\n \n\n \n
\n \n \n Renovar plan\n \n \n \n \n \n Contratar plan\n \n \n \n \n \n {{ planPlataforma.plataformaNombre }} - {{planPlataforma.monto}}/{{ planPlataforma.monedaId }}\n \n \n
\n
\n
\n
\n
\n \n
\n {{ textoSubscripcion }}\n
\n \n
\n \n \n
\n \n {{ planPlataforma.plataformaNombre }} - {{planPlataforma.monto}}/{{ planPlataforma.monedaId }}\n \n
\n
\n
\n
\n
\n
\n\n \n
\n
\n {{ textoSubscripcion }}\n
\n \n
\n \n\n \n
\n \n {{ planPlataforma.plataformaNombre }} - {{planPlataforma.monto}}/{{ planPlataforma.monedaId }}\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n \n \n
\n {{ textoSubscripcion }}\n
\n {{ 'plan.textoFinalizacion' | translate }}\n
\n \n
\n \n
\n \n Cancelar plan\n \n
\n
\n
\n\n \n
\n INACTIVO\n PENDIENTE DE PAGO\n
\n \n
\n \n\n \n
\n \n \n Renovar plan\n \n \n \n \n \n Contratar plan\n \n \n \n \n \n {{ planPlataforma.plataformaNombre }} - {{planPlataforma.monto}}/{{ planPlataforma.monedaId }}\n \n \n \n
\n
\n
\n
\n
\n \n
\n {{ textoSubscripcion }}\n
\n \n
\n \n \n
\n \n {{ planPlataforma.plataformaNombre }} - {{planPlataforma.monto}}/{{ planPlataforma.monedaId }}\n \n
\n
\n
\n
\n
\n
\n\n \n \n
\n
\n SS153\n {{ textoSubscripcion }}\n
\n \n
\n \n \n \n
\n \n {{ planPlataforma.plataformaNombre }} - {{planPlataforma.monto}}/{{ planPlataforma.monedaId }}\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n","import { Component, OnInit, Input } from '@angular/core';\nimport {\n MatDialog,\n} from '@angular/material/dialog';\nimport {\n GetLinkData,\n Planes,\n PlanesIncrease,\n StatusIncrease,\n} from '../../../api/planes';\nimport { Perfil } from '../../../api/user';\nimport { ContratarPlan } from '../../../api/mercado';\nimport { PlanService } from '../../../services/plan/plan.service';\nimport { TiempoSubscripcionService } from '../../../services/tiempoSubscripcion/tiempo-subscripcion.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { CancelarComponent } from './cancelar/cancelar/cancelar.component';\nimport { ApiService } from '../../../api/api.service';\nimport { UpdateRangesService } from '../../../services/agenda/update-ranges.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Router } from '@angular/router';\nimport { PopupFacturacionComponent } from './popup-facturacion/popup-facturacion.component';\nimport { PlanMultipagoService } from '../../../services/plan/plan-multipago.service';\nimport { MultipagoService } from '../../admin/multipago/modules/multipago.service';\nimport { PlanMoneda, PlanPlataforma, Suscripcion } from '../../admin/multipago/modules/multipago.model';\nimport { Observable, Subject } from 'rxjs';\nimport { PopupPaypalPagoComponent } from '../../commons/dialogo/mercadopago/popup-paypal-pago/popup-paypal-pago.component';\nimport { PopupMercadopagoOpcionesComponent } from './popup-mercadopago-opciones/popup-mercadopago-opciones.component';\n\n@Component({\n selector: 'app-plan',\n templateUrl: './plan.component.html',\n styleUrls: ['./plan.component.css'],\n})\nexport class PlanComponent implements OnInit {\n planes: PlanesIncrease[\"planes\"];\n plan: any;\n planContratado: StatusIncrease[\"suscripcion\"];\n suscripcionSel: Suscripcion;\n posicion: number;\n contratarPlan: ContratarPlan;\n textoSubscripcion: string;\n @Input('abogado') perfil: Perfil;\n\n cachePlanes: Planes[] = [];\n cachePlanMonedas: PlanMoneda[] = [];\n cachePlanById = {};\n\n constructor(private router: Router,\n private planService: PlanService,\n private apiService: ApiService,\n private servicePlanMP: PlanMultipagoService,\n private serviceMultipago: MultipagoService,\n public dialog: MatDialog,\n public tiempoSubscripcionService: TiempoSubscripcionService,\n private snackBar: MatSnackBar,\n private updateRangesService: UpdateRangesService,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT', 'en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n ngOnInit(): void {\n this.planService.verificoDatosFacturacion();\n this.getCuenta()\n this.apiService.getPerfil().subscribe(\n (perfil) => {\n this.perfil = perfil;\n this.getPlanMonedaPlanesDips();\n },\n (error) => {\n console.error(error);\n this.snackBar.open(\n 'No fue posible obtener la lista de planes, por favor intente nuevamente más tarde.',\n '',\n { duration: 5000 }\n );\n }\n );\n\n /*this.planService.getPlanesAbogado().subscribe(\n (respuesta) => {\n this.planes = respuesta;\n this.planes.splice(this.planes.findIndex( e => e.nombre == \"Plan Dummy\"),1)\n this.getCuenta();\n this.plan = this.planes[0];\n this.posicion = 0;\n console.log('BASE DE DATOS:' + this.planes[2].jurisdicciones);\n },\n (error) => {\n console.error(error);\n this.snackBar.open(\n 'No fue posible obtener la lista de planes, por favor intente nuevamente más tarde.',\n '',\n { duration: 5000 }\n );\n }\n );*/\n\n \n this.getPlanes()\n }\n\n getPlanMonedaPlanesDips(): void {\n this.servicePlanMP.getPlanMonedaPlanesDips().subscribe({\n next: (planes: Planes[]) => {\n this.serviceMultipago.getPlanMonedasByCountryUser().subscribe({\n next: (planMonedas: PlanMoneda[]) => {\n let planesFilter: Planes[] = [];\n let mapPlanMoneda = {};\n let pm: PlanMoneda;\n this.cachePlanMonedas = planMonedas;\n\n this.cachePlanById = {};\n planMonedas.forEach((planMoneda) => {\n mapPlanMoneda[planMoneda.planMonedaId] = planMoneda;\n if (!this.cachePlanById[planMoneda.planId] || planMoneda.principal) {\n this.cachePlanById[planMoneda.planId] = planMoneda;\n }\n });\n\n Object.keys(this.cachePlanById).forEach((planId) => {\n pm = this.cachePlanById[planId];\n planes.some((plan) => {\n if (plan.planTipoId == 2 && plan.id_plan == pm.planId && plan.costo == pm.monto && plan.costoAnual == pm.montoAnual) {\n plan.nombrePlan = plan.nombre;\n plan.planPlataformasMes = [];\n plan.planPlataformasAnio = [];\n planesFilter.push(plan);\n }\n });\n });\n\n this.serviceMultipago.getPlanPlataformas().subscribe({\n next: (planPlataformas: PlanPlataforma[]) => {\n planPlataformas.forEach((planPlataforma) => {\n if (this.perfil.pais != \"\" + planPlataforma.countryId)\n return;\n if (planPlataforma.planTipoId != 2)\n return;\n if (!planPlataforma.activo)\n return;\n planesFilter.some((plan: Planes) => {\n if (planPlataforma.planId == plan.id_plan) {\n let planMoneda: PlanMoneda = mapPlanMoneda[planPlataforma.planMonedaId];\n if (planPlataforma.plataformaMonedaEstado && planMoneda.visible) {\n switch (planPlataforma.ciclo) {\n case 1:\n if (planMoneda && planMoneda.principal) {\n plan.planPlataformasMes.unshift(planPlataforma);\n plan.moneda = planMoneda.monedaId;\n plan.costo = planPlataforma.monto;\n } else {\n plan.planPlataformasMes.push(planPlataforma);\n if (!plan.moneda) {\n plan.moneda = planMoneda.monedaId;\n plan.costo = planPlataforma.monto;\n }\n }\n break;\n case 2:\n if (planMoneda && planMoneda.principal) {\n plan.planPlataformasAnio.unshift(planPlataforma);\n plan.monedaAnual = planMoneda.monedaId;\n plan.costoAnual = planPlataforma.monto;\n }\n else {\n plan.planPlataformasAnio.push(planPlataforma);\n if (!plan.monedaAnual) {\n plan.monedaAnual = planMoneda.monedaId;\n plan.costoAnual = planPlataforma.monto;\n }\n }\n break;\n }\n }\n return true;\n }\n return false;\n });\n });\n\n this.cachePlanes = planesFilter;\n }\n });\n }\n });\n }\n });\n }\n\n getCuenta() {\n this.planService.getClientStatus().subscribe(res => {\n if (res.mensaje == \"OK\") {\n if(res.suscripcion) {\n this.planContratado = res.suscripcion;\n this.textoSubscripcion = this.tiempoSubscripcionService.getTiempo(res.suscripcion);\n if(res.cuit == null || res.cuit.length < 1 || res.codigoPostal == null || res.direccion == null){\n const dialogRef = this.dialog.open(PopupFacturacionComponent, {\n backdropClass: 'backdropBackground',\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (!result) {\n this.planService.verificoDatosFacturacion();\n window.location.reload();\n }\n });\n }\n }\n }\n }, err => {\n console.log(err)\n });\n\n this.servicePlanMP.getSubscripcionLast().subscribe({\n next: (suscripcion: Suscripcion) => {\n this.suscripcionSel = suscripcion;\n }\n });\n }\n\n getPlanes() {\n this.planService.getPlanesIncrease().subscribe((res) =>{\n this.planes = res.planes.map(e => {\n switch (e.nombrePlan) {\n case \"Plan Basico\":\n e.especialidades = 1;\n e.jurisdicciones = 1;\n break;\n case \"Plan Premium\":\n e.especialidades = 3;\n e.jurisdicciones = 2;\n break;\n case \"Plan Corporativo\":\n e.especialidades = 9999;\n e.jurisdicciones = 9999;\n break;\n }\n e.planVencido = false\n return e\n })\n //Delete PLan Basico of array this.planes twice\n this.planes.splice(this.planes.findIndex( e => e.nombrePlan == \"Plan Basico\"),1)\n this.planes.splice(this.planes.findIndex( e => e.nombrePlan == \"Plan Basico\"),1)\n this.planes.sort((a, b) => Number(a.precio) - Number(b.precio));\n }, (error) => {\n throw error\n })\n this.posicion = 0\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n contratar(planCont) {\n window.open(planCont.checkoutLink, \"_self\")\n }\n\n elegirPlanPlataforma(planPlataforma: PlanPlataforma): void {\n const subject: Subject = new Subject();\n\n subject.subscribe({\n next: (result: PlanPlataforma) => {\n this.servicePlanMP.doAbogadoSuscribir(result).subscribe({\n next: (checkoutUrl: string[]) => {\n if (checkoutUrl)\n window.open(checkoutUrl[0], \"_self\")\n },\n error: (err: any) => {\n if (err.error && err.error.message) {\n this.snackBar.open(\n err.error.message,\n '',\n { duration: 5000 }\n );\n }\n console.log(err);\n }\n });\n }\n });\n \n if (planPlataforma.plataformaNombre == \"MercadoPago\") {\n let dialogRef = this.dialog.open(PopupMercadopagoOpcionesComponent, {\n data: {\n planPlataforma: planPlataforma\n }\n });\n\n dialogRef.componentInstance.onReturnURL.subscribe({\n next: (result: PlanPlataforma) => {\n subject.next(result);\n }\n });\n // dialogRef.componentInstance.onSelPlataforma();\n } else if (planPlataforma.plataformaNombre == \"Paypal\") {\n const dialogRef = this.dialog.open(PopupPaypalPagoComponent, {\n backdropClass: 'backdropBackground',\n data: {\n planUuid: planPlataforma.uuid,\n usuarioId: this.perfil.id_usuario\n }\n });\n\n dialogRef.afterClosed().subscribe(response => {\n if (!response)\n return;\n \n this.router.navigate(['/plan/exito'], {\n queryParams: {\n type: \"paypal\",\n uuid: response.subscriptionID\n }\n });\n });\n } else {\n subject.next(planPlataforma);\n } \n }\n\n isPlanWithSuscription(plan: Planes, planPlataformas: PlanPlataforma[], suscripcion: Suscripcion): boolean {\n let result: boolean = false;\n\n if (plan.id_plan != suscripcion.planId)\n return false;\n result = planPlataformas.some((planPlataforma) => {\n if (suscripcion.planId == planPlataforma.planId)\n return true;\n return false;\n });\n \n return result;\n }\n\n isSuscripcionActivo(plan: Planes, suscripcion: Suscripcion): boolean {\n let activo: boolean = suscripcion.estado == 'active';\n\n activo = plan.id_plan == suscripcion.planId;\n activo = activo && suscripcion.estado == 'active';\n\n return activo;\n }\n\n isSuscripcionActivoWithRaw(): boolean {\n let activo: boolean;\n\n activo = this.suscripcionSel && this.suscripcionSel.estado == 'active' && this.suscripcionSel.estadoRaw != 'pending_canceled';\n return activo;\n }\n\n isSuscripcionInactivo(plan: Planes, suscripcion: Suscripcion): boolean {\n let activo: boolean;\n\n activo = plan.id_plan == suscripcion.planId;\n activo = activo && suscripcion.estado == 'canceled' || suscripcion.estado == 'pending';\n\n return activo;\n }\n\n elegir(planElegido, anual: boolean) {\n let getLinkData: GetLinkData = {\n planId: planElegido.id_plan,\n anual: anual,\n };\n let eleccionObj = {\n planId: planElegido.planId\n }\n if(this.planContratado && this.planContratado.planId != planElegido.id_plan && this.planContratado.status !== \"pending\" && this.planContratado.status !== \"canceled\"){\n const dialogRef = this.dialog.open(CancelarComponent, {\n data: {\n titulo: 'Ya tienes un plan contratado',\n texto:\n 'Tendras que cancelar el plan actual para cambiar a otro. Al hacerlo, no podrás utilizar ningún servicio hasta que vuelvas a contratar otro plan. No se realizará ningún reintegro de los días que restan para finalizar el ciclo de facturación.',\n textoBotonCerrar: 'NO',\n textoBotonConfirmar: 'CANCELAR PLAN',\n mostrarCancelar: true,\n },\n backdropClass: 'backdropBackground',\n });\n \n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.planService.deleteClientPlan({ idSuscripcion: this.planContratado.suscripcionId}).subscribe( res => {\n console.log(res)\n }, err => console.log(err))\n this.planService.setIncreaseClient(eleccionObj).subscribe(res => {\n console.log(res)\n if (res.mensaje == \"OK\") {\n window.open(res.chekoutLink, \"_self\")\n }\n }, err => {\n console.log(err)\n })\n }\n });\n }else{\n this.planService.setIncreaseClient(eleccionObj).subscribe(res => {\n console.log(res)\n if (res.mensaje == \"OK\") {\n window.open(res.chekoutLink, \"_self\")\n }\n }, err => {\n console.log(err)\n })\n }\n }\n\n\n cancelar() {\n const dialogRef = this.dialog.open(CancelarComponent, {\n data: {\n titulo: '¿Deseas cancelar tu plan?',\n texto:\n 'Al hacerlo, no podrás utilizar ningún servicio hasta que vuelvas a contratar otro plan. No se realizará ningún reintegro de los días que restan para finalizar el ciclo de facturación.',\n textoBotonCerrar: 'NO',\n textoBotonConfirmar: 'CANCELAR PLAN',\n mostrarCancelar: true,\n },\n backdropClass: 'backdropBackground',\n });\n\n dialogRef.afterClosed().subscribe((result) => {\n if (result) {\n this.removePlangotPerfil();\n }\n });\n }\n\n removePlangotPerfil() {\n console.log(this.suscripcionSel);\n\n this.servicePlanMP.doAbogadoSuscripcionCancelar(this.suscripcionSel).subscribe({\n next: () => {\n this.snackBar.open('El plan se canceló correctamente', '', {\n duration: 5000,\n });\n this.getCuenta();\n },\n error: (err) => {\n if (err.error && err.error.message) {\n this.snackBar.open(\n err.error.message,\n '', {\n duration: 5000\n }\n );\n } else if (err.message) {\n this.snackBar.open(\n err.message,\n '', {\n duration: 5000\n }\n );\n }\n console.log(err);\n }\n });\n\n return;\n let planDeleteObj = {\n idSuscripcion: this.planContratado.suscripcionId\n }\n\n console.log(planDeleteObj)\n this.planService.deleteClientPlan(planDeleteObj).subscribe(\n (respuesta) => {\n this.snackBar.open('El plan se canceló correctamente', '', {\n duration: 5000,\n });\n this.router.navigate(['/perfil-abogado']);\n },\n (error) => {\n console.error(error);\n this.snackBar.open(\n 'No fue posible cancelar tu plan, por favor intente nuevamente más tarde.',\n '',\n { duration: 5000 }\n );\n }\n );\n }\n\n removePlanAsync() {\n\n this.planService.removePlan().subscribe(\n (respuesta) => {\n\n },\n (error) => {\n console.error(error);\n this.snackBar.open(\n 'No fue posible cancelar tu plan, por favor intente nuevamente más tarde.',\n '',\n { duration: 5000 }\n );\n }\n );\n\n }\n\n openDialogCurso() {\n const dialogRef = this.dialog.open(CancelarComponent, {\n data: {\n titulo: 'Tienes un plan en curso',\n texto:\n 'Para suscribirte a otro plan, primero debes cancelar el plan que tienes en curso',\n textoBotonCerrar: 'ENTENDIDO',\n mostrarCancelar: false,\n },\n backdropClass: 'backdropBackground',\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SpinnerServiceService {\n\n private showSpinner : BehaviorSubject;\n public showSpinner$ : Observable;\n\n constructor() {\n this.showSpinner = new BehaviorSubject (false);\n this.showSpinner$ = this.showSpinner.asObservable();\n }\n\n updateShowSpinner(display: boolean) {\n this.showSpinner.next(display);\n }\n}\n","
\n \n \n \n {{ titulo }}\n \n \n
\n \n
\n \n
\n
\n
\n
\n
\n \n {{ \"agregar.jurisdiccion\" | translate }}\n \n \n {{ jurisdiccion.nombre }}\n \n \n \n
\n \n {{ \"agregar.colegio\" | translate }}\n \n {{ \"agregar.letras\" | translate }}\n \n \n
\n
\n
\n \n {{ \"agregar.jurisdiccion\" | translate }}\n \n \n {{ jurisdiccion.nombre }}\n \n \n \n \n \n {{ \"agregar.letras\" | translate }}\n \n \n
\n
\n \n {{ \"agregar.tomo\" | translate }}\n \n {{ \"agregar.validar\" | translate }}\n
\n {{ \"agregar.tomoCar\" | translate }}\n \n
\n \n {{ \"agregar.folio\" | translate }}\n \n {{ \"agregar.folioCar\" | translate }}\n \n \n\n \n {{ \"agregar.matricula\" | translate }}\n \n \n
\n\n
\n \n {{ \"agregar.continuar\" | translate }}\n \n
\n \n \n \n {{ \"agregar.continuar\" | translate }}\n \n
\n \n \n {{ \"agregar.cancelar\" | translate }}\n \n
\n\n
\n
\n \n \n
{{ especialidad.nombre }}
\n \n \n
\n
\n
\n \n \n
{{ especialidad.nombre }}
\n \n \n \n
\n
\n
\n \n {{ \"agregar.continuar\" | translate }}\n \n \n {{ \"agregar.cancelar\" | translate }}\n \n
\n
\n \n\n","import { Component, HostListener, OnInit } from '@angular/core';\nimport {\n DatosJurisdiccion,\n Especialidad,\n Jurisdiccion,\n JurisdiccionEditarVer2,\n JurisdiccionEditarVer3,\n Localidad,\n ReturnUser,\n} from '../../../api/user';\n// import { Rango, RangoConId } from '../../../api/horarios';\nimport { ApiService } from '../../../api/api.service';\nimport {\n FormBuilder,\n UntypedFormGroup,\n Validators,\n UntypedFormControl,\n} from '@angular/forms';\n// import { environment } from '../../../../environments/environment';\n// import { MatIconRegistry } from \"@angular/material/icon\";\n// import { DomSanitizer } from \"@angular/platform-browser\";\nimport { Router } from '@angular/router';\nimport { MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { DialogComponent as DialogComponentPlan } from '../perfil-abogado/dialog.component';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n// import { Perfil } from '../../../api/user';\n// import { RoleNumber } from '../../../enums/role';\n// import { UpdateRangesService } from '../../../services/agenda/update-ranges.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { browser } from 'protractor';\nimport { SpinnerServiceService } from 'src/app/services/spinner-service/spinner-service.service';\n\n@Component({\n selector: 'app-agregar',\n templateUrl: './agregar.component.html',\n styleUrls: ['./agregar.component.css'],\n})\nexport class AgregarComponent implements OnInit {\n telefono: string = '';\n numeroDni: string = '';\n tipoDni: string = '';\n titulo: string;\n planApto = false;\n mostrarEspecialidades: boolean = false;\n mostrarJurisdiccion: boolean = false;\n editarJurisdiccion: boolean = false;\n // todasEspecialidades: Especialidad[];\n // especialidadesSeleccionadas: Especialidad[] = [];\n jurisdicciones: Jurisdiccion[];\n jurisdiccionesExistentes: any;\n localidades: Localidad[];\n colegioValido: boolean = true;\n tomoValido: boolean = true;\n folioValido: boolean = true;\n userId: number;\n pais:string='';\n showTomo=true;\n showFolio=true;\n showMatricula=true;\n\n agregarJurisdiccion = new UntypedFormGroup({\n tomo: new UntypedFormControl('', [Validators.max(999), Validators.min(0)]),\n folio: new UntypedFormControl('', [Validators.max(9999), Validators.min(0)]),\n colegio: new UntypedFormControl('', [\n Validators.maxLength(255),\n Validators.pattern(/^[a-zA-ZñÑáéíóúÁÉÍÓÚ.\\s]+$/),\n ]),\n otro: new UntypedFormControl(),\n jurisdiccion: new UntypedFormControl(),\n localidad: new UntypedFormControl(),\n id_datos_profesionales: new UntypedFormControl(),\n });\n cargando:boolean= false;\n constructor(\n private spinnerServiceService: SpinnerServiceService,\n private _snackBar: MatSnackBar,\n private router: Router,\n public dialog: MatDialog,\n private apiService: ApiService,\n public translate: TranslateService // private matIconRegistry: MatIconRegistry, // private domSanitizer: DomSanitizer, // private updateRangesService: UpdateRangesService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n\n let mode = localStorage.getItem('mode');\n // if (mode == \"especialidades\") {\n // this.titulo = \"Agregar especialidad\";\n // this.mostrarEspecialidades = true;\n // }\n if (mode == 'jurisdiccion') {\n //this.titulo = 'Agregar jurisdicción';\n this.translate\n .get('agregar.agregarJur')\n .subscribe((translate: string) => {\n this.titulo = this.translate.instant('agregar.agregarJur');\n });\n this.mostrarJurisdiccion = true;\n }\n if (mode == 'editar') {\n //this.titulo = 'Editar jurisdicción';\n this.translate\n .get('agregar.agregarJur')\n .subscribe((translate: string) => {\n this.titulo = this.translate.instant('agregar.editarJur');\n });\n this.mostrarJurisdiccion = true;\n this.editarJurisdiccion = true;\n }\n\n // this.matIconRegistry.addSvgIcon(\n // `Derecho Laboral`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/Laboral.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Derecho de Familia y Sucesiones`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/individuos.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Derecho Comercial`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/comercial.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Contratos`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/contratos.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Derecho del Consumidor`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/defensa.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Derecho Tributario`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/impuestos.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Inmobiliario y Propiedad Horizontal`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/inmobiliaria.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Otros`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/otros.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Derecho Penal`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/penal.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Sucesiones y herencias`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/sucesiones.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Derecho Previsional`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/previsional.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Derecho Digital Internet y Tecnología`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/digital.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Daños y Perjuicios`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/perjuicios.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Derecho de Sociedades y Corporativo`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/societario.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Accidentes de tránsito`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/accidentes.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Propiedad Industrial e Intelectual`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/propiedad.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Mala Praxis y Salud`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/mala.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Discriminación y violencia de género`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/discriminacion.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `ayuda`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/ayuda.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Derecho Aduanero y Comercio Exterior`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/aduanero.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Derecho Administrativo y Regulación Económica`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/administrativo.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Derecho Migratorio`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/derecho-migratorio.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Derecho Civil`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/derecho-civil.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Derecho Ambiental`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/derecho ambiental.svg')\n // );\n // this.matIconRegistry.addSvgIcon(\n // `Concursos y Quiebras`,\n // this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../../../assets/quiebras.svg')\n // );\n }\n\n // guardar(especialidad) {\n // especialidad.selected = !especialidad.selected;\n // if (especialidad.selected) {\n // console.log(especialidad)\n // this.especialidadesSeleccionadas.push(especialidad);\n // console.log(this.especialidadesSeleccionadas)\n // } else {\n // const i = this.especialidadesSeleccionadas.indexOf(especialidad);\n // if (i > -1) this.especialidadesSeleccionadas.splice(i, 1);\n // }\n\n // }\n\n cancelar() {\n this.mostrarEspecialidades = false;\n this.mostrarJurisdiccion = false;\n this.editarJurisdiccion = false;\n localStorage.removeItem('especialidades');\n localStorage.removeItem('mode');\n localStorage.removeItem('jurisdiccion');\n localStorage.removeItem('jurisdiccionesExistentes');\n this.router.navigate(['/perfil-abogado']);\n }\n\n openDialog() {\n this.dialog.open(DialogComponentPlan, {\n backdropClass: 'backdropBackground',\n });\n }\n\n onKey(event) {\n event.target.value = event.target.value.toUpperCase();\n }\n\n cargarLocalidades() {\n this.apiService\n .getLocalidades(\n this.agregarJurisdiccion.value.jurisdiccion.id_jurisdiccion\n )\n .subscribe(\n (localidad) => {\n this.localidades = localidad;\n },\n (error) => {\n this.openSnackBar(\n 'No fue posible obtener el listado de localidades. Por favor, intente nuevamente más tarde.'\n );\n }\n );\n }\n\n editar() {\n \n let jurisdiccion: JurisdiccionEditarVer2 = JSON.parse(\n localStorage.getItem('jurisdiccion')\n );\n let datos: JurisdiccionEditarVer3 = {\n localidadId: this.localidades[0].id_localidad,\n colegio: this.agregarJurisdiccion.value.colegio.toUpperCase(),\n tomo: this.agregarJurisdiccion.value.tomo,\n folio: this.agregarJurisdiccion.value.folio,\n otro: this.agregarJurisdiccion.value.otro,\n datosProfesionalesId:\n jurisdiccion.id_datos_profesionales,\n jurisdiccionNombre: this.agregarJurisdiccion.value.nombre,\n };\n\n this.apiService.editarJurisdiccionv2(datos).subscribe(\n (respuesta) => {\n localStorage.removeItem('mode');\n localStorage.removeItem('jurisdiccion');\n // this.router.navigate(['/agregar-jurisdiccion']);\n this.router.navigate(['perfil-abogado'], { queryParams: { jurisdiccion: 1 } });\n },\n (error) => {\n console.error(error);\n this.openSnackBar(\n 'No fue posible editar la jurisdicción, por favor intente nuevamente más tarde'\n );\n this.router.navigate(['perfil-abogado']);\n }\n );\n }\n\n intentoAgregar(campo: number) {\n\n console.log(\"INTENTO AGREGAR \"+campo);\n const JURISDICCION = 1;\n // const ESPECIALIDAD = 2;\n if (this.planApto) {\n this.openDialog();\n this.router.navigate(['/plan']);\n } else {\n switch (campo) {\n case JURISDICCION: {\n this.mostrarJurisdiccion = false;\n \n let jurisdiccion: JurisdiccionEditarVer2 = JSON.parse(\n localStorage.getItem('jurisdiccion')\n );\n let datos: DatosJurisdiccion = {\n localidadId: this.localidades && this.localidades.length > 0 ? this.localidades[0].id_localidad : 0,\n colegio: this.agregarJurisdiccion.value.colegio.toUpperCase(),\n tomo: this.agregarJurisdiccion.value.tomo,\n folio: this.agregarJurisdiccion.value.folio,\n numeroDni: this.numeroDni,\n telefono: this.telefono,\n tipoDni: this.tipoDni,\n datosProfesionalesId: 0\n };\n if(this.editarJurisdiccion){\n console.log(\"JUR ED \"+jurisdiccion.id_datos_profesionales);\n datos.datosProfesionalesId=jurisdiccion.id_datos_profesionales;\n }\n else{\n\n datos.datosProfesionalesId=0;\n\n }\n let yaExiste = false;\n /*this.jurisdiccionesExistentes.forEach((element) => {\n if (\n this.agregarJurisdiccion.value.jurisdiccion.nombre ==\n element.jurisdiccionNombre\n ) {\n yaExiste = true;\n }\n });\n */\n if (yaExiste) {\n this.openSnackBar(\n 'Ya tienes esta jurisdicción, no es posible volver a agregarla'\n );\n this.mostrarJurisdiccion = true;\n } else {\n this.apiService.agregarJurisdiccion(datos).subscribe(\n (respuesta) => {\n localStorage.removeItem('jurisdiccionesExistentes');\n this.router.navigate(['/agregar-jurisdiccion']);\n },\n (error) => {\n\n console.log(\"Error \"+JSON.stringify(error));\n if (error.status == 409) {\n this.openDialog();\n this.router.navigate(['/plan']);\n } else {\n this.openSnackBar('No es posible agregar la jurisdicción');\n this.router.navigate(['perfil-abogado']);\n }\n }\n );\n }\n break;\n }\n // case ESPECIALIDAD: {\n // let especialidadesExistentes = JSON.parse(localStorage.getItem('especialidades'));\n // let nuevasEspecialidades: number[] = this.especialidadesSeleccionadas.map(e => e.id_especialidad);\n // if (this.checkEspecialidadsExistentes(this.especialidadesSeleccionadas, especialidadesExistentes).length > 0) {\n // const result = this.checkEspecialidadsExistentes(this.especialidadesSeleccionadas, especialidadesExistentes);\n // this.openSnackBar(result.length == 1 ? `Ya tienes la especialidad ${result[0]}, no es posible volver a agregarla` : `Ya tienes las especialidades: ${result.toString()}, no es posible volver a agregarla`);\n // } else {\n // localStorage.removeItem('especialidades');\n // this.apiService.editarDatosProfesionales(nuevasEspecialidades)\n // .subscribe(respuesta => {\n // this.openSnackBar(\"Especialidad agregada exitosamente\");\n // let finalTags = [];\n // this.especialidadesSeleccionadas.forEach(e => {\n // finalTags = [...finalTags, ...e.nombreCliente];\n // });\n // let response: boolean = this.updateRangesService.updateTags(this.userId, finalTags, true);\n // if (response) {\n // this.openSnackBar(\"Se actualizó la agenda\");\n // }\n // this.router.navigate(['perfil-abogado']);\n // },\n // error => {\n // this.openSnackBar(\"No es posible agregar nueva especialidad\");\n // this.openDialog();\n // this.router.navigate(['/plan']);\n // });\n // this.mostrarEspecialidades = false;\n // }\n // break;\n // }\n }\n }\n }\n\n // private checkEspecialidadsExistentes(aInsertar: Especialidad[], existentes: string[]) {\n // let set = new Set(existentes);\n // let res = [];\n // aInsertar.forEach(a => {\n // if (set.has(a.nombre)) {\n // res.push(a.nombre);\n // }\n // });\n // return res;\n // }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n\n ngOnInit(): void {\n this.getMiPerfil();\n // this.getEspecialidades();\n this.getJurisdicciones();\n }\n\n getJurisdicciones() {\n this.apiService.getJurisdiccionPaisesAuto().subscribe(\n (jurisdiccion) => {\n this.jurisdiccionesExistentes = JSON.parse(\n localStorage.getItem('jurisdiccionesExistentes')\n );\n this.jurisdicciones = jurisdiccion;\n if (this.editarJurisdiccion) {\n this.patchForm();\n }\n },\n (error) => {}\n );\n }\n\n getEspecialidades() {\n // this.apiService.getEspecialidades(RoleNumber.Abogado)\n // .subscribe(especialidades => {\n // this.todasEspecialidades = especialidades.map(especialidad => {\n // const nombreReemplazado = especialidad.nombre.replace('/', ' ');\n // return { ...especialidad, nombre: nombreReemplazado, selected: false };\n // });\n // },\n // error => {\n // });\n }\n\n getMiPerfil() {\n this.cargando=true;\n this.apiService.getPerfil().subscribe(\n (perfil) => {\n \n this.tipoDni = perfil.datosProfesionales[0].tipoDni;\n this.numeroDni = perfil.datosProfesionales[0].numeroDni;\n this.telefono = perfil.datosProfesionales[0].telefono;\n this.userId = perfil.id_usuario;\n this.pais = perfil.pais;\n if(this.pais=='595'){\n this.showMatricula=true;\n this.showFolio=false;\n this.showTomo=false;\n this.agregarJurisdiccion.get('tomo').clearValidators();\n this.agregarJurisdiccion.get('folio').clearValidators();\n this.agregarJurisdiccion.get('tomo').updateValueAndValidity();\n this.agregarJurisdiccion.get('folio').updateValueAndValidity();\n this.agregarJurisdiccion.get('otro').setValidators([Validators.required]);\n this.agregarJurisdiccion.get('otro').updateValueAndValidity();;\n }\n else{\n this.showMatricula=false;\n this.showFolio=true;\n this.showTomo=true;\n \n }\n this.cargando=false;\n },\n (error) => {\n this.openSnackBar(\n 'No fue posible obtener la información del perfil. Por favor, intente nuevamente más tarde.'\n );\n }\n );\n }\n\n patchForm() {\n let jurisdiccion: JurisdiccionEditarVer2 = JSON.parse(\n localStorage.getItem('jurisdiccion')\n );\n\n console.log(\"JURISDICCION \"+JSON.stringify(jurisdiccion));\n this.agregarJurisdiccion.patchValue({ tomo: jurisdiccion.tomo });\n this.agregarJurisdiccion.patchValue({ otro: jurisdiccion.otro });\n this.agregarJurisdiccion.patchValue({ colegio: jurisdiccion.colegio });\n this.agregarJurisdiccion.patchValue({ folio: jurisdiccion.folio });\n console.log(this.jurisdicciones);\n let found = this.jurisdicciones.find(\n (aux) => aux.nombre == jurisdiccion.jurisdiccionNombre\n );\n this.agregarJurisdiccion.patchValue({ jurisdiccion: found });\n this.agregarJurisdiccion.patchValue({\n id_datos_profesionales: jurisdiccion.id_datos_profesionales,\n });\n this.cargarLocalidades();\n }\n\n onKeyUp(event) {\n if (\n !this.agregarJurisdiccion.value.colegio.match(\n /^[a-zA-ZñÑáéíóúÁÉÍÓÚ.\\s]+$/\n )\n ) {\n this.colegioValido = false;\n } else {\n this.colegioValido = true;\n }\n }\n\n onKeyUpFolio(event) {\n let aux = event.target.value;\n if (aux > 9999) {\n this.folioValido = false;\n } else {\n this.folioValido = true;\n }\n }\n\n onKeyUpTomo(event) {\n let aux = event.target.value;\n if (aux > 999) {\n this.tomoValido = false;\n } else {\n this.tomoValido = true;\n }\n }\n}\n","
\n
\n \n \n \n
\n

{{ texto }}

\n {{\n \"mercado.vinculacion\" | translate\n }}\n
\n \n VOLVER A MI PERFIL\n \n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { Validators, FormControl, FormGroup } from '@angular/forms';\nimport { ApiService } from '../../../api/api.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-vinculacion',\n templateUrl: './vinculacion.component.html',\n styleUrls: ['./vinculacion.component.css'],\n})\nexport class VinculacionComponent implements OnInit {\n code: string;\n exito = false;\n texto = 'Tu cuenta se está vinculando con Mercado Pago';\n constructor(\n private apiService: ApiService,\n private router: Router,\n private route: ActivatedRoute,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n ngOnInit(): void {\n this.route.queryParams.subscribe((params) => {\n if (params?.merchantIdInPayPal) {\n this.code = params.merchantIdInPayPal;\n \n this.apiService.putLinkAsociacionPaypal(this.code).subscribe(\n (respuesta) => {\n this.texto = 'Tu cuenta se vinculó con éxito a Paypal';\n this.exito = true;\n },\n (error) => {\n console.error(error);\n this.exito = false;\n this.texto = 'Falló la vinculación de tu cuenta con Paypal';\n }\n );\n } else {\n this.code = params.code;\n \n this.apiService.putLinkAsociacion(this.code).subscribe(\n (respuesta) => {\n this.texto = 'Tu cuenta se vinculó con éxito a Mercado Pago';\n this.exito = true;\n },\n (error) => {\n console.error(error);\n this.exito = false;\n this.texto = 'Falló la vinculación de tu cuenta con Mercado Pago';\n }\n );\n }\n\n });\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ApiService } from '../../../api/api.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-pago-fallo',\n templateUrl: './pago-fallo.component.html',\n styleUrls: ['./pago-fallo.component.css'],\n})\nexport class PagoFalloComponent implements OnInit {\n constructor(\n private apiService: ApiService,\n private router: Router,\n private route: ActivatedRoute,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n ngOnInit(): void {}\n\n navegar() {\n let soyCliente: boolean;\n this.apiService.getPerfil().subscribe(\n (perfil) => {\n if (perfil.datosProfesionales.length > 0) {\n soyCliente = false;\n } else {\n soyCliente = true;\n }\n if (soyCliente) {\n this.router.navigate(['/casos-activos/3']);\n } else {\n this.router.navigate(['/perfil-abogado']);\n }\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n}\n","
\n
\n \n \n \n
\n

{{ texto }}

\n
\n \n {{ \"mercado.volver\" | translate }}\n \n \n
\n
\n
\n","
\n
\n \n \n
\n

{{ \"mercado.fallo\" | translate }}

\n
\n \n {{ \"mercado.volver\" | translate }}\n \n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { ApiService } from '../../../api/api.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { abogado } from 'src/app/interfaces/abogado';\n\n@Component({\n selector: 'app-pago-exitoso',\n templateUrl: './pago-exitoso.component.html',\n styleUrls: ['./pago-exitoso.component.css'],\n})\nexport class PagoExitosoComponent implements OnInit {\n external_reference: string;\n exito = false;\n texto = 'Se está procesando tu pago';\n constructor(\n private apiService: ApiService,\n private router: Router,\n private route: ActivatedRoute,\n private location: Location,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n ngOnInit(): void {\n let user:abogado = JSON.parse(localStorage.getItem('user'));\n\n this.route.queryParams.subscribe((params) => {\n if (params.typePlatform == 'MercadoPago') {\n if (!params.preapproval_id) {\n this.location.back();\n return;\n }\n this.apiService.doSuscripcionNewCheck(params.typePlatform, params.preapproval_id).subscribe({\n next: () => {\n this.texto = `${params.typePlatform} - Tu pago se procesó exitosamente.`;\n this.exito = true;\n console.log(\"Suscripcion exitosa.\");\n }\n });\n } else {\n this.external_reference = params.externalref;\n \n this.apiService.getResultado(user.id_usuario.toString()).subscribe(\n (respuesta) => {\n this.texto = 'Tu pago se procesó exitosamente.';\n this.exito = true;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n });\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n navegar() {\n let soyCliente: boolean;\n this.apiService.getPerfil().subscribe(\n (perfil) => {\n if (perfil.datosProfesionales.length > 0) {\n soyCliente = false;\n } else {\n soyCliente = true;\n }\n if (soyCliente) {\n this.router.navigate(['/casos-activos/3']);\n } else {\n this.router.navigate(['/perfil-abogado']);\n }\n },\n (error) => {\n console.error(error);\n }\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { ApiService } from '../../../api/api.service';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-pago-pendiente',\n templateUrl: './pago-pendiente.component.html',\n styleUrls: ['./pago-pendiente.component.css'],\n})\nexport class PagoPendienteComponent implements OnInit {\n constructor(\n private apiService: ApiService,\n private router: Router,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n ngOnInit(): void {}\n\n navegar() {\n let soyCliente: boolean;\n this.apiService.getPerfil().subscribe(\n (perfil) => {\n if (perfil.datosProfesionales.length > 0) {\n soyCliente = false;\n } else {\n soyCliente = true;\n }\n if (soyCliente) {\n this.router.navigate(['/casos-activos/3']);\n } else {\n this.router.navigate(['/perfil-abogado']);\n }\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n}\n","
\n
\n \n \n
\n

{{ \"mercado.pendiente\" | translate }}

\n
\n \n {{ \"mercado.volver\" | translate }}\n \n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-navbar-admin',\n templateUrl: './navbar-admin.component.html',\n styleUrls: ['./navbar-admin.component.css'],\n})\nexport class NavbarAdminComponent implements OnInit {\n constructor(public translate: TranslateService) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n ngOnInit(): void {}\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n}\n","\n\n\n\n
\n {{\n \"navbarAdmin.inicio\" | translate\n }}\n {{ \"navbarAdmin.paises\" | translate }}\n {{ \"navbarAdmin.data\" | translate }}\n {{ \"navbarAdmin.entidades\" | translate }}\n Certificacion\n Multipagos\n \n \n \n
\n \n Suscripciones\n \n \n
\n \n \n \n
\n
\n \n
\n\n
\n","export class MatriculaConfig {\n\n constructor(){\n\n }\n id_matriculaconfig: number;\n descripcion: string;\n nombre:string;\n countryId:number;\n tamanio:number;\n visible:boolean;\n solicitarCampo:boolean;\n admEmailCaso: string;\n }\n \n \n ","
\n \n \n {{ \"paises.admin\" | translate }}\n\n
\n \n
\n\n
\n\n \n
\n\n
\n \n\n \n
\n
\n \n \n
\n \n \n \n {{ \"paises.paises\" | translate }} \n \n {{ \"paises.agPaTe\" | translate }}\n flag\n \n \n\n \n \n \n \n \n \n
\n \n Numero pais\n \n \n \n {{ \"paises.agPa\" | translate }}\n \n \n  \n \n \n \n {{ \"paises.paises\" | translate }}\n \n {{ pais.countryId }}\n {{ pais.name }}\n \n \n \n \n 0\"\n color=\"primary\"\n #adminPais\n (change)=\"onChangeAdminPais()\"\n >Administrar\n
\n\n
\n
\n
\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{ \"paises.idMatricula\" | translate }}\n \n {{ \"paises.nombre\" | translate }}\n \n {{ \"paises.obligatorio\" | translate }}\n \n {{ \"paises.visible\" | translate }}\n \n {{ \"paises.tamanio\" | translate }}\n \n Email CASO\n
\n {{matriculaConfig.id_matriculaconfig}}\n \n \n \n \n \n \n \n \n \n \n
\n\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n Nombre\n \n {{ \"paises.obligatorio\" | translate }}\n \n {{ \"paises.visible\" | translate }}\n \n Nombre\n \n RegEx Validacion\n \n RegEx Entrada\n \n RegEx Descripcion\n \n Plantilla\n
\n \n \n CUIT Validacion\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{ regEx.desc }}\n \n \n
\n
\n\n
\n \n \n \n {{ \"paises.jurisdiccion\" | translate }}\n \n \n {{ \"paises.agJurTe\" | translate }}\n map\n \n \n\n \n \n \n \n \n
\n \n {{ \"paises.agJur\" | translate }}\n \n \n  \n \n
\n \n
\n \n {{ \"paises.jurisdiccion\" | translate }}\n \n {{ jurisdiccionInput.id_jurisdiccion }}\n {{ jurisdiccionInput.nombre }}\n \n \n \n
\n
\n\n \n \n {{ \"paises.localidad\" | translate }}\n \n {{ \"paises.agLocTe\" | translate }}\n language\n \n \n\n \n \n \n \n \n
\n \n {{ \"paises.agPro\" | translate }}\n \n \n  \n \n
\n \n
\n \n {{ \"paises.localidad\" | translate }}\n \n {{ localidad.nombre }}\n \n \n \n
\n
\n
\n\n \n\n \n
\n","import {\n Component,\n OnInit,\n Input,\n Output,\n ViewChild,\n ElementRef,\n Inject,\n} from '@angular/core';\nimport { FormControl, FormGroup, Validators, FormControlStatus } from '@angular/forms';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ApiService } from 'src/app/api/api.service';\nimport { IFormPaisConfig, Pais, PaisConfig, PAISCONFIG_KEY_CUIT, REGEX_PLANTILLA, REGEX_TEMPLATE } from 'src/app/api/pais';\nimport { Provincia } from 'src/app/api/Provincia';\nimport { UpdateRangesService } from 'src/app/services/agenda/update-ranges.service';\nimport { LogOutService } from 'src/app/services/logOut/log-out.service';\nimport { MatAccordion } from '@angular/material/expansion';\nimport { TranslateService } from '@ngx-translate/core';\nimport { HttpClient } from '@angular/common/http';\nimport { NgxCsvParser } from 'ngx-csv-parser';\nimport { NgxCSVParserError } from 'ngx-csv-parser';\nimport {\n JurisdiccionPaises,\n JurisdiccionPaisesInput,\n} from 'src/app/api/jurisdiccion';\nimport { LocalidadPaises } from 'src/app/api/localidad';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { Observable } from 'rxjs';\nimport { MatriculaConfig } from 'src/app/api/matriculaConfig';\n@Component({\n selector: 'app-paises',\n templateUrl: './paises.component.html',\n styleUrls: ['./paises.component.css'],\n})\nexport class PaisesComponent implements OnInit {\n @ViewChild('codPais') codPais: ElementRef;\n @ViewChild('nomPais') nomPais: ElementRef;\n @ViewChild('adminPais') adminPais: MatCheckbox;\n @ViewChild('nomJur') nomJur: ElementRef;\n @ViewChild(MatAccordion) accordion: MatAccordion;\n @ViewChild('fileImportInput', { static: false }) fileImportInput: any;\n @ViewChild('fileImportInputLoc', { static: false }) fileImportInputLoc: any;\n @ViewChild('nomLoc') nomLoc: ElementRef;\n constructor(\n private logOut: LogOutService,\n private _snackBar: MatSnackBar,\n private apiService: ApiService,\n private updateRangesService: UpdateRangesService,\n public translate: TranslateService,\n private http: HttpClient,\n private ngxCsvParser: NgxCsvParser\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n displayedColumns: string[] = ['countryId', 'name'];\n PaisesData: any;\n paisConfig: PaisConfig = null;\n cargarLista = true;\n paises: Pais[];\n pais: Pais;\n provincias: Provincia[];\n jurisdiccionInput: JurisdiccionPaisesInput;\n jurisdiccionesInput: JurisdiccionPaisesInput[];\n jurisdiccion: JurisdiccionPaises;\n jurisdicciones: JurisdiccionPaises[];\n localidad: LocalidadPaises;\n localidades: LocalidadPaises[];\n matriculaConfig:MatriculaConfig;\n data: string;\n isDisabled = true;\n fileName: string;\n csvRecords: any[] = [];\n header = false;\n numPaisSeleccionado: number;\n numJurSeleccionado: number;\n\n formCuit: FormGroup;\n\n templateRegExs = REGEX_PLANTILLA;\n\n ngOnInit(): void {\n this.getPaises();\n //this.getProvincias(dato);\n\n this.formCuit = new FormGroup({\n countryConfigId: new FormControl(0),\n countryId: new FormControl(0),\n countryName: new FormControl(''),\n bobligatorio: new FormControl(false),\n\t bvisible: new FormControl(false),\n sclave: new FormControl(''),\n sdesc: new FormControl('', [Validators.required]),\n svalor01: new FormControl('', [Validators.required]), // Digitos\n svalor02: new FormControl('', [Validators.required]), // RegEx\n svalordesc: new FormControl('', ), // RegEx\n });\n }\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n onFileSelected(event) {}\n\n fileChangeListener($event: any): void {\n const files = $event.srcElement.files;\n const actualBtn = document.getElementById('file-upload');\n\n const fileChosen = document.getElementById('file-chosen');\n actualBtn.addEventListener('change', function () {\n fileChosen.textContent = files[0].name;\n });\n\n // Parse the file you want to select for the operation along with the configuration\n this.ngxCsvParser\n .parse(files[0], { header: this.header, delimiter: ';' })\n .pipe()\n .subscribe(\n (result: Array) => {\n console.log('Result', result);\n this.csvRecords = result;\n let jsonObject = [];\n result.forEach(\n (item) =>\n jsonObject.push(\n JSON.stringify({\n countryId: Number.parseInt(item[0]),\n nombre: item[1],\n })\n )\n // jsonObject.push(\n // '{\"countryId\":' + item[0] + ' , \"name\":\"' + item[1] + '\"}'\n // )\n );\n console.log(jsonObject);\n\n let json = jsonObject;\n console.log(result);\n console.log(json);\n this.apiService\n .postJurisdicciones(json)\n .subscribe((json) => (json = json));\n },\n (error: NgxCSVParserError) => {\n console.log('Error', error);\n actualBtn.addEventListener('change', function () {\n fileChosen.textContent = 'Se debe ingresar un .CSV';\n });\n }\n );\n }\n\n fileChangeListenerLoc($event: any): void {\n const files = $event.srcElement.files;\n const actualBtn = document.getElementById('file-uploadLoc');\n\n const fileChosen = document.getElementById('file-chosenLoc');\n actualBtn.addEventListener('change', function () {\n fileChosen.textContent = files[0].name;\n });\n\n // Parse the file you want to select for the operation along with the configuration\n this.ngxCsvParser\n .parse(files[0], { header: this.header, delimiter: ';' })\n .pipe()\n .subscribe(\n (result: Array) => {\n console.log('Result', result);\n this.csvRecords = result;\n let jsonObject = [];\n result.forEach(\n (item) =>\n jsonObject.push(\n JSON.stringify({\n jurisdiccionId: Number.parseInt(item[0]),\n nombre: item[1],\n })\n )\n // jsonObject.push(\n // '{\"countryId\":' + item[0] + ' , \"name\":\"' + item[1] + '\"}'\n // )\n );\n console.log(jsonObject);\n\n let json = jsonObject;\n console.log(result);\n console.log(json);\n this.apiService\n .postLocalidades(json)\n .subscribe((json) => (json = json));\n },\n (error: NgxCSVParserError) => {\n console.log('Error', error);\n actualBtn.addEventListener('change', function () {\n fileChosen.textContent = 'Se debe ingresar un .CSV';\n });\n }\n );\n }\n\n getPaises() {\n this.apiService.getPaises().subscribe((paises) => (this.paises = paises));\n }\n\n\n\n onSelected(SelectedItem: number) {\n console.log('item seleccionado : ' + SelectedItem);\n this.apiService\n .getJurisdiccionPaises(SelectedItem)\n .subscribe(\n (jurisdiccionesInput) =>\n (this.jurisdiccionesInput = jurisdiccionesInput)\n );\n \n this.apiService.getJurisdiccionPaisAdmin(SelectedItem).subscribe({\n next: (result: boolean) => {\n this.adminPais.checked = result;\n console.log(result);\n }\n });\n\n this.apiService\n .getMatriculaConfig(SelectedItem)\n .subscribe(\n (matriculaConfig) =>{\n if(matriculaConfig==null){\n this.matriculaConfig = new MatriculaConfig();\n this.matriculaConfig.countryId=SelectedItem;\n }\n else{\n this.matriculaConfig = matriculaConfig;\n }\n \n }\n \n );\n \n this.apiService.getPaisConfig(SelectedItem, PAISCONFIG_KEY_CUIT).subscribe({\n next: (paisConfig: PaisConfig) => {\n this.doPaisConfigLoad(paisConfig);\n },\n error: (err) => {\n this.doPaisConfigLoad({\n countryConfigId: 0,\n countryId: 0,\n countryName: '',\n bobligatorio: false,\n bvisible: false,\n sclave: '',\n sdesc: '',\n svalor01: '',\n svalor02: '',\n svalordesc: ''\n });\n console.error(err);\n }\n });\n // .getProvincias(SelectedItem)\n // .subscribe((provincias) => (this.provincias = provincias));\n this.isDisabled = false;\n }\n\n doPaisConfigLoad(paisConfig: PaisConfig): void {\n this.paisConfig = paisConfig;\n this.formCuit.setValue(paisConfig);\n }\n\n doPaisConfigVisibleOnChange(): void {\n if (!this.formCuit.getRawValue().bvisible) {\n this.formCuit.patchValue({\n bobligatorio: false\n });\n }\n }\n\n doPaisConfigRegEx(code: string): void {\n this.templateRegExs.some((regEx: REGEX_TEMPLATE) => {\n if (regEx.desc == code) {\n this.formCuit.patchValue({\n svalor01: regEx.regexVal,\n svalor02: regEx.regexInput,\n svalordesc: regEx.desc\n });\n return true;\n }\n });\n }\n\n doPaisConfigSave(): void {\n if (!this.paisConfig)\n return;\n \n if (this.formCuit.status !== \"VALID\")\n return;\n\n this.apiService.doPaisConfigSave(this.paisConfig.countryId, this.formCuit.getRawValue()).subscribe({\n next: (paisConfig: PaisConfig) => {\n this.doPaisConfigLoad(paisConfig);\n },\n error: (err) => {\n this.openSnackBar(\n 'No fue posible obtener la información del perfil. Por favor, intente nuevamente más tarde.'\n );\n }\n });\n }\n\n saveMatriculaConfig(){\n\n if(this.matriculaConfig!=null && this.matriculaConfig.id_matriculaconfig!=null && this.matriculaConfig.id_matriculaconfig>0){\n this.apiService\n .putMatriculaConfig(this.matriculaConfig)\n .subscribe(\n (matriculaConfig) =>\n (this.matriculaConfig = matriculaConfig)\n );\n }\n else{\n this.apiService\n .postMatriculaConfig(this.matriculaConfig)\n .subscribe(\n (matriculaConfig) =>\n (this.matriculaConfig = matriculaConfig)\n );\n }\n\n \n }\n\n onChangeAdminPais(): void {\n let result: Observable;\n if (this.adminPais.checked) {\n result = this.apiService.setJurisdiccionPaisAdminPut(this.numPaisSeleccionado);\n } else {\n result = this.apiService.setJurisdiccionPaisAdminDel(this.numPaisSeleccionado);\n }\n\n result.subscribe({\n next: (resp: string) => {\n console.log(resp);\n }\n })\n console.log(this.adminPais.checked);\n }\n\n isPaisConfig(): boolean {\n let pc: PaisConfig = this.paisConfig;\n return pc && pc.countryId && pc.countryId > 0;\n }\n\n onSelectedJur(SelectedItem: number) {\n console.log('donde estoy: onselectedJur');\n console.log('item seleccionadoJur : ' + SelectedItem);\n this.apiService\n .getLocalidadPaises(SelectedItem)\n .subscribe((localidades) => (this.localidades = localidades));\n // .getProvincias(SelectedItem)\n // .subscribe((provincias) => (this.provincias = provincias));\n\n this.isDisabled = false;\n }\n\n // onSelectedLoc(SelectedItem: number){\n // console.log('item seleccionado: ' + SelectedItem);\n // this.apiService.getLocalidadPaises(SelectedItem).subscribe((loc))\n // }\n\n cerrarSesion() {\n this.logOut.cerrarSesion();\n }\n\n onClick() {\n let pais: Pais;\n pais = {\n countryId: this.codPais.nativeElement.value,\n name: this.nomPais.nativeElement.value,\n };\n // pais.countryId = this.codPais.nativeElement.value;\n // pais.name = this.nomPais.nativeElement.value;\n this.apiService.postPais(pais).subscribe((pais) => (pais = pais));\n console.log(this.codPais.nativeElement.value);\n console.log(this.nomPais.nativeElement.value);\n console.log('NOMBRE: ', pais.name);\n console.log('CODIGO: ', pais.countryId);\n }\n\n onClickJur() {\n let jurisdiccion: JurisdiccionPaises;\n jurisdiccion = {\n nombre: this.nomJur.nativeElement.value,\n countryId: this.selectCod(this.numPaisSeleccionado),\n };\n this.apiService\n .postJurisdiccionPais(jurisdiccion)\n .subscribe((jurisdiccion) => (jurisdiccion = jurisdiccion));\n }\n\n selectCod(SelectedItem: number) {\n this.numPaisSeleccionado = SelectedItem;\n return this.numPaisSeleccionado;\n }\n\n onClickLoc() {\n let localidad: LocalidadPaises;\n localidad = {\n nombre: this.nomLoc.nativeElement.value,\n jurisdiccionId: this.selectCodJur(this.numJurSeleccionado),\n };\n this.apiService\n .postLocalidadPais(localidad, this.selectCodJur(this.numJurSeleccionado))\n .subscribe((localidad) => (localidad = localidad));\n }\n\n selectCodJur(SelectedItem: number) {\n this.numJurSeleccionado = SelectedItem;\n return this.numJurSeleccionado;\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CheckPasswordService {\n\n constructor() { }\n\n checkPass(blur: boolean, password: string, repeatPassword: string) {\n let response = true;\n if(blur) {\n if (password != repeatPassword) {\n response = false;\n }\n else {\n response = true;\n }\n }\n return response;\n }\n\n}\n","\n
\n \n
\n\n
\n\n
\n
\n

{{ \"registroEntidad.register_title\" | translate }}

\n
\n
\n\n
\n \n
\n\n
\n \n {{ \"registroEntidad.nombre\" | translate }}\n \n \n
\n\n
\n \n {{ \"registroEntidad.descripcion\" | translate }}\n \n \n\n
\n\n
\n\n \n {{ \"registroEntidad.telefono\" | translate }}\n \n \n\n
\n\n
\n\n \n {{ \"registroEntidad.url\" | translate }}\n \n \n\n
\n\n
\n\n \n {{ \"registroEntidad.codigo\" | translate }}\n \n \n\n
\n\n
\n \n Pais\n \n \n -- Seleccionar --\n \n \n {{ pais.name }}\n \n \n \n
\n\n
\n\n \n \n \n
\n
\n \n \n
\n \n ","import { Component, OnInit} from '@angular/core';\nimport { Validators, UntypedFormControl, UntypedFormGroup, FormControl } from '@angular/forms';\nimport { RegisterClient, ResetPasswordRepeat } from '../../../api/user';\nimport { ApiService } from '../../../api/api.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CheckPasswordService } from 'src/app/services/register/checkPassword/check-password.service';\nimport { Company } from 'src/app/api/company';\nimport { MatDialog } from '@angular/material/dialog';\nimport {MAT_DIALOG_DATA} from '@angular/material/dialog';\nimport { Inject } from '@angular/core';\nimport { Pais } from 'src/app/api/pais';\n\n@Component({\n selector: 'app-ent-formulario',\n templateUrl: './formulario.component.html',\n styleUrls: ['./formulario.component.css']\n})\nexport class EntFormularioComponent implements OnInit{\n language:String=\"\";\n coinciden = true;\n imgSelected: String = \"\";\n blur = false;\n cacheCountries: Pais[];\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: any,public dialog: MatDialog,private apiService: ApiService, private checkPasswordService: CheckPasswordService,private _snackBar: MatSnackBar, private router: Router, private route: ActivatedRoute,public translate: TranslateService) { \n translate.addLangs(['es-AR', 'it-IT','en-US']);\n this.language = sessionStorage.getItem('language');\n if(!sessionStorage.getItem(\"language\")){\n translate.setDefaultLang(\"es-AR\");\n this.language = \"es-AR\"\n }else\n translate.setDefaultLang(sessionStorage.getItem('language'));\n if(this.language == \"es-AR\")\n this.imgSelected = \"../../../assets/españa.png\"\n if(this.language == \"it-IT\")\n this.imgSelected = \"../../../assets/italia.png\"\n if(this.language == \"en-US\")\n this.imgSelected = \"../../../assets/ingles.png\"\n }\n entForm = new UntypedFormGroup({\n nombre: new UntypedFormControl('', [\n Validators.required,\n ]),\n descripcion: new UntypedFormControl('', [\n Validators.required,\n ]),\n telefono: new UntypedFormControl('', [\n Validators.required,\n ]),\n url: new UntypedFormControl('', [\n Validators.required,\n ]),\n codigo: new UntypedFormControl('', [\n Validators.required,\n ]),\n countryId: new FormControl(null, [])\n });\n idCambioClave: number;\n edit:Boolean=false;\n selectedEntity:Company;\n\n ngOnInit() {\n this.edit=this.data.edit;\n this.selectedEntity=this.data.entity;\n console.log(JSON.stringify(this.data));\n\n this.apiService.getPaisesClean().subscribe({\n next: (resp: Pais[]) => {\n this.cacheCountries = resp;\n }\n });\n\n if(this.edit){\n this.feedForm();\n }\n }\n\n hide = true;\n\n feedForm(){\n this.entForm.get('nombre').setValue(this.selectedEntity.nombre);\n this.entForm.get('descripcion').setValue(this.selectedEntity.descripcion);\n this.entForm.get('telefono').setValue(this.selectedEntity.telefono);\n this.entForm.get('url').setValue(this.selectedEntity.url);\n this.entForm.get('codigo').setValue(this.selectedEntity.codigo);\n this.entForm.get('countryId').setValue(this.selectedEntity.countryId);\n }\n \n switchLang(lang: string) {\n console.log(lang)\n this.translate.use(lang);\n this.language = lang;\n sessionStorage.setItem('language', lang);\n sessionStorage.language = lang;\n if(lang == \"es-AR\")\n this.imgSelected = \"../../../assets/españa.png\"\n if(lang == \"it-IT\")\n this.imgSelected = \"../../../assets/italia.png\"\n if(lang == \"en-US\")\n this.imgSelected = \"../../../assets/ingles.png\"\n }\n\n onSubmit() {\n\n console.log(\"Valid \"+this.entForm.valid);\n if(this.entForm.valid){\n let codigo = this.entForm.value.codigo;\n let nombre = this.entForm.value.nombre;\n let descripcion = this.entForm.value.descripcion;\n let telefono = this.entForm.value.telefono;\n let url = this.entForm.value.url;\n let countryId = this.entForm.value.countryId;\n\n if(this.edit==true){\n let company:Company ={ idCompany:this.selectedEntity.idCompany,codigo:codigo,nombre:nombre,descripcion:descripcion,telefono:telefono,url:url,hash:null, countryId };\n this.apiService.putCompany(company)\n .subscribe( () => { \n \n \n this.openSnackBar(\"Se actualizo compañia\");\n this.dialog.closeAll();\n },\n error => {\n console.error(error);\n if(error.status === 409) {\n this.openSnackBar(\"Error de registro\");\n }else if(error.status === 406) {\n this.openSnackBar(\"El codigo ya esta tomado\");\n this.dialog.closeAll();\n } else {\n this.openSnackBar(\"Estamos trabajando para mejorar el servicio, por favor intente nuevamente más tarde\");\n }\n });\n }\n else{\n let company:Company ={ idCompany:null,codigo:codigo,nombre:nombre,descripcion:descripcion,telefono:telefono,url:url,hash:null, countryId };\n this.apiService.postCompany(company)\n .subscribe( () => { \n this.openSnackBar(\"Se creo compañia\");\n this.dialog.closeAll();\n },\n error => {\n console.error(error);\n if(error.status === 409) {\n this.openSnackBar(\"Error de registro\");\n }else if(error.status === 406) {\n this.openSnackBar(\"El codigo ya esta tomado\");\n this.dialog.closeAll();\n } else {\n this.openSnackBar(\"Estamos trabajando para mejorar el servicio, por favor intente nuevamente más tarde\");\n this.dialog.closeAll();\n }\n });\n\n }\n\n \n }\n else{\n this.openSnackBar(\"Ingrese todos los campos\");\n\n }\n\n \n }\n\n\n\n openSnackBar(message: string) {\n this._snackBar.open(message, \"\", { duration: 5000 });\n }\n\n}","import { Component, Inject, OnInit } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ApiService } from 'src/app/api/api.service';\n\n@Component({\n selector: 'app-logo',\n templateUrl: './logo.component.html',\n styleUrls: ['./logo.component.css']\n})\nexport class LogoComponent implements OnInit {\n\n formLogo: FormGroup;\n selFile: File;\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: any,\n public dialog: MatDialog,\n private serviceApi: ApiService,\n private _snackBar: MatSnackBar\n ) {\n this.formLogo = new FormGroup({\n 'display': new FormControl(null)\n });\n }\n\n ngOnInit(): void {\n }\n\n doSelFile(files: FileList): void {\n let filename: string = '';\n if (!files || files.length < 1) {\n this.selFile = null;\n this.formLogo.patchValue({\n display: filename\n });\n return;\n }\n\n this.selFile = files[0];\n filename = files[0].name;\n this.formLogo.patchValue({\n display: files[0].name\n });\n }\n\n doSubirLogo(): void {\n if (!this.selFile)\n return;\n\n this.serviceApi.putCompanyLogo(this.data.entity, this.selFile).subscribe({\n next: (resp) => {\n this.openSnackBar(\"Se actualizo el logo de la compañia\");\n this.dialog.closeAll();\n },\n error: (err) => {\n this.openSnackBar(\"Error al procesar la transaccion.\");\n }\n });\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, \"\", { duration: 5000 });\n }\n\n}\n","
\n \n
\n
\n
\n
\n

Cargar Logo

\n
\n
\n
\n\n
\n
\n \n Logo\n\n \n \n \n \n
\n
\n\n \n
\n
\n
\n","
\n \n \n {{ \"paises.admin\" | translate }}\n\n
\n \n
\n\n
\n\n\n \n \n \n
\n\n \n\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{ \"registroEntidad.nombre\" | translate }}\n {{ company.nombre }}\n {{ \"registroEntidad.descripcion\" | translate }}\n {{ company.descripcion }}\n {{ \"registroEntidad.codigo\" | translate }}\n \n {{ company.hash }}\n \n Logo\n \n 0\"\n style=\"max-height: 40px;\"\n [src]=\"getLogoUrl(company)\"\n />\n \n Pais\n \n {{ company.countryName }}\n \n {{ \"registroEntidad.acciones\" | translate }}\n \n \n \n
\n
\n
\n
\n ","import {\n Component,\n OnInit,\n Input,\n Output,\n ViewChild,\n ElementRef,\n Inject,\n } from '@angular/core';\n import { FormControl, FormGroup } from '@angular/forms';\n import { MatSnackBar } from '@angular/material/snack-bar';\n import { ApiService } from 'src/app/api/api.service';\n import { UpdateRangesService } from 'src/app/services/agenda/update-ranges.service';\n import { LogOutService } from 'src/app/services/logOut/log-out.service';\n import { MatAccordion } from '@angular/material/expansion';\n import { TranslateService } from '@ngx-translate/core';\n import { Company } from 'src/app/api/company';\n import { EntFormularioComponent } from 'src/app/components/company/formulario/formulario.component'\nimport { MatDialog } from '@angular/material/dialog';\nimport { LogoComponent } from '../../company/logo/logo.component';\nimport { environment } from 'src/environments/environment';\n @Component({\n selector: 'app-entidades',\n templateUrl: './entidades.component.html',\n styleUrls: ['./entidades.component.css'],\n })\n export class EntidadesComponent implements OnInit {\n\n sinEntidades = false;\n constructor(\n public translate: TranslateService,\n private logOut: LogOutService,\n private _snackBar: MatSnackBar,\n private apiService: ApiService,\n private dialog: MatDialog,\n private updateRangesService: UpdateRangesService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang('es-AR');\n }\n displayedColumns: string[] = [\n 'nombre',\n 'descripcion',\n 'hash',\n 'logo',\n 'country',\n 'idCompany'\n ];\n abogadosData: any;\n cargoLaLista = false;\n id: string;\n\n companies: Company[];\n \n ngOnInit(): void {\n this.getCompanies();\n //this.getProvincias(dato);\n }\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n addEntity(){\n const dialogRef = this.dialog.open(EntFormularioComponent, {\n backdropClass: 'backdropBackground',\n data: {\n entity: null,\n edit:false\n }\n });\n\n dialogRef.afterClosed().subscribe(result => {\n this.getCompanies();\n });\n }\n \n onFileSelected(event) {}\n \n\n getCompanies() {\n this.apiService.getCompanies().subscribe((companies) => (this.companies = companies));\n }\n \n edit(company){\n const dialogRef = this.dialog.open(EntFormularioComponent, {\n backdropClass: 'backdropBackground',\n data: {\n entity: company,\n edit:true\n }\n });\n dialogRef.afterClosed().subscribe(result => {\n this.getCompanies();\n });\n }\n\n doLogoUpload(company) {\n const dialogRef = this.dialog.open(LogoComponent, {\n backdropClass: 'backdropBackground',\n data: {\n entity: company\n }\n });\n dialogRef.afterClosed().subscribe(result => {\n this.getCompanies();\n });\n }\n\n getLogoUrl(company: Company): string {\n let url: string;\n\n url = `${environment.apiUrl}/public/company/${company.idCompany}/logo`;\n return url;\n }\n \n cerrarSesion() {\n this.logOut.cerrarSesion();\n }\n \n \n }\n ","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class SleepService {\n constructor() {}\n\n sleep(ms) {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n }\n}\n","
\n \n \n Planes\n \n\n \n
\n \n
\n

Por favor, espera un momento

\n Estamos procesando tu pago\n
\n
\n
\n \n
\n

{{ mensaje }}

\n \n {{ mensajeSub }}
\n
\n \n \n ENTENDIDO\n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport {\n MatDialog,\n} from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { PlanMultipagoService } from '../../../../services/plan/plan-multipago.service';\nimport { __await } from 'tslib';\nimport { PlanService } from '../../../../services/plan/plan.service';\nimport { SleepService } from '../../../../services/sleep/sleep.service';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'app-exito',\n templateUrl: './exito.component.html',\n styleUrls: ['./exito.component.css'],\n})\nexport class ExitoComponent implements OnInit {\n mensaje: string = 'Ya puedes disfrutar de los beneficios de tu nuevo';\n mensajeSub: string = 'Durante 30 dias tendras tu plan gratuito, luego de eso se generara un cobro automático. Puedes darlo de baja en la seccion planes';\n cargando: boolean = true;\n constructor(\n public dialog: MatDialog,\n private sleepService: SleepService,\n private planService: PlanService,\n private servicePlanMP: PlanMultipagoService,\n private snackBar: MatSnackBar,\n private route: ActivatedRoute,\n private router: Router\n ) {}\n\n async ngOnInit(): Promise {\n //this.doWaitSubscripcion();\n let isPlatform = false;\n let uuid = \"\";\n\n this.route.queryParams.subscribe(params => {\n if (params?.type && params?.uuid) {\n isPlatform = true;\n uuid = params?.uuid;\n }\n });\n\n if (isPlatform) {\n this.servicePlanMP.doAbogadoSuscripcionCheckAndUpdate(uuid).subscribe({\n next: () => {\n console.log(\"Finalizada la comprobacion.\");\n this.router.navigate(['/perfil-abogado']);\n }\n })\n } else {\n this.planService.getClientStatus().subscribe( res => {\n if(res.mensaje === \"OK\"){\n if(res.esCliente && res.tieneSuscripcion){\n this.cargando = false;\n if(res.suscripcion.status == \"trial\")\n this.mensaje += \" \" + res.suscripcion.nombrePlan;\n }\n \n }\n }, err => {\n this.mensaje = \"Se produjo un error al intentar conseguir los datos.\"\n this.mensajeSub = \"Intenta de nuevo mas tarde.\"\n });\n }\n }\n\n doWaitSubscripcion(): void {\n let subscripcionId: string;\n subscripcionId = sessionStorage.getItem(\"plan-uuid\");\n this.planService.getSubscriptionStatus(subscripcionId).subscribe({\n next: (respuesta: string) => {\n if (respuesta == \"active\") {\n this.cargando = false;\n localStorage.removeItem('planContratado');\n } else {\n this.cargando = true;\n setTimeout(() => {\n this.doWaitSubscripcion();\n }, 15000);\n }\n },\n error: (err) => {\n console.error(err);\n this.snackBar.open(\n 'No fue posible obtener la información de tu cuenta, por favor intente nuevamente más tarde.',\n '',\n { duration: 5000 }\n );\n }\n });\n }\n\n async getCuenta() {\n this.planService.getCuenta().subscribe(\n async (respuesta) => {\n let planContratado = JSON.parse(localStorage.getItem('planContratado'));\n if (\n planContratado.id_plan == respuesta.plan.id_plan &&\n planContratado.anual == respuesta.plan.anual\n ) {\n this.cargando = true;\n await this.sleepService.sleep(15000);\n this.getCuenta();\n } else {\n this.cargando = false;\n localStorage.removeItem('planContratado');\n }\n },\n (error) => {\n console.error(error);\n this.snackBar.open(\n 'No fue posible obtener la información de tu cuenta, por favor intente nuevamente más tarde.',\n '',\n { duration: 5000 }\n );\n }\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-terms',\n templateUrl: './terms.component.html',\n styleUrls: ['./terms.component.css']\n})\nexport class TermsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
\n
\n
\n
\n
\n

TÉRMINOS Y CONDICIONES
\n DEL SITIO WWW.LEGALIFY.AR, WWW.LEGALIFY.COM.AR y WWW.LEGALIFY.APP

\n

CLÁUSULA (1). Definiciones

\n

AAIP: Agencia de Acceso a la Información Pública creada por la Ley N° 27.275 y modificatorias.
\nAcceder: una o más acciones del Usuario necesarias: tratándose del Sitio, para el Acceso del Sitio; o, tratándose de un Sitio de Tercero, para abrir conforme al protocolo de Internet denominado Hypertext Transfer Protocol (HTTP) o al protocolo de Internet denominado Hypertext Transfer Protocol Secure (HTTPS) una o más conexiones HTTP o HTTPS, respectivamente, entre la dirección de Internet de dicho Sitio de Tercero y la dirección de Internet de un dispositivo utilizado por el Usuario para abrir cada dicha conexión.
\nAcceso del Sitio: la apertura conforme al protocolo de Internet denominado Hypertext Transfer Protocol (HTTP) o al protocolo de Internet denominado Hypertext Transfer Protocol Secure (HTTPS) de una o más conexiones HTTP o HTTPS, respectivamente, entre la dirección de Internet del Sitio y la dirección de Internet de un dispositivo utilizado por el Usuario para abrir cada dicha conexión.
\nActividad en el Sitio: la utilización por el Usuario, a su costo y riesgo, de una o más funcionalidades incluidas y habilitadas en el Sitio, que incluyen, sin limitación alguna, la posibilidad que una persona humana o jurídica logre conectarse, seleccionar y contratar por intermedio del Sitio a una persona humana habilitada para prestar asesoramiento legal.
\nAdministrador: la siguiente persona jurídica: LEGALIFY SAS, con CUIT 3071698974, inscripta en el Registro Público de la provincia de Buenos Aires con el N° RL-2020-28286817-GDEBA-DLYRMJGP y con correo electrónico en info@legalify.ar.
\nAutoridad Pública: cualquier órgano legislativo, ejecutivo o judicial de carácter nacional, provincial o municipal.
\nCookie: cada archivo digital que cumple los siguientes requisitos: (1) es creado por un sitio de Internet accedido por el Usuario por primera vez; (2) almacena uno o más datos sobre el Usuario (por ej., su identificación de acceso) y/o la actividad del Usuario en dicho sitio de Internet (por ej., las selecciones realizadas) con la finalidad de facilitar al Usuario el acceso a dicho sitio de Internet y la actividad en el mismo al menos por segunda vez; (3) es almacenado por el navegador web que el Usuario utilizó para acceder a dicho sitio de Internet por primera vez; y (4) puede ser leído solamente o leído y modificado por dicho sitio de Internet si el Usuario vuelve a acceder a dicho sitio de Internet utilizando el mismo navegador web al menos por segunda vez.
\nCredencial de Seguridad: uno o más Datos Personales y/u otros datos u otra información suministrados por una persona humana, por sí misma o por intermedio de un programa informático no autorizado previa y expresamente por el Administrador, para otorgar a dicha persona humana una identidad única e inequívoca como Usuario.
\nDato Personal: cada dato de propiedad del Usuario (incluyendo, sin limitación, cada dato sobre el dispositivo utilizado por el Usuario para Acceder al Sitio -modelo, sistema operativo, conexión, etc.- y la ubicación geográfica del Usuario durante la Permanencia en el Sitio) que cumple los siguientes requisitos: (1) conforme a la Ley N° 25.326 no está prohibido al Administrador recolectarlo del Usuario conforme al apartado (b) de la Cláusula Privacidad y Protección de Datos Personales; y (2) no es de conocimiento público al momento en que el Administrador lo recolecta del Usuario conforme al apartado (b) de la Cláusula Privacidad y Protección de Datos Personales.
\nLey 25.326: es la Ley N° 25.326 y modificatorias.
\nÓrgano de Control: la AAIP o aquella otra Autoridad Pública que fuere dotada de la competencia establecida en el art. 29 Ley N° 25.326 en reemplazo de la AAIP.
\nPermanecer en el Sitio: una o más acciones del Usuario, en el Sitio y conforme a los TyC, necesarias para prolongar la Permanencia en el Sitio.
\nPermanencia en el Sitio: el tiempo que transcurriere desde, e incluyendo, el Acceso del Sitio hasta, e incluyendo, la Salida del Sitio.
\nPropietario: el Administrador.
\nSalida del Sitio: el cierre conforme al protocolo de Internet denominado Hypertext Transfer Protocol (HTTP) o al protocolo de Internet denominado Hypertext Transfer Protocol Secure (HTTPS) de la única o la última, según el caso, conexión HTTP o HTTPS, respectivamente, abierta por el Acceso del Sitio.\nSitio: cada archivo digital vacío o conteniendo uno o más textos (originales o reproducciones autorizadas), imágenes, videos, sonidos, gráficos, iconos, logotipos, isotipos, marcas, dibujos, emblemas, combinaciones de colores, combinación de letras y números, frases publicitarias u otro contenido digital o digitalizado (distinto de instrucciones de programa informático) y cada archivo de programa informático (ya sea que utilice uno o más de los anteriores archivos digitales o no) directa o indirectamente asociado por el Administrador con la dirección de Internet a la que corresponde el siguiente nombre de dominio:
\nWWW.LEGALIFY.AR y dominios relacionados: WWW.LEGALIFY.COM.AR y WWW.LEGALIFY.APP
\nSitio de Tercero: es cada dirección de Internet distinta del Sitio.
\nSoftware No Autorizado: uno o más archivos digitales, ejecutables o no, o programas informáticos distintos de Software Prohibido y desarrollados para modificar, por sí solos o vinculados con uno o más otros archivos digitales o programas informáticos (ya cuenten éstos con autorización previa y expresa del Administrador en el Sitio y/o por correo electrónico enviado al Usuario o no), de manera actual o potencial, total o parcialmente, temporaria o definitivamente, con efecto inmediato o diferido, continuo o intermitente, sin la autorización previa y expresa del Administrador en el Sitio y/o por correo electrónico enviado al Usuario, el funcionamiento regular (incluyendo, sin limitación, la confidencialidad, integridad o disponibilidad) del Sitio estipulado por el Administrador.
\nSoftware Prohibido: uno o más archivos digitales, ejecutables o no, o programas informáticos desarrollados para interferir, por sí solos o vinculados con uno o más otros archivos digitales o programas informáticos (ya sean éstos maliciosos o no), de manera actual o potencial, total o parcialmente, temporaria o definitivamente, con efecto inmediato o diferido, continuo o intermitente, con el funcionamiento regular (incluyendo, sin limitación, la confidencialidad, integridad o disponibilidad) del Sitio estipulado por el Administrador.
\nTyC: los presentes Términos y Condiciones del Sitio.
\nUsuario: cada persona humana o persona jurídica que a su costo y riesgo Accede al Sitio, Permanece en el Sitio y realiza la Actividad en el Sitio, por sí misma o por intermedio de un programa informático no autorizado previa y expresamente por el Administrador, y cada Usuario Necesario como así también cada persona humana que brinda asesoramiento legal y que personalmente, a su costo y riesgo Accede al Sitio, Permanece en el Sitio y realiza la Actividad en el Sitio; estipulándose que la Actividad en el Sitio realizada con Credencial de Seguridad se considerará realizada por la persona humana o jurídica que suministró, por sí misma o por intermedio de un programa informático no autorizado previa y expresamente por el Administrador, dicha Credencial de Seguridad.
\nUsuario Necesario: cada persona humana que es titular o delegada de la responsabilidad parental o representante necesaria, según el caso, de otra persona humana que Accede al Sitio, por sí misma o por intermedio de un programa informático no autorizado previa y expresamente por el Administrador, y no tiene 18 (dieciocho) años de edad cumplidos y no está emancipado por matrimonio o por otra causa no goza de capacidad civil para Acceder al Sitio, Permanecer en el Sitio y realizar la Actividad en el Sitio cumpliendo los TyC.
\n

\n

CLÁUSULA (2). Finalidad de los TyC

\n\n

(a) Los TyC:
\n(I) se aplican y, por lo tanto, rigen y detallan la relación contractual entre el Usuario y el Administrador a propósito del Acceso del Sitio, la Permanencia en el Sitio, la Actividad en el Sitio y la Salida del Sitio; y
\n(II) no se aplican a ningún Sitio de Tercero ya sea antes del Acceso del Sitio, durante la Permanencia en el Sitio a partir del Acceso del Sitio de Tercero de que se trate mediante la utilización por el Usuario de uno o más enlaces a dicho Sitio de Tercero incluidos y habilitados en el Sitio para Acceder a dicho Sitio de Tercero o después de la Salida del Sitio.
\n(b) La utilización por el Usuario de uno o más enlaces a un Sitio de Tercero incluidos y habilitados en el Sitio para Acceder a dicho Sitio de Tercero se rige especialmente por lo dispuesto en la Cláusula Sitios de Terceros.
\n

\n

CLÁUSULA (3). Consecuencias de Acceder al Sitio

\n

\n(a) Cada Acceso del Sitio automáticamente representa:
\n(I) para el Usuario:
\n(1) su irrevocable aceptación sin condiciones y total de los TyC; y
\n(2) sus manifestaciones según la Cláusula Manifestaciones del Usuario; y
\n(II) para el Administrador: su autorización del Acceso del Sitio, la Permanencia en el Sitio, la Actividad en el Sitio y la Salida del Sitio exclusivamente sobre la base de lo dispuesto en el sub-apartado (I).
\n(b) A los fines de esta Cláusula los TyC son los publicados por el Administrador en el Sitio durante la Permanencia en el Sitio salvo indicación expresa en contrario del Administrador en el Sitio y/o por correo electrónico enviado al Usuario.
\n

\n

CLÁUSULA (4). Manifestaciones del Usuario

\n

\nEl Usuario manifiesta:
\n(a) alternativamente:
\n(I) tener 18 (dieciocho) años de edad cumplidos o estar emancipado por matrimonio y, en cualquier caso, gozar de capacidad civil para Acceder al Sitio, Permanecer en el Sitio y realizar la Actividad en el Sitio cumpliendo los TyC; o
\n(II) no tener 18 (dieciocho) años de edad cumplidos y no estar emancipado por matrimonio o por otra causa no gozar de capacidad civil pero, no obstante ello, contar con autorización, asistencia, asesoramiento y supervisión de un Usuario Necesario para Acceder al Sitio, Permanecer en el Sitio y realizar la Actividad en el Sitio cumpliendo los TyC; y
\n(b) ser Usuario Necesario de otro Usuario que no tiene 18 (dieciocho) años de edad cumplidos y no está emancipado por matrimonio o por otra causa no goza de capacidad civil pero, no obstante ello, cuenta con su autorización, asistencia, asesoramiento y supervisión para Acceder al Sitio, Permanecer en el Sitio y realizar la Actividad en el Sitio cumpliendo los TyC; y
\n(c) no estar obligado por el Administrador para Acceder al Sitio, Permanecer en el Sitio y realizar la Actividad en el Sitio; y
\n(d) no necesitar obtener autorización o consentimiento de una persona humana o jurídica o una Autoridad Pública para Acceder al Sitio, Permanecer en el Sitio y realizar la Actividad en el Sitio (excepto por la autorización de un Usuario Necesario, en su caso, y la autorización del Administrador conforme al apartado (a) sub-apartado (II) de la Cláusula Consecuencias de Acceder al Sitio) o, de lo contrario, contar con dicha autorización o dicho consentimiento; y
\n(e) si Accede al Sitio por intermedio de un programa informático no autorizado previa y expresamente por el Administrador:
\n(I) conocer que dicho programa informático no es Software Prohibido; y
\n(II) conocer que dicho programa informático no es Software No Autorizado; y
\n(III) no necesitar obtener autorización o consentimiento de una persona humana o jurídica o una Autoridad Pública para Acceder al Sitio, Permanecer en el Sitio y realizar la Actividad en el Sitio por intermedio de dicho programa informático (excepto por la autorización de un Usuario Necesario, en su caso, y la autorización previa y expresa del Administrador en el Sitio y/o por correo electrónico enviado al Usuario) o, de lo contrario, contar con dicha autorización o dicho consentimiento.
\n

\n

CLÁUSULA (5). Derechos del Usuario

\n

\nAdemás de sus otros derechos establecidos por los TyC y la legislación aplicable, el Usuario tiene derecho también a:
\n(a) poder consultar en el Sitio, en cualquier momento durante la Permanencia en el Sitio, la versión de los TyC vigente al momento de dicha consulta; y
\n(b) obtener de la ayuda técnica que estuviere disponible en el Sitio asesoramiento sobre la solución de cualquier problema técnico que el Usuario hubiera encontrado para realizar la Actividad en el Sitio; y
\n(c) decidir sobre la conveniencia y oportunidad de la Salida del Sitio a su entera discreción excepto que la Salida del Sitio se adelantare por causa de:
\n(I) la ocurrencia de un evento de fuerza mayor; o
\n(II) la operación de Software Prohibido; o
\n(III) la decisión del Administrador debido:
\n(1) al incumplimiento por el Usuario de los TyC; o
\n(2) a un acto del Administrador conforme a la Cláusula Modificaciones y Otras Situaciones; o
\n(3) al cumplimiento por el Administrador de una orden recibida de una Autoridad Pública; y
\n(d) no ser considerado conectado al Sitio a partir de la Salida del Sitio; estipulándose, no obstante, que lo dispuesto en este apartado no impedirá la atribución al Usuario de la responsabilidad correspondiente por la Actividad en el Sitio cuya ejecución el Usuario hubiera programado durante la Permanencia en el Sitio y debiere finalizarse o debiere iniciarse y finalizarse después de la Salida del Sitio; y
\n(e) ser informado oportuna y claramente por el Administrador, en el Sitio y/o por correo electrónico enviado al Usuario, de cualquier incumplimiento de los TyC de parte del Usuario que hubiera sido comprobado por el Administrador; estipulándose que el Usuario podrá remediar dicho incumplimiento sólo si el Administrador hubiera decidido a su entera discreción considerar que dicho incumplimiento es remediable por el Usuario y así se lo hubiera informado a éste; estipulándose, además, que la decisión del Administrador de considerar que dicho incumplimiento no es remediable por el Usuario será final a todos los efectos legales que corresponda.
\n

\n

CLÁUSULA (6). Obligaciones del Usuario

\n

\nAdemás de sus otras obligaciones establecidas por los TyC y la legislación aplicable, el Usuario se obliga también a:
\n(a) durante la Permanencia en el Sitio:
\n(I) antes de realizar la Actividad en el Sitio:
\n(1) comprender y aceptar los TyC; y
\n(2) determinar con independencia del Administrador, por su propia iniciativa, a su exclusiva costa y bajo su exclusiva responsabilidad la legalidad de Permanecer en el Sitio y/o realizar la Actividad en el Sitio conforme a la legislación aplicable al Usuario, al Sitio y/o a la Actividad en el Sitio en vigencia al momento del Acceso del Sitio o de realizar dicha Actividad en el Sitio en el lugar donde el Usuario hubiere Accedido al Sitio; y
\n(3) comprobar con independencia del Administrador, por su propia iniciativa, a su exclusiva costa y bajo su exclusiva responsabilidad la seguridad informática de la conexión que utilizare para Permanecer en el Sitio; y
\n(4) suministrar de manera oportuna, completa, correcta y veraz los Datos Personales y/u otros datos u otra información que se le requiriere en el Sitio y/o por correo electrónico enviado por el Administrador como requisito para Permanecer en el Sitio y/o realizar la Actividad en el Sitio; y
\n(II) realizar la Actividad en el Sitio siguiendo las instrucciones correspondientes, de manera acorde con la funcionalidad de dicha Actividad en el Sitio y respetando la letra y el espíritu de los TyC y la legislación aplicable; y
\n(III) buscar, leer y comprender la información disponible en el Sitio y seguir las instrucciones correspondientes sobre la solución de cualquier problema que el Usuario hubiera encontrado para realizar la Actividad en el Sitio; y
\n(IV) procurar de inmediato la ayuda técnica disponible en el Sitio, suministrar de manera oportuna, completa, correcta y veraz la información correspondiente y seguir las instrucciones que recibiere sobre la solución de cualquier problema que el Usuario hubiera encontrado para realizar la Actividad en el Sitio; y
\n(V) mantener confidencial cada Credencial de Seguridad que generare; y
\n(VI) informar de inmediato al Administrador sobre uno o más defectos, errores y vulnerabilidades del Sitio que el Usuario hubiera detectado involuntariamente; y
\n(VII) abstenerse de:
\n(1) transmitir al Sitio:
\n(A) Software Prohibido; y
\n(B) Software No Autorizado; y
\n(C) contenido digital (incluyendo, sin limitación, textos, imágenes, videos, sonidos, gráficos, etc.) desacorde con la Actividad en el Sitio o los objetivos del Sitio o que incumpliere la letra o el espíritu de los TyC o la legislación aplicable (incluyendo, sin limitación, la legislación sobre propiedad intelectual, sobre marcas y designaciones y sobre patentes de invención y modelos de utilidad); y
\n(2) intentar acceder y acceder a Datos Personales y/u otros datos u otra información propios o ajenos sin la autorización previa y expresa del Administrador en el Sitio y/o por correo electrónico enviado al Usuario; y
\n(3) intentar interferir e interferir con la confidencialidad, integridad o disponibilidad del Sitio; y
\n(4) intentar detectar y detectar deliberadamente uno o más defectos, errores o vulnerabilidades del Sitio; y
\n(5) informar en cualquier momento, por cualquier medio de comunicación y de cualquier forma a cualquier tercero (excepto una Autoridad Pública en ejercicio de sus funciones) sobre uno o más defectos, errores o vulnerabilidades del Sitio que el Usuario hubiera detectado involuntariamente; y
\n(b) desde la Salida del Sitio:
\n(I) mantener confidencial cada Credencial de Seguridad generada durante la Permanencia en el Sitio; y
\n(II) Acceder al Sitio y generar una nueva y diferente Credencial de Seguridad en reemplazo de cada Credencial de Seguridad que hubiera generado por última vez y que hubiera dejado de ser confidencial por la causa que fuere; y
\n(III) informar de inmediato al Administrador, en el Sitio y/o por correo electrónico enviado al Administrador, sobre cada Credencial de Seguridad que hubiera dejado de ser confidencial por la causa que fuere.
\n

\n

CLÁUSULA (7). Requisitos para la Actividad en el Sitio

\n

\n(a) El Administrador podrá en cualquier momento solicitar al Usuario, en el Sitio y/o por correo electrónico enviado al Usuario, de manera previa y expresa:
\n(I) la aceptación expresa, sin condiciones y total de uno o más términos y condiciones:
\n(1) complementarios y/o modificatorios de los TyC; y/o
\n(2) específicos de la totalidad o parte de la Actividad en el Sitio; y/o
\n(II) la confirmación o información de uno o más Datos Personales y/u otros datos u otra información del Usuario; y/o
\n(III) el pago de una determinada suma de dinero de acuerdo con el procedimiento de pago que el Administrador informare previa y claramente al Usuario,
\ncomo requisito para realizar, total o parcialmente, de manera temporaria o definitiva, la Actividad en el Sitio.
\n(b) Si el Administrador realizare una solicitud conforme al apartado (a) entonces el Administrador podrá en cualquier momento también realizar una solicitud conforme al apartado (a) de la Cláusula Cuenta de Registro del Usuario.
\n

\n

CLÁUSULA (8). Cuenta de Registro del Usuario

\n

\n(a) El Administrador podrá en cualquier momento solicitar al Usuario, en el Sitio y/o por correo electrónico enviado al Usuario, de manera previa y expresa, la creación de una o más cuentas de registro, a nombre exclusivo del Usuario y con Credencial de Seguridad, como requisito para:
\n(I) tener disponible en el Sitio, temporaria o definitivamente, información provista por el Administrador y/o uno o más terceros que no estará disponible para ningún otro Usuario que no hubiera creado una cuenta de registro conforme a este apartado; y/o
\n(II) realizar, total o parcialmente, de manera temporaria o definitiva, la Actividad en el Sitio.
\n(b) Cada cuenta de registro creada por el Usuario conforme al apartado (a):
\n(I) será de titularidad y uso intransferibles; y
\n(II) será de mantenimiento gratuito para el Usuario salvo indicación expresa en contrario del Administrador en el Sitio y/o por correo electrónico enviado al Usuario;
\n(III) en cualquier momento:
\n(1) podrá ser eliminada por decisión del Usuario sin expresión de causa salvo indicación expresa en contrario del Administrador en el Sitio y/o por correo electrónico enviado al Usuario; y
\n(2) podrá ser suspendida por hasta 90 (noventa) días o eliminada por decisión del Administrador fundada en:
\n(A) el incumplimiento, total o parcial, temporario o definitivo, por el Usuario de los TyC o la legislación aplicable al Usuario, al Sitio y/o a la Actividad en el Sitio; o
\n(B) una orden recibida de una Autoridad Pública.
\n(c) Si el Administrador adoptare una decisión conforme al apartado (b) sub-apartado (III) punto (2) entonces el Administrador comunicará dicha decisión y su fundamentación por correo electrónico enviado al Usuario en forma previa, simultánea o posterior a la suspensión o eliminación, según el caso, de la cuenta de registro excepto que, a criterio exclusivo del Administrador considerando las circunstancias, dicha comunicación frustrare la eficacia de la suspensión o eliminación, según el caso, de dicha cuenta de registro.
\n

\n

CLÁUSULA (9). Derechos del Administrador

\n

\nAdemás de sus otros derechos establecidos por los TyC y la legislación aplicable, el Administrador tiene derecho también a:
\n(a) informar a la Autoridad Pública que lo solicitare por escrito sobre el Usuario, la Permanencia en el Sitio y/o la Actividad en el Sitio; y
\n(b) impedir el Acceso del Sitio, la Permanencia en el Sitio y/o la Actividad en el Sitio a la persona humana que hubiera perdido la condición de Usuario por causa del incumplimiento, total o parcial, reiterado o continuo, de los TyC o la legislación aplicable al Usuario, al Sitio y/o a la Actividad en el Sitio.
\n

\n

CLÁUSULA (10). Modificaciones y Otras Situaciones

\n

\n(a) El Administrador:
\n(I) podrá a su exclusivo criterio, en cualquier momento y sin necesidad de dar aviso o explicación al Usuario en forma previa, simultánea o posterior:
\n(1) modificar, total o parcialmente, de manera temporaria o definitiva:
\n(A) el Sitio; y/o
\n(B) los TyC; y
\n(2) impedir con alcance general, total o parcialmente, de manera temporaria o definitiva, el Acceso del Sitio; y
\n(3) cerrar, total o parcialmente, de manera temporaria o definitiva, el Sitio; y
\n(II) sin perjuicio de lo dispuesto en el sub-apartado (I), podrá comunicar al Usuario, en el Sitio y/o por correo electrónico enviado al Usuario, en la oportunidad y durante el tiempo que en cada caso el Administrador determinare:
\n(1) una modificación, total o parcial, temporaria o definitiva:
\n(A) del Sitio; y/o
\n(B) de los TyC; y
\n(2) un impedimento, total o parcial, temporario o definitivo, al Acceso del Sitio; y
\n(3) el cierre, total o parcial, temporario o definitivo, del Sitio; y
\n(III) no estará obligado por el Usuario para:
\n(1) modificar, total o parcialmente, de manera temporaria o definitiva, el Sitio para mantenerlo actualizado; o
\n(2) mantener habilitada para el Usuario una o más funcionalidades del Sitio que el Administrador hubiera deshabilitado debido a la modificación del Sitio durante un tiempo (determinado o indeterminado) posterior a la implementación de una modificación del Sitio; o
\n(3) mantener disponible para el Usuario la totalidad o parte del Sitio que el Administrador hubiera eliminado debido a la modificación del Sitio durante un tiempo (determinado o indeterminado) posterior a la implementación de una modificación.
\n(b) El Usuario:
\n(I) no estará obligado por el Administrador para aceptar, total o parcialmente, ninguna modificación del Sitio y/o de los TyC realizada por el Administrador; y
\n(II) deberá manifestar expresamente, en el Sitio y/o por correo electrónico enviado al Administrador, en la oportunidad y durante el tiempo que en cada caso el Administrador determinare, haber leído, comprendido y aceptado sin condiciones y totalmente la modificación de los TyC como requisito previo para Permanecer en el Sitio y/o realizar la Actividad en el Sitio; y
\n(III) deberá abstenerse de Acceder al Sitio si no tuviere intención de cumplir con lo dispuesto en el sub-apartado (II); y
\n(IV) no deberá Permanecer en el Sitio o realizar la Actividad en el Sitio si no hubiera cumplido con lo dispuesto en el sub-apartado (II).
\n

\n

CLÁUSULA (11). Sitios de Terceros

\n

\n(a) El Sitio podrá en cualquier momento, temporaria o definitivamente, incluir y habilitar uno o más enlaces a uno o más Sitios de Terceros.
\n(b) Ningún Sitio de Tercero será considerado de propiedad del Administrador o licenciado al Administrador salvo indicación expresa en contrario del Administrador en el Sitio y/o por correo electrónico enviado al Usuario.
\n(c) La inclusión, habilitación, sustitución, deshabilitación y eliminación de un enlace a un Sitio de Tercero:
\n(I) será realizada por el Administrador con la finalidad de mejorar la interacción entre el Usuario y el Sitio durante la Permanencia en el Sitio salvo indicación expresa en contrario del Administrador en el Sitio y/o por correo electrónico enviado al Usuario; y
\n(II) se regirá por lo dispuesto en la Cláusula Modificaciones y Otras Situaciones.
\n(d) El Usuario no estará obligado por el Administrador a:
\n(I) Acceder a ningún Sitio de Tercero; o
\n(II) utilizar uno o más enlaces a un Sitio de Tercero incluidos y habilitados en el Sitio para Acceder a dicho Sitio de Tercero,
\nsalvo indicación expresa en contrario del Administrador en el Sitio y/o por correo electrónico enviado al Usuario.
\n(e) Como consecuencia de lo establecido en el apartado (d):
\n(I) el Administrador no será responsable porque:
\n(1) un Sitio de Tercero:
\n(A) cumpla, total o parcialmente, de manera temporaria o definitiva, con la legislación aplicable al Usuario y/o a dicho Sitio de Tercero en vigencia al momento de Acceder a dicho Sitio de Tercero en el lugar donde el Usuario Accediere a dicho Sitio de Tercero; o
\n(B) esté operativo, total o parcialmente, de manera temporaria o definitiva, al momento en que el Usuario intentare Acceder a dicho Sitio de Tercero; o
\n(C) establezca para Acceder a dicho Sitio de Tercero requisitos del Usuario no más exigentes (cuantitativa y/o cualitativamente) que los requisitos establecidos en los TyC para el Acceso del Sitio al momento que el Usuario intentare Acceder a dicho Sitio de Tercero; o
\n(D) funcione, total o parcialmente, de manera temporaria o definitiva, de manera acorde con los términos y condiciones de dicho Sitio de Tercero o, en su defecto, lo estipulado por la persona propietaria y/o administradora de dicho Sitio de Tercero; o
\n(E) ofrezca contenido digital (incluyendo, sin limitación, textos, imágenes, videos, sonidos, gráficos, etc.) completo, exacto, actual y acorde con la funcionalidad o los objetivos de dicho Sitio de Tercero o que respete la letra y el espíritu de los términos y condiciones de dicho Sitio de Tercero y la legislación aplicable; o
\n(F) posibilite una interacción entre el Usuario y dicho Sitio de Tercero no menos satisfactoria (cuantitativa y/o cualitativamente) que la interacción entre el Usuario y el Sitio durante la Permanencia en el Sitio; o
\n(2) el Usuario:
\n(A) reúna todos los requisitos que un Sitio de Tercero estableciere para Acceder al mismo; o
\n(B) no sufra, de manera directa o indirecta, actual o potencialmente, temporaria o definitivamente, con efecto inmediato o diferido, un daño y/o perjuicio (patrimonial y/o moral) por causa de Acceder a un Sitio de Tercero; y
\n(II) el Usuario será responsable por determinar con independencia del Administrador, por su propia iniciativa, a su exclusiva costa y bajo su exclusiva responsabilidad:
\n(1) la legalidad de Acceder a un Sitio de Tercero conforme a la legislación aplicable al Usuario y/o a dicho Sitio de Tercero en vigencia al momento de Acceder a dicho Sitio de Tercero en el lugar donde el Usuario tuviere intención de Acceder a dicho Sitio de Tercero; y
\n(2) la necesidad o conveniencia para el Usuario y los riesgos para éste y/o terceros de Acceder a un Sitio de Tercero conforme a las circunstancias del Usuario al momento de Acceder a dicho Sitio de Tercero en el lugar donde el Usuario tuviere intención de Acceder a dicho Sitio de Tercero; y
\n(3) la aceptación o el rechazo de los términos y condiciones de un Sitio de Tercero.
\n

\n

CLÁUSULA (12). Propiedad Intelectual

\n

\n(a) El Sitio:
\n(I) es íntegramente de propiedad del Administrador o está licenciado al Administrador salvo indicación expresa en contrario del Administrador en el Sitio y/o por correo electrónico enviado al Usuario; y
\n(II) está protegido por la legislación sobre propiedad intelectual, sobre marcas y designaciones y sobre patentes de invención y modelos de utilidad en todo cuanto corresponde.
\n(b) El Usuario:
\n(I) se abstendrá de:
\n(1) almacenar en cualquier dispositivo, de cualquier forma y por cualquier causa que fuere, ya sea con finalidad de lucrar o no, la totalidad o parte del Sitio sin la autorización previa y expresa del Administrador en el Sitio y/o por correo electrónico enviado al Usuario; y
\n(2) modificar, copiar, duplicar, reproducir, transmitir, circular o distribuir a cualquier tercero, de cualquier forma y por cualquier causa que fuere, ya sea con finalidad de lucrar o no, la totalidad o parte del Sitio sin la autorización previa y expresa del Administrador en el Sitio y/o por correo electrónico enviado al Usuario; y
\n(3) atribuirse la propiedad y apropiarse, de cualquier forma y por cualquier causa que fuere, ya sea con finalidad de lucrar o no, de la totalidad o parte del Sitio; y
\n(4) atribuir la propiedad, de cualquier forma y por cualquier causa que fuere, ya sea con finalidad de lucrar o no, de la totalidad o parte del Sitio a una persona distinta del Administrador; y
\n(5) atribuirse una licencia o permiso de uso y disponer como licenciatario o permisionario, total o parcialmente, de cualquier forma y por cualquier causa que fuere, ya sea con finalidad de lucrar o no, de la totalidad o parte del Sitio; y
\n(II) otorgará al Administrador automáticamente al momento de transmitirlo al Sitio una licencia o permiso de uso irrevocable, a perpetuidad, sin exclusividad, transferible y sin derecho a compensación alguna en relación con cualquier contenido de propiedad del Usuario que éste no debiere abstenerse de transmitir al Sitio conforme a la Cláusula Obligaciones del Usuario y que el Usuario transmitiere al Sitio durante la Permanencia en el Sitio; estipulándose que el Administrador no tendrá obligación de dar aviso previo al Usuario sobre la oportunidad y finalidad del uso de dicho contenido de parte del Administrador; estipulándose, no obstante, que el Administrador no utilizará dicho contenido para una finalidad ilícita.
\n

\n

CLÁUSULA (13). Exclusión de Responsabilidad

\n

\n(a) El Usuario reconoce y acepta que el Acceso del Sitio, la Permanencia en el Sitio y la Actividad en el Sitio:
\n(I) no es un deber ni una obligación del Usuario creado o impuesta, respectivamente, por el Administrador; y
\n(II) es realizado:
\n(1) por su propia iniciativa; y
\n(2) a su exclusiva costa y riesgo; y
\n(3) con comprensión y aceptación de los TyC; y
\n(4) bajo su exclusiva responsabilidad.
\n(III) no garantiza, expresa ni implícitamente, que el Usuario acceda a contratar un servicio de asistencia legal que satisfaga las expectativas ni resultados esperados por el propio Usuario previo a, o durante su Actividad en el Sitio y/o su Permanencia en el Sitio, ni que quien preste dicha asistencia esté habilitado o conserve la habilitación legal para prestarla.
\n(IV) no garantiza ni ratifica ni hace propias, expresa ni implícitamente, las calificaciones que otros Usuarios efectúen sobre los profesionales registrados en el Sitio que ofrecen sus servicios legales.
\n(V) no es
\n(b) Como consecuencia de lo establecido en el apartado (a) el Administrador no será responsable por cualquier daño y/o perjuicio, patrimonial y/o moral, causado, directa o indirectamente, de manera actual o potencial, al Usuario como consecuencia:
\n(I) de la imposibilidad, temporaria o definitiva, de Acceder al Sitio, Permanecer en el Sitio, realizar la Actividad en el Sitio o Salir del Sitio, total o parcialmente, por una causa técnica o legal no imputable al Administrador; o
\n(II) del Acceso del Sitio, la Permanencia en el Sitio, la Actividad en el Sitio o la Salida en el Sitio ya sea en cumplimiento o incumplimiento de los TyC; o
\n(III) en relación con un Sitio de Tercero:
\n(1) de Acceder a dicho Sitio de Tercero conforme al apartado (d) de la Cláusula Sitios de Terceros salvo que el Acceso de dicho Sitio de Tercero hubiera ocurrido por indicación expresa del Administrador en el Sitio y/o por correo electrónico enviado al Usuario; estipulándose, no obstante, que el Administrador no será responsable si dicha indicación hubiera sido consecuencia del cumplimiento de una disposición de la legislación aplicable u orden recibida de una Autoridad Pública; o
\n(2) del contenido de dicho Sitio de Tercero; o
\n(3) de la actividad realizada en dicho Sitio de Tercero; o
\n(4) del almacenamiento en el dispositivo utilizado por el Usuario para Acceder a dicho Sitio de Tercero y la utilización por éste de una o más Cookies de dicho Sitio de Tercero; y
\n(5) de la transmisión al dispositivo utilizado por el Usuario para Acceder a dicho Sitio de Tercero y del almacenamiento y de la ejecución en dicho dispositivo, temporaria o definitivamente, con efecto inmediato o diferido, de software malicioso como consecuencia del Acceso de dicho Sitio de Tercero; o
\n(IV) de la pérdida, total o parcial, temporaria o definitiva, de la confidencialidad de una Credencial de Seguridad por una causa no imputable al Administrador; o
\n(V) de la transmisión al dispositivo utilizado por el Usuario para Acceder al Sitio y del almacenamiento y de la ejecución en dicho dispositivo, temporaria o definitivamente, con efecto inmediato o diferido, por una causa no imputable al Administrador, de software malicioso como consecuencia del Acceso del Sitio, la Permanencia en el Sitio, la Actividad en el Sitio o la Salida del Sitio; o
\n(VI) del incumplimiento por el Usuario, de manera temporaria o definitiva y por cualquier causa que fuere, de los TyC o un deber u obligación creado o impuesto por el Administrador al Usuario en relación con un incumplimiento por el Usuario de los TyC.
\n(VI) de la vinculación profesional entre el Usuario y el prestador de la asistencia legal, toda vez que el Usuario reconoce y acepta que el Administrador es un tercero ajeno a esa vinculación.
\n(VII) de las calificaciones que los Usuarios realicen sobre los prestadores de servicios legales registrados y ofrecidos en el Sitio.
\n(c) Nada en el Sitio deberá ser interpretado por el Usuario como que el Administrador presta asesoramiento profesional de ningún tipo (incluyendo, sin limitación, jurídico, contable, tributario o financiero) y, en consecuencia, el Usuario deberá obtener con independencia del Administrador, por su propia iniciativa, a su exclusiva costa y bajo su exclusiva responsabilidad el asesoramiento profesional del tipo de que se trate que el Usuario considerare necesario o conveniente conforme a sus circunstancias salvo indicación expresa en contrario del Administrador en el Sitio y/o por correo electrónico enviado al Usuario.
\n

\n

CLÁUSULA (14). Privacidad y Protección de Datos Personales

\n

\n(a) El Sitio ha sido desarrollado con respeto por la privacidad del Usuario en Internet y considerando el deber del Administrador de proteger, conforme a la Ley 25326, cualesquiera Datos Personales que el Usuario transmitiere al Sitio en relación con el Acceso del Sitio, la Permanencia en el Sitio, la Actividad en el Sitio y la Salida del Sitio.
\n(b) Cada Acceso del Sitio automáticamente representa para el Usuario su consentimiento sin condiciones para que el Administrador pueda recolectar, en el Sitio y/o por correo electrónico recibido del Usuario, uno o más Datos Personales con las siguientes finalidades salvo indicación expresa en contrario del Administrador en el Sitio y/o por correo electrónico enviado al Usuario:
\n(I) mejorar la interacción entre el Usuario y el Sitio durante la Permanencia en el Sitio; y
\n(II) elaborar estadísticas anónimas (es decir, no susceptibles de posibilitar la identificación del Usuario) del Sitio; y
\n(III) cumplir una orden de una Autoridad Pública recibida por el Administrador.
\n(c) El Administrador deberá obtener del Usuario, en el Sitio y/o por correo electrónico recibido del Usuario, el consentimiento sin condiciones del Usuario para guardar una o más Cookies del Sitio en el dispositivo utilizado por el Usuario para Acceder al Sitio y utilizar dichas Cookies del Sitio antes de guardar éstas en dicho dispositivo.
\n(d) El Usuario:
\n(I) podrá en cualquier momento durante la Permanencia en el Sitio comunicar al Administrador en el Sitio su negativa sin condiciones a:
\n(1) suministrar uno o más Datos Personales al Administrador conforme al apartado (b); y/o
\n(2) permitir el almacenamiento y la utilización de una o más Cookies del Sitio conforme al apartado (c); y
\n(II) reconoce y acepta que la interacción entre el Usuario y el Sitio durante la Permanencia en el Sitio podría ser menos satisfactoria (cuantitativa y/o cualitativamente) que lo sería por el contrario si:
\n(1) comunicare una negativa conforme al sub-apartado (I); o
\n(2) suministrare Datos Personales incompletos, inexactos o falsos a los fines del apartado (b).
\n(e) El Administrador almacenará los Datos Personales en una base de datos cuya administración será responsabilidad exclusiva del Administrador en el domicilio indicado en la Cláusula Domicilio Especial.
\n(f) Los Datos Personales que el Administrador recolectare conforme al apartado (b) podrán ser almacenados, procesados y transferidos exclusivamente por:
\n(I) el Administrador; y
\n(II) cada persona humana o jurídica con la que el Administrador celebrare un contrato de transferencia o cesión de uno o más Datos Personales; y
\n(III) cada Autoridad Pública que requiriere al Administrador la transferencia o cesión de uno o más Datos Personales por resolución judicial y cuando medien razones fundadas relativas a la seguridad pública, la defensa nacional o la salud pública.
\n(g) Conforme a la Ley 25326 el Usuario podrá solicitar al Administrador:
\n(I) el acceso a uno o más Datos Personales; y
\n(II) la actualización de uno o más Datos Personales que hubieran perdido vigencia por haber cambiado las circunstancias del Usuario; y
\n(III) la rectificación de uno o más Datos Personales inexactos o incompletos; y
\n(IV) el bloqueo de uno o más Datos Personales; y
\n(V) la supresión de uno o más Datos Personales.
\n(h) Cada solicitud del Usuario conforme al apartado (g) deberá ser efectuada mediante:
\n(I) una carta documento si el Usuario solicitare acceder a uno o más Datos Personales; o
\n(II) una carta simple, acompañada de una fotocopia simple de su Documento Nacional de Identidad o Pasaporte vigente, si el Usuario solicitare la actualización, la rectificación, el bloqueo o la supresión de uno o más Datos Personales.
\n(i) El Usuario deberá entregar o causar que se entregue la comunicación correspondiente según el apartado (h) en el domicilio del Administrador indicado en la Cláusula Domicilio Especial.
\n(j) El Administrador:
\n(I) no estará obligado a responder favorablemente:
\n(1) una solicitud de acceso, rectificación y/o supresión de uno o más Datos Personales recibida del Usuario conforme al apartado (g) si el cumplimiento con la solicitud de que se trate afectare la protección de la defensa de la Nación, del orden y la seguridad públicos o de los derechos e intereses de terceros; o
\n(2) una solicitud de acceso de uno o más Datos Personales recibida del Usuario conforme al apartado (g) sub-apartado (I) si dicha solicitud no estuviere fechada por lo menos 6 (seis) meses después de la fecha de la última solicitud de acceso de Datos Personales que el Administrador hubiera recibido del Usuario conforme al apartado (g) sub-apartado (I) salvo que el Usuario demostrare razonablemente al Administrador (a criterio exclusivo del Administrador) que tiene un interés legítimo para acceder a los Datos Personales de que se trate antes de transcurrir 6 (seis) meses desde de la fecha de aquella última solicitud de acceso; o
\n(3) una solicitud de supresión de uno o más Datos Personales recibida del Usuario conforme al apartado (g) sub-apartado (V) si la supresión solicitada pudiere causar perjuicios a derechos o intereses legítimos de terceros o impidiere al Administrador cumplir una obligación legal de conservar los Datos Personales de que se trate; y
\n(II) informará los fundamentos de cada negativa conforme al sub-apartado (I) mediante una comunicación escrita dirigida al domicilio que el Usuario hubiera informado en la solicitud rechazada de que se trate.
\n(k) La AAIP, en su carácter de Órgano de Control de la Ley 25326, tiene la atribución de atender las denuncias y reclamos que interpongan quienes resulten afectados en sus derechos por incumplimiento de las normas vigentes en materia de protección de Datos Personales.
\n

\n

CLÁUSULA (15). Comunicaciones

\n

\n(a) El Usuario podrá comunicarse con el Administrador:
\n(I) en el Sitio; o
\n(II) sólo durante el tiempo que razones técnicas impidieren transmitir en el Sitio la comunicación al Administrador, por correo electrónico enviado a la dirección del Administrador indicada en la Cláusula Definiciones; o
\n(III) sólo con la finalidad establecida en el apartado (g) de la Cláusula Privacidad y Protección de Datos Personales, de la forma indicada en el apartado (h) de la Cláusula Privacidad y Protección de Datos Personales.
\n(b) El Administrador podrá comunicarse con el Usuario:
\n(I) en el Sitio; y/o
\n(II) por correo electrónico enviado a la dirección que el Usuario hubiera suministrado al Administrador en el Sitio; y
\n(IV) sólo en respuesta a una solicitud del Usuario formulada conforme al apartado (g) de la Cláusula Privacidad y Protección de Datos Personales, por comunicación escrita dirigida al domicilio que el Usuario hubiera indicado en la solicitud de que se trate.
\n(c) Las comunicaciones entre el Usuario y el Administrador no serán confidenciales respecto del Administrador y el Usuario y serán confidenciales respecto de toda otra persona humana o jurídica salvo una Autoridad Pública en ejercicio de sus funciones.
\n

\n

CLÁUSULA (16). Cesión

\n

\nEl Usuario no se obligará a ceder ni cederá a tercero alguno:
\n(a) su posición contractual en los TyC; o
\n(b) cualquiera de las obligaciones que le atribuyen los TyC o de los derechos que pudiere tener frente al Administrador por causa de los TyC o la legislación aplicable al Sitio.
\n

\n

CLÁUSULA (17). Validez

\n

\nLa invalidez de una o más Cláusulas (pero no de los TyC en su totalidad) que sobrevenga después de su publicación en el Sitio por una causa que no fuere imputable al Administrador o al Usuario o a ambos no afectará la validez de las restantes Cláusulas.
\n

\n

CLÁUSULA (18). Domicilio Especial

\n

\nEl Administrador constituye domicilio en la siguiente dirección: Delaware, USA.? [Debería ser en el país].
\n

\n

CLÁUSULA (19). Ley Aplicable. Controversias

\n

\nLos TyC se rigen exclusivamente por la ley de la República Argentina.
\nCualquier controversia emergente de estos TyC será sometida para su definitiva resolución ante los tribunales nacionales ordinarios en materia comercial con asiento en la Capital Federal de la República Argentina.
\n

\n
\n
\n
\n
\n","import { Pregunta } from \"./pregunta\";\n\nexport class Formulario {\n id_formulario: number;\n status: number;\n preguntas : Pregunta[];\n\n constructor(id_formulario,status){\n this.id_formulario=id_formulario;\n this.status=status;\n this.preguntas=[];\n }\n \n}\n \n ","import { Component, OnInit} from '@angular/core';\nimport { Validators, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { RegisterClient, ResetPasswordRepeat } from '../../../api/user';\nimport { ApiService } from '../../../api/api.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CheckPasswordService } from 'src/app/services/register/checkPassword/check-password.service';\nimport { Company } from 'src/app/api/company';\nimport { MatDialog } from '@angular/material/dialog';\nimport {MAT_DIALOG_DATA} from '@angular/material/dialog';\nimport { Inject } from '@angular/core';\nimport { Pregunta } from 'src/app/api/pregunta';\nimport { Formulario } from 'src/app/api/formulario';\n\n@Component({\n selector: 'app-cert-formulario',\n templateUrl: './formulario.component.html',\n styleUrls: ['./formulario.component.css']\n})\nexport class CertFormularioComponent implements OnInit{\n language:String=\"\";\n coinciden = true;\n imgSelected: String = \"\";\n blur = false;\n constructor(@Inject(MAT_DIALOG_DATA) public data: any,public dialog: MatDialog,private apiService: ApiService, private checkPasswordService: CheckPasswordService,private _snackBar: MatSnackBar, private router: Router, private route: ActivatedRoute,public translate: TranslateService) { \n translate.addLangs(['es-AR', 'it-IT','en-US']);\n this.language = sessionStorage.getItem('language');\n if(!sessionStorage.getItem(\"language\")){\n translate.setDefaultLang(\"es-AR\");\n this.language = \"es-AR\"\n }else\n translate.setDefaultLang(sessionStorage.getItem('language'));\n if(this.language == \"es-AR\")\n this.imgSelected = \"../../../assets/españa.png\"\n if(this.language == \"it-IT\")\n this.imgSelected = \"../../../assets/italia.png\"\n if(this.language == \"en-US\")\n this.imgSelected = \"../../../assets/ingles.png\"\n }\n certForm = new UntypedFormGroup({\n question: new UntypedFormControl('', [\n Validators.required,\n ]),\n weight: new UntypedFormControl('', [\n Validators.required,\n ]),\n answer: new UntypedFormControl('', [\n Validators.required,\n ])\n\n });\n idCambioClave: number;\n edit:Boolean=false;\n selectedPregunta:Pregunta;\n formulario:Formulario;\n\n ngOnInit() {\n this.edit=this.data.edit;\n this.formulario=this.data.formulario;\n if(this.edit==true){\n this.selectedPregunta=this.data.pregunta;\n this.feedForm();\n }\n }\n\n hide = true;\n\n feedForm(){\n this.certForm.get('question').setValue(this.selectedPregunta.pregunta);\n this.certForm.get('weight').setValue(this.selectedPregunta.peso);\n this.certForm.get('answer').setValue(this.selectedPregunta.respuesta);\n }\n \n switchLang(lang: string) {\n console.log(lang)\n this.translate.use(lang);\n this.language = lang;\n sessionStorage.setItem('language', lang);\n sessionStorage.language = lang;\n if(lang == \"es-AR\")\n this.imgSelected = \"../../../assets/españa.png\"\n if(lang == \"it-IT\")\n this.imgSelected = \"../../../assets/italia.png\"\n if(lang == \"en-US\")\n this.imgSelected = \"../../../assets/ingles.png\"\n }\n\n onSubmit() {\n\n console.log(\"Valid \"+this.certForm.valid);\n if(this.certForm.valid){\n let question = this.certForm.value.question;\n let weight = this.certForm.value.weight;\n let answer = this.certForm.value.answer;\n \n if(this.edit==true){\n let pregunta:Pregunta={formulario:this.formulario,id_pregunta:this.selectedPregunta.id_pregunta,peso:weight,pregunta:question,respuesta:answer};\n this.apiService.updPregunta(pregunta).subscribe(preg => {\n if(preg!=null){\n this.dialog.closeAll();\n }\n else{\n this.openSnackBar(\"Ocurrio un error\");\n }\n },\n error => {\n console.error(error);\n this.openSnackBar(\"Estamos trabajando para mejorar el servicio, por favor intente nuevamente más tarde\");\n \n });\n }\n else{\n let pregunta:Pregunta={formulario:this.formulario,id_pregunta:null,peso:weight,pregunta:question,respuesta:answer};\n this.apiService.putPregunta(pregunta).subscribe(preg => {\n if(preg!=null){\n this.dialog.closeAll();\n }\n else{\n this.openSnackBar(\"Ocurrio un error\");\n }\n },\n error => {\n console.error(error);\n this.openSnackBar(\"Estamos trabajando para mejorar el servicio, por favor intente nuevamente más tarde\");\n \n });\n }\n }\n else{\n this.openSnackBar(\"Ingrese todos los campos\");\n }\n }\n\n\n\n openSnackBar(message: string) {\n this._snackBar.open(message, \"\", { duration: 5000 });\n }\n\n}","
\n \n \n {{ \"paises.admin\" | translate }}\n \n
\n \n
\n \n
\n\n\n\n\n \n
\n\n \n\n \n\n
\n\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n ID\n {{ pregunta.id_pregunta }}\n Pregunta\n {{ pregunta.pregunta }}\n Respuesta\n \n {{ pregunta.respuesta }}\n \n Peso\n \n {{ pregunta.peso }}\n \n {{ \"registroEntidad.acciones\" | translate }}\n \n \n
\n
\n
\n
\n","\n
\n \n
\n\n
\n\n
\n
\n

{{ \"certificacion.cert_title\" | translate }}

\n
\n
\n
\n \n
\n
\n \n {{ \"certificacion.question\" | translate }}\n \n \n
\n\n
\n \n {{ \"certificacion.weight\" | translate }}\n \n \n
\n
\n
\n
\n Valido
\n \n No\n Si\n \n
\n\n
\n
\n\n \n \n \n
\n
\n\n \n
\n\n","import {\n Component,\n OnInit,\n Input,\n Output,\n ViewChild,\n ElementRef,\n Inject,\n } from '@angular/core';\n import { FormControl, FormGroup } from '@angular/forms';\n import { MatSnackBar } from '@angular/material/snack-bar';\n import { ApiService } from 'src/app/api/api.service';\n import { UpdateRangesService } from 'src/app/services/agenda/update-ranges.service';\n import { LogOutService } from 'src/app/services/logOut/log-out.service';\n import { MatAccordion } from '@angular/material/expansion';\n import { TranslateService } from '@ngx-translate/core';\n import { Company } from 'src/app/api/company';\n import { EntFormularioComponent } from 'src/app/components/company/formulario/formulario.component'\nimport { MatDialog } from '@angular/material/dialog';\nimport { Pregunta } from 'src/app/api/pregunta';\nimport { Formulario } from 'src/app/api/formulario';\nimport { CertFormularioComponent } from '../../certificacion/formulario/formulario.component';\n @Component({\n selector: 'app-certificacion',\n templateUrl: './certificacion.component.html',\n styleUrls: ['./certificacion.component.css'],\n })\n export class CertificacionComponent implements OnInit {\n\n sinPreguntas = false;\n constructor(\n public translate: TranslateService,\n private logOut: LogOutService,\n private _snackBar: MatSnackBar,\n private apiService: ApiService,\n private dialog: MatDialog\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang('es-AR');\n }\n displayedColumns: string[] = [\n 'id_pregunta',\n 'pregunta',\n 'respuesta',\n 'peso',\n 'action'\n ];\n abogadosData: any;\n cargoLaLista = false;\n id: string;\n selectedPregunta:Pregunta;\n formulario:Formulario;\n \n ngOnInit(): void {\n this.getFormulario();\n //this.getProvincias(dato);\n }\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n addQuestion(){\n const dialogRef = this.dialog.open(CertFormularioComponent, {\n backdropClass: 'backdropBackground',\n data: {\n edit: false,\n formulario:this.formulario\n }\n });\n dialogRef.afterClosed().subscribe(result => {\n this.getFormulario();\n });\n }\n addFormulario(){\n let form=new Formulario(1,1);\n this.apiService.postFormulario(form).subscribe((formulario) => (this.formulario = formulario));\n }\n\n getFormulario(){\n this.apiService.getFormulario(1).subscribe((formulario) => (this.formulario = formulario));\n }\n \n edit(pregunta:Pregunta){\n const dialogRef = this.dialog.open(CertFormularioComponent, {\n backdropClass: 'backdropBackground',\n data: {\n edit: true,\n formulario:this.formulario,\n pregunta:pregunta\n }\n });\n\n dialogRef.afterClosed().subscribe(result => {\n this.getFormulario();\n });\n }\n \n cerrarSesion() {\n this.logOut.cerrarSesion();\n }\n \n \n }\n ","import { Component, OnInit } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-sign',\n templateUrl: './sign.component.html',\n styleUrls: ['./sign.component.css']\n})\nexport class SignComponent implements OnInit {\n\n constructor(private sanitizer: DomSanitizer) { }\n\n sign_url='assets/manifiesto.pdf';\n\n ngOnInit(): void {\n }\n\n signURL() {\n return this.sanitizer.bypassSecurityTrustUrl(this.sign_url);\n }\n\n}","
\n
\n
\n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-politicas',\n templateUrl: './politicas.component.html',\n styleUrls: ['./politicas.component.css']\n})\nexport class PoliticasComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
\n
\n
\n
\n
\n

POLITICAS DE PRIVACIDAD
\n DEL SITIO WWW.LEGALIFY.AR, WWW.LEGALIFY.COM.AR y WWW.LEGALIFY.APP

\n

\n(a) El Sitio ha sido desarrollado con respeto por la privacidad del Usuario en Internet y considerando el deber del Administrador de proteger, conforme a la Ley 25326, cualesquiera Datos Personales que el Usuario transmitiere al Sitio en relación con el Acceso del Sitio, la Permanencia en el Sitio, la Actividad en el Sitio y la Salida del Sitio.
\n(b) Cada Acceso del Sitio automáticamente representa para el Usuario su consentimiento sin condiciones para que el Administrador pueda recolectar, en el Sitio y/o por correo electrónico recibido del Usuario, uno o más Datos Personales con las siguientes finalidades salvo indicación expresa en contrario del Administrador en el Sitio y/o por correo electrónico enviado al Usuario:
\n(I) mejorar la interacción entre el Usuario y el Sitio durante la Permanencia en el Sitio; y
\n(II) elaborar estadísticas anónimas (es decir, no susceptibles de posibilitar la identificación del Usuario) del Sitio; y
\n(III) cumplir una orden de una Autoridad Pública recibida por el Administrador.
\n(c) El Administrador deberá obtener del Usuario, en el Sitio y/o por correo electrónico recibido del Usuario, el consentimiento sin condiciones del Usuario para guardar una o más Cookies del Sitio en el dispositivo utilizado por el Usuario para Acceder al Sitio y utilizar dichas Cookies del Sitio antes de guardar éstas en dicho dispositivo.
\n(d) El Usuario:
\n(I) podrá en cualquier momento durante la Permanencia en el Sitio comunicar al Administrador en el Sitio su negativa sin condiciones a:
\n(1) suministrar uno o más Datos Personales al Administrador conforme al apartado (b); y/o
\n(2) permitir el almacenamiento y la utilización de una o más Cookies del Sitio conforme al apartado (c); y
\n(II) reconoce y acepta que la interacción entre el Usuario y el Sitio durante la Permanencia en el Sitio podría ser menos satisfactoria (cuantitativa y/o cualitativamente) que lo sería por el contrario si:
\n(1) comunicare una negativa conforme al sub-apartado (I); o
\n(2) suministrare Datos Personales incompletos, inexactos o falsos a los fines del apartado (b).
\n(e) El Administrador almacenará los Datos Personales en una base de datos cuya administración será responsabilidad exclusiva del Administrador en el domicilio indicado en la Cláusula Domicilio Especial.
\n(f) Los Datos Personales que el Administrador recolectare conforme al apartado (b) podrán ser almacenados, procesados y transferidos exclusivamente por:
\n(I) el Administrador; y
\n(II) cada persona humana o jurídica con la que el Administrador celebrare un contrato de transferencia o cesión de uno o más Datos Personales; y
\n(III) cada Autoridad Pública que requiriere al Administrador la transferencia o cesión de uno o más Datos Personales por resolución judicial y cuando medien razones fundadas relativas a la seguridad pública, la defensa nacional o la salud pública.
\n(g) Conforme a la Ley 25326 el Usuario podrá solicitar al Administrador:
\n(I) el acceso a uno o más Datos Personales; y
\n(II) la actualización de uno o más Datos Personales que hubieran perdido vigencia por haber cambiado las circunstancias del Usuario; y
\n(III) la rectificación de uno o más Datos Personales inexactos o incompletos; y
\n(IV) el bloqueo de uno o más Datos Personales; y
\n(V) la supresión de uno o más Datos Personales.
\n(h) Cada solicitud del Usuario conforme al apartado (g) deberá ser efectuada mediante:
\n(I) una carta documento si el Usuario solicitare acceder a uno o más Datos Personales; o
\n(II) una carta simple, acompañada de una fotocopia simple de su Documento Nacional de Identidad o Pasaporte vigente, si el Usuario solicitare la actualización, la rectificación, el bloqueo o la supresión de uno o más Datos Personales.
\n(i) El Usuario deberá entregar o causar que se entregue la comunicación correspondiente según el apartado (h) en el domicilio del Administrador indicado en la Cláusula Domicilio Especial.
\n(j) El Administrador:
\n(I) no estará obligado a responder favorablemente:
\n(1) una solicitud de acceso, rectificación y/o supresión de uno o más Datos Personales recibida del Usuario conforme al apartado (g) si el cumplimiento con la solicitud de que se trate afectare la protección de la defensa de la Nación, del orden y la seguridad públicos o de los derechos e intereses de terceros; o
\n(2) una solicitud de acceso de uno o más Datos Personales recibida del Usuario conforme al apartado (g) sub-apartado (I) si dicha solicitud no estuviere fechada por lo menos 6 (seis) meses después de la fecha de la última solicitud de acceso de Datos Personales que el Administrador hubiera recibido del Usuario conforme al apartado (g) sub-apartado (I) salvo que el Usuario demostrare razonablemente al Administrador (a criterio exclusivo del Administrador) que tiene un interés legítimo para acceder a los Datos Personales de que se trate antes de transcurrir 6 (seis) meses desde de la fecha de aquella última solicitud de acceso; o
\n(3) una solicitud de supresión de uno o más Datos Personales recibida del Usuario conforme al apartado (g) sub-apartado (V) si la supresión solicitada pudiere causar perjuicios a derechos o intereses legítimos de terceros o impidiere al Administrador cumplir una obligación legal de conservar los Datos Personales de que se trate; y
\n(II) informará los fundamentos de cada negativa conforme al sub-apartado (I) mediante una comunicación escrita dirigida al domicilio que el Usuario hubiera informado en la solicitud rechazada de que se trate.
\n(k) La AAIP, en su carácter de Órgano de Control de la Ley 25326, tiene la atribución de atender las denuncias y reclamos que interpongan quienes resulten afectados en sus derechos por incumplimiento de las normas vigentes en materia de protección de Datos Personales.
\n

\n\n
\n
\n
\n
\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { LoginComponent } from './components/login/login.component';\nimport { PerfilComponent } from './components/cliente/perfil/perfil.component';\nimport { PerfilAbogadoComponent } from './components/abogado/perfil-abogado/perfil-abogado.component';\nimport { CalificarComponent } from './components/calificar/calificar.component';\nimport { PlanComponent } from './components/abogado/plan/plan.component';\nimport { AgregarComponent } from './components/abogado/agregar/agregar.component';\nimport { VinculacionComponent } from './components/mercado/vinculacion/vinculacion.component';\nimport { PagoFalloComponent } from './components/mercado/pago-fallo/pago-fallo.component';\nimport { PagoExitosoComponent } from './components/mercado/pago-exitoso/pago-exitoso.component';\nimport { PagoPendienteComponent } from './components/mercado/pago-pendiente/pago-pendiente.component';\n\nimport { AuthGuard } from './auth.guard';\nimport { Role } from './enums/role';\nimport { NavbarAdminComponent } from './components/admin/navbar-admin/navbar-admin.component';\nimport { PaisesComponent } from './components/admin/paises/paises.component';\nimport { EntidadesComponent } from './components/admin/entidades/entidades.component';\nimport { ExitoComponent } from './components/abogado/plan/exito/exito.component';\nimport { TermsComponent } from './components/terms/terms.component';\nimport { CertificacionComponent } from './components/admin/certificacion/certificacion.component';\nimport { SignComponent } from './components/sign/sign.component';\nimport { PoliticasComponent } from './components/politicas/politicas.component';\n\nconst routes: Routes = [\n {\n path: '',\n redirectTo: 'login',\n pathMatch: 'full',\n },\n {\n path: 'sign-signature',\n component: SignComponent,\n },\n {\n path: 'login',\n component: LoginComponent,\n },\n {\n path: 'login/:tipo',\n component: LoginComponent,\n },\n {\n path: 'pago/fallo',\n component: PagoFalloComponent,\n },\n {\n path: 'pago/pendiente',\n component: PagoPendienteComponent,\n },\n\n {\n path: 'pago/exito',\n component: PagoExitosoComponent,\n },\n {\n path: 'vinculacion',\n component: VinculacionComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Abogado] },\n },\n {\n path: 'agregar',\n component: AgregarComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Abogado] },\n },\n {\n path: 'perfil-cliente',\n component: PerfilComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] },\n },\n {\n path: 'perfil-abogado',\n component: PerfilAbogadoComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Abogado] },\n },\n {\n path: 'calificar',\n component: CalificarComponent,\n },\n {\n path: 'plan',\n component: PlanComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Abogado] },\n }, {\n path: 'plan/exito',\n component: ExitoComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Abogado] },\n },\n\n {\n path: 'navbarAdmin',\n component: NavbarAdminComponent,\n },\n {\n path: 'paises',\n component: PaisesComponent,\n },\n {\n path: 'terminos-y-condiciones',\n component: TermsComponent,\n },\n {\n path: 'politica-de-privacidad',\n component: PoliticasComponent,\n },\n {\n path: 'entidades',\n component: EntidadesComponent,\n },{\n path: 'certificacion',\n component: CertificacionComponent,\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n})\nexport class AppRoutingModule {}\n","
\n \n \n
\n\n","import { Component, OnInit } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { SpinnerServiceService } from './services/spinner-service/spinner-service.service';\nimport { filter } from 'rxjs/operators'\nimport { environment } from 'src/environments/environment.prod'\ndeclare var gtag;\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent implements OnInit{\n cargando: boolean = false;\n title = 'legalifyFrontend';\n\n constructor(private spinnerServiceService: SpinnerServiceService,private routertrack:Router) {\n this.initGoogleAnalytics();\n }\n\n ngOnInit() {\n this.spinnerServiceService.showSpinner$.subscribe(display=> {\n setTimeout(() => {\n this.cargando = display; \n });\n });\n }\n\n initGoogleAnalytics(){\n let navEvents = this.routertrack.events.pipe(\n filter(event => event instanceof NavigationEnd)\n );\n navEvents.subscribe((event:NavigationEnd) => {\n gtag('config', environment.measurement_id,{\n 'page_title' : event.urlAfterRedirects,\n 'page_path':event.urlAfterRedirects\n });\n }\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { ResetPassword } from '../../../api/user';\nimport { ApiService } from '../../../api/api.service';\nimport { MatSnackBar, \n MatSnackBarHorizontalPosition,\n MatSnackBarVerticalPosition, } from '@angular/material/snack-bar';\nimport { environment } from 'src/environments/environment';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-restablecer',\n templateUrl: './restablecer.component.html',\n styleUrls: ['./restablecer.component.css'],\n})\nexport class RestablecerComponent implements OnInit {\n\n horizontalPosition: MatSnackBarHorizontalPosition = 'center';\n verticalPosition: MatSnackBarVerticalPosition = 'top';\n\n user: ResetPassword;\n constructor(\n private apiService: ApiService,\n private _snackBar: MatSnackBar,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n public usuario = { rol: 0 };\n ngOnInit() {}\n userForm = new UntypedFormGroup({\n email: new UntypedFormControl(),\n });\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n onSubmit() {\n if (this.userForm.value.email) {\n this.restablecer();\n }\n }\n\n restablecer() {\n this.apiService\n .requestChangePassword({\n mail: this.userForm.value.email,\n redirectUrl: environment.angularUrl + '/nueva',\n } as ResetPassword)\n .subscribe(\n (userId) => {\n this.getRequest(userId);\n },\n (error) => {\n console.error(error);\n if (error.status === 404) {\n this.openSnackBar(\n 'Error, verifique que haya ingresado correctamente su email'\n );\n } else {\n this.openSnackBar(\n 'Estamos trabajando para mejorar el servicio, por favor intente nuevamente más tarde'\n );\n }\n }\n );\n }\n\n getRequest(userId) {\n this.apiService.getRequest(userId).subscribe(\n (respuesta) => {\n this.openSnackBar(this.translate.instant(\"recuperar.contraseña\"))\n },\n (error) => {\n console.error(error);\n if (error.status === 404) {\n this.openSnackBar(\n 'Error, verifique que haya ingresado correctamente su email'\n );\n } else {\n this.openSnackBar(\n 'Estamos trabajando para mejorar el servicio, por favor intente nuevamente más tarde'\n );\n }\n }\n );\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', {\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n });\n }\n}\n","\n
\n \n
\n \n \n {{ \"reestablecer.correo\" | translate }}\n \n \n \n {{ \"reestablecer.reestablecer\" | translate }}\n \n
\n \n {{ \"reestablecer.volver\" | translate }}\n \n \n \n
\n
\n\n","import { Component, OnInit} from '@angular/core';\nimport { Validators, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { RegisterClient, ResetPasswordRepeat } from '../../../api/user';\nimport { ApiService } from '../../../api/api.service';\nimport { MatSnackBar, \n MatSnackBarHorizontalPosition,\n MatSnackBarVerticalPosition,} from '@angular/material/snack-bar';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { CheckPasswordService } from 'src/app/services/register/checkPassword/check-password.service';\n\n@Component({\n selector: 'app-nueva-formulario',\n templateUrl: './nueva-formulario.component.html',\n styleUrls: ['./nueva-formulario.component.css']\n})\nexport class NuevaFormularioComponent implements OnInit{\n\n horizontalPosition: MatSnackBarHorizontalPosition = 'center';\n verticalPosition: MatSnackBarVerticalPosition = 'top';\n\n language:String=\"\";\n coinciden = true;\n imgSelected: String = \"\";\n blur = false;\n constructor(private apiService: ApiService, private checkPasswordService: CheckPasswordService,private _snackBar: MatSnackBar, private router: Router, private route: ActivatedRoute,public translate: TranslateService) { \n translate.addLangs(['es-AR', 'it-IT','en-US']);\n this.language = sessionStorage.getItem('language');\n if(!sessionStorage.getItem(\"language\")){\n translate.setDefaultLang(\"es-AR\");\n this.language = \"es-AR\"\n }else\n translate.setDefaultLang(sessionStorage.getItem('language'));\n if(this.language == \"es-AR\")\n this.imgSelected = \"../../../assets/españa.png\"\n if(this.language == \"it-IT\")\n this.imgSelected = \"../../../assets/italia.png\"\n if(this.language == \"en-US\")\n this.imgSelected = \"../../../assets/ingles.png\"\n }\n registerClients: RegisterClient[] = [];\n userForm = new UntypedFormGroup({\n password: new UntypedFormControl('', [\n Validators.required,\n Validators.pattern(/^(?=.*[A-Z])(?=.*[0-9])(?=.{8,})/),\n ]),\n repeatPassword: new UntypedFormControl('', [\n Validators.required\n ])\n });\n idCambioClave: number;\n\n ngOnInit() {\n this.route.paramMap.subscribe(params => {\n this.idCambioClave = params['params'].id;\n });\n }\n\n onSubmit() {\n if (this.userForm.value.password != this.userForm.value.repeatPassword) {\n this.openSnackBar(\"Las contraseñas no coinciden\");\n } else if(this.userForm.value.password.length < 8){\n this.openSnackBar(this.translate.instant(\"password.length\"))\n }else{\n this.nueva();\n }\n }\n hide = true;\n\n \n switchLang(lang: string) {\n console.log(lang)\n this.translate.use(lang);\n this.language = lang;\n sessionStorage.setItem('language', lang);\n sessionStorage.language = lang;\n if(lang == \"es-AR\")\n this.imgSelected = \"../../../assets/españa.png\"\n if(lang == \"it-IT\")\n this.imgSelected = \"../../../assets/italia.png\"\n if(lang == \"en-US\")\n this.imgSelected = \"../../../assets/ingles.png\"\n }\n\n nueva() {\n this.apiService.setNewPass({\n clave: this.userForm.value.password,\n idCambioClave: this.idCambioClave,\n } as ResetPasswordRepeat)\n .subscribe( () => { \n this.openSnackBar(\"Contraseña restablecida con éxito\");\n this.router.navigate(['']);\n },\n error => {\n console.error(error);\n if(error.status === 409) {\n this.openSnackBar(\"Error de registro\");\n } else {\n this.openSnackBar(\"Estamos trabajando para mejorar el servicio, por favor intente nuevamente más tarde\");\n }\n });\n }\n\n verificarPassSalir() {\n this.blur = true;\n this.verificarPass();\n }\n\n verificarPass() {\n this.coinciden = this.checkPasswordService.checkPass(\n this.blur,\n this.userForm.value.password,\n this.userForm.value.repeatPassword\n );\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, \"\", {\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n });\n }\n\n}","\n
\n
\n \"\"\n \n
\n \n
\n \n \n {{ \"registroCliente.contraseña\" | translate }}\n \n \n {{ \"registroCliente.contraDescrip\" | translate }}\n \n \n {{ \"registroCliente.repCon\" | translate }}\n \n \n \n \n
\n
\n\n \n

{{ \"reestablecer.cuenta\" | translate }}

\n \n \n
\n
\n\n","import { Injectable } from \"@angular/core\";\nimport { TranslateService } from \"@ngx-translate/core\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UtilService {\n\n constructor() {}\n\n doPreparePageTranslate(translate: TranslateService): void {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n if (sessionStorage.getItem('language') == undefined) {\n var ln = window.navigator.language;\n sessionStorage.setItem('language','es-AR');\n console.log('1ro: ' + ln);\n if (ln != 'es-AR' && ln != 'it-IT') {\n sessionStorage.language = 'es-AR';\n translate.setDefaultLang('es-AR');\n } else {\n translate.setDefaultLang(ln);\n }\n } else { \n translate.setDefaultLang(sessionStorage.language);\n }\n }\n\n}","\n
\n \n \n
\n
\n \n chevron_left\n \n

{{ titulo }}

\n
\n
\n {{ \"redes.term1\" | translate }}
\n {{ \"redes.estaras\" | translate }}\n {{\n \"redes.term2\" | translate\n }}
\n {{ \"redes.term3\" | translate }}\n {{ \"redes.term4\" | translate }}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n \n \n
\n
REGISTRARSE CON
\n
CORREO ELECTRONICO
\n
\n \n
\n
\n\n
\n

{{ \"redes.preg\" | translate }}

\n
\n \n {{ \"redes.ingreso\" | translate }}\n \n \n
\n
\n\n","import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { LoginService } from 'src/app/services/login.service';\nimport { Source } from '../../../enums/redesSociales';\nimport { TranslateService } from '@ngx-translate/core';\nimport { environment } from 'src/environments/environment';\nimport { UtilService } from 'src/app/services/util.service';\ndeclare var gtag;\n@Component({\n selector: 'app-redes',\n templateUrl: './redes.component.html',\n styleUrls: ['./redes.component.css'],\n})\nexport class RedesComponent implements OnInit {\n rol;\n titulo = '';\n mostrarTerminos = true;\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n private loginSrv: LoginService,\n private serviceUtil: UtilService,\n public translate: TranslateService\n ) {\n this.matIconRegistry.addSvgIcon(\n `google`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../assets/google.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `facebook`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../assets/facebook.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `linkedin`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../assets/linkedin.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `correo`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../assets/correo.svg'\n )\n );\n\n this.serviceUtil.doPreparePageTranslate(translate);\n\n let rolSelected: number = 0;\n route.queryParams.subscribe(params => {\n if (params[\"rol\"]) {\n rolSelected = params[\"rol\"] * 1;\n }\n if (params[\"company\"]) {\n this.loginSrv.getCompanyId(params[\"company\"]).subscribe({\n next: (response) => {\n sessionStorage.companyId = response;\n }\n });\n } else\n sessionStorage.removeItem(\"companyId\")\n });\n\n if (rolSelected > 0)\n this.rol = rolSelected\n else\n this.rol = parseInt(localStorage.getItem('rol'), 10);\n if (this.rol === 3) {\n this.mostrarTerminos = false;\n this.translate.get('redes.encuentra').subscribe((translate: string) => {\n this.titulo = this.translate.instant('redes.encuentra');\n });\n //this.titulo = 'Encuentra a tu abogado ideal';\n } else {\n this.translate.get('redes.abogado').subscribe((translate: string) => {\n this.titulo = this.translate.instant('redes.abogado');\n });\n //this.titulo = 'Encuentra nuevos clientes';\n }\n }\n\n ngOnInit(): void {}\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n trackNetworkRegisterFacebook(){\n gtag('event', 'registro', {\n 'send_to':environment.measurement_id,\n 'method': 'register_facebook'\n });\n }\n\n trackNetworkRegisterGoogle(){\n gtag('event', 'registro', {\n 'send_to':environment.measurement_id,\n 'method': 'register_google'\n });\n }\n\n trackNetworkRegisterLinkedin(){\n gtag('event', 'registro', {\n 'send_to':environment.measurement_id,\n 'method': 'register_linkedin'\n });\n \n }\n\n navegarRegistro() {\n if (this.rol == 3) {\n this.router.navigate(['/registro-cliente']);\n } else {\n this.router.navigate(['/registro-abogado']);\n }\n }\n\n obtenerCredencialesLinkedin() {\n this.loginSrv\n .getRedesCredentialsUrl('L', this.rol == 3 ? 'C' : 'A')\n .subscribe(\n (res) => {\n this.trackNetworkRegisterLinkedin();\n window.location.href = res.url;\n },\n (error) => {\n this.loginSrv.handleError(error, Source.Register);\n }\n );\n }\n\n obtenerCredencialesGoogle() {\n this.loginSrv\n .getRedesCredentialsUrl('G', this.rol == 3 ? 'C' : 'A')\n .subscribe(\n (res) => {\n this.trackNetworkRegisterGoogle();\n window.location.href = res.url;\n },\n (error) => {\n this.loginSrv.handleError(error, Source.Register);\n }\n );\n }\n\n obtenerCredencialesFacebook() {\n this.loginSrv\n .getRedesCredentialsUrl('F', this.rol == 3 ? 'C' : 'A')\n .subscribe(\n (res) => {\n this.trackNetworkRegisterFacebook();\n window.location.href = res.url;\n },\n (error) => {\n this.loginSrv.handleError(error, Source.Register);\n }\n );\n }\n}\n","
\n
\n
\n
\n

Te damos la bienvenida

\n
\n
\n\n\n \n \n

{{textoMuestra.titulo}}

\n {{textoMuestra.descripcion}}\n\n
\n \n

{{posicion+1}}/{{textoCliente.length}}

\n

{{posicion+1}}/{{textoAbogado.length}}

\n \n
\n \n
\n
\n
","import { Component, OnInit } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Component({\n selector: 'app-bienvenida',\n templateUrl: './bienvenida.component.html',\n styleUrls: ['./bienvenida.component.css']\n})\nexport class BienvenidaComponent implements OnInit {\n\n soyCliente = false;\n posicionInicial: boolean = true;\n posicionFinal: boolean = false;\n textoCliente = [\n {titulo:\"Crea un nuevo caso\", logo:\"cliente1\",descripcion:\"Escribe el detalle del mismo y elige el medio por el cual quieres contactar a nuestros abogados.\"},\n {titulo:\"Abogados especializados\", logo:\"cliente2\", descripcion:\"Te mostraremos sólo aquellos abogados que estén disponibles y que coincidan con las características de tu caso.\"},\n {titulo:\"Elige, contacta y resuelve tu caso\",logo:\"cliente3\", descripcion:\"Luego de la consulta, no olvides de calificar al abogado que haya atendido tu caso.\"},\n ];\n\n textoAbogado = [\n {titulo:\"Atiende casos de tu interés\", logo:\"abogado1\", descripcion:\"Recibirás notificaciones por mail cuando haya casos que se relacionen con la especialidad y jurisdicción que hayas seleccionado.\"},\n {titulo:\"Agenda citas con clientes\", logo:\"abogado2\", descripcion:\"Elige en que días y horarios estás disponible para que los clientes te agenden consultas pagas. El cliente pagará previamente esos honorarios.\"},\n {titulo:\"Atiende consultas de emergencia\", logo:\"abogado3\", descripcion:\"Elige en que días y horarios estás disponible para recibir llamadas de emergencia. El cliente pagará previamente esos honorarios.\"},\n {titulo:\"Edita tu perfil para que conozcan sobre ti\", logo:\"abogado4\", descripcion:\"Carga una foto y una breve descripción sobre tu trayectoria. De esta manera tendrás más chances de destacar sobre el resto.\"}\n ];\n\n rol:number;\n\n posicion: number;\n textoMuestra= {\n titulo: \"\",\n descripcion: \"\",\n logo:\"\"\n }\n constructor(private router: Router,\n private matIconRegistry: MatIconRegistry, \n private domSanitizer: DomSanitizer) {\n this.matIconRegistry.addSvgIcon(\n `cliente1`,\n this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../assets/cliente1.svg')\n );\n this.matIconRegistry.addSvgIcon(\n `cliente2`,\n this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../assets/cliente2.svg')\n );\n this.matIconRegistry.addSvgIcon(\n `cliente3`,\n this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../assets/cliente3.svg')\n );\n this.matIconRegistry.addSvgIcon(\n `abogado1`,\n this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../assets/abogado1.svg')\n );\n this.matIconRegistry.addSvgIcon(\n `abogado2`,\n this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../assets/abogado2.svg')\n );\n this.matIconRegistry.addSvgIcon(\n `abogado3`,\n this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../assets/abogado3.svg')\n );\n this.matIconRegistry.addSvgIcon(\n `abogado4`,\n this.domSanitizer.bypassSecurityTrustResourceUrl('../../../../assets/abogado4.svg')\n );\n }\n\n navegar() {\n if(history.state.id == 2)\n this.router.navigate(['/oportunidades']);\n else\n this.router.navigate(['/casos-activos/', this.rol]);\n }\n ngOnInit(): void {\n this.rol = history.state.id;\n this.posicion = 0;\n switch(this.rol) {\n case 2:\n this.soyCliente = false;\n break;\n case 3:\n this.soyCliente = true;\n break;\n }\n if(this.soyCliente) {\n this.textoMuestra = this.textoCliente[0];\n } else {\n this.textoMuestra = this.textoAbogado[0];\n }\n \n }\n cambiar(destino: number) {\n const ATRAS = 1;\n const ADELANTE = 2;\n let LONGITUD;\n if(this.soyCliente) {\n LONGITUD = this.textoCliente.length -1;\n } else {\n LONGITUD = this.textoAbogado.length -1;\n }\n switch(destino) {\n case ATRAS: {\n if(this.posicion>0) {\n this.posicion--;\n } else {\n this.posicion = 0;\n }\n break;\n }\n case ADELANTE: {\n if(this.posicion\n
\n
\n \n \n
\n \n
\n

{{ \"creaExitosaAbo.creo\" | translate }}

\n {{\n \"creaExitosaAbo.mail\" | translate\n }}
\n
\n
\n
\n \n
\n

{{ \"creaExitosaAbo.matricula\" | translate }}

\n {{ \"creaExitosaAbo.proceso\" | translate }} \n {{\n \"creaExitosaAbo.noDeseado\" | translate\n }}\n
\n
\n \n {{ \"creaExitosaAbo.volver\" | translate }}\n \n \n
\n
\n
\n\n
\n \n \n
\n \n
\n

{{ \"creaExitosaAbo.creo\" | translate }}

\n {{\n \"creaExitosaAbo.mail\" | translate\n }}
\n
\n
\n
\n \n
\n

{{ \"creaExitosaAbo.matricula\" | translate }}

\n {{ \"creaExitosaAbo.proceso\" | translate }} \n {{\n \"creaExitosaAbo.noDeseado\" | translate\n }}
\n
\n
\n \n {{ \"creaExitosaAbo.volver\" | translate }}\n \n \n
\n
\n\n","import { Component, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-creacion-exitosa-abogado',\n templateUrl: './creacion-exitosa-abogado.component.html',\n styleUrls: ['./creacion-exitosa-abogado.component.css'],\n})\nexport class CreacionExitosaAbogadoComponent implements OnInit {\n registroRedes: boolean = false;\n constructor(public translate: TranslateService) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n ngOnInit(): void {\n let aux = localStorage.getItem('redSocial');\n if (aux == 'true') {\n this.registroRedes = true;\n }\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ApiService } from '../../../../api/api.service';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-cuenta-validada-abogado',\n templateUrl: './cuenta-validada-abogado.component.html',\n styleUrls: ['./cuenta-validada-abogado.component.css']\n})\nexport class CuentaValidadaAbogadoComponent implements OnInit {\n\n id = \"\";\n lang = \"\";\n constructor(private router: Router,\n private apiService: ApiService,\n private route: ActivatedRoute,public translate: TranslateService) {\n\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n if(sessionStorage.getItem('language')==null){\n translate.setDefaultLang('es-AR');\n sessionStorage.setItem('language','es-AR');\n }\n else{\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n }\n \n textoTitulo = \"Identidad validada. Ahora validaremos matrícula\";\n textoNavegacion = \"VOLVER A LA PÁGINA PRINCIPAL\";\n ngOnInit(): void {\n this.route.paramMap.subscribe(params => {\n this.id = params['params'].id;\n if (this.id === \"agregar\") {\n this.textoTitulo = \"Validaremos matrícula.\";\n this.textoNavegacion = \"VOLVER AL PERFIL\";\n }\n this.lang = params['params'].lang;\n this.translate.use(this.lang);\n sessionStorage.setItem('language', this.lang);\n });\n\n if (this.id != \"agregar\") {\n this.apiService.confirmarUsuario(this.id)\n .subscribe(respuesta => {\n },\n error => {\n console.error(error);\n });\n }\n }\n\n navegar() {\n if (this.id === \"agregar\") {\n this.router.navigate(['/perfil-abogado']);\n } else {\n this.router.navigate(['']);\n }\n }\n\n}\n","\n
\n \n
\n
\n \n
\n \n
\n \n
{{ \"registroAbogado.ingresar\" | translate }}
\n

{{ \"registroAbogado.datos\" | translate }}

\n
\n\n \n {{ \"registroAbogado.nombre\" | translate }}\n \n \n \n {{ \"registroAbogado.apellido\" | translate }}\n \n \n\n \n {{ \"registroAbogado.correo\" | translate }}\n \n {{ \"registroAbogado.correoDescrip\" | translate }}\n \n \n {{ \"registroAbogado.contraseña\" | translate }}\n \n \n {{ hide ? \"visibility_off\" : \"visibility\" }}\n \n {{ \"registroAbogado.contraDescrip\" | translate }}\n \n\n \n {{ \"registroAbogado.repCon\" | translate }}\n \n \n {{ hide ? \"visibility_off\" : \"visibility\" }}\n \n {{\n \"registroAbogado.contraCoin\" | translate\n }}\n \n\n \n\n \n
\n \n {{ \"registroAbogado.tipoIdenti\" | translate }}\n \n {{ identificacion.nombre }}\n \n \n\n \n {{ nombreIdentificacion }}\n \n {{ \"registroAbogado.datosDesc\" | translate }}\n \n\n \n {{ \"registroAbogado.celular\" | translate }}\n \n \n\n
\n\n \n {{ \"registroAbogado.pais\" | translate }}\n \n {{ pais.name }}\n \n \n \n\n \n {{ \"registroAbogado.provincia\" | translate }}\n \n {{ provincia.nombre }}\n \n \n \n\n \n {{ \"registroAbogado.localidad\" | translate }}\n \n {{ localidad.nombre }}\n \n \n\n
\n
\n

{{ \"registroAbogado.datosPro\" | translate }}

\n {{ \"registroAbogado.datosDesc\" | translate }}\n
\n\n \n {{\n \"registroAbogado.jurisdiccion\" | translate\n }}\n \n {{ jurisdiccion.nombre }}\n \n \n {{\n \"registroAbogado.jurisdiccionDesc\" | translate\n }}\n \n \n\n \n \n {{\n \"registroAbogado.colegioDesc\" | translate\n }}\n \n \n {{ \"registroAbogado.tomo\" | translate }}\n \n {{\n \"registroAbogado.tomoDesc\" | translate\n }}\n \n \n {{ \"registroAbogado.folio\" | translate }}\n \n {{\n \"registroAbogado.folioDesc\" | translate\n }}\n \n\n \n {{ \"registroAbogado.matriculaAbogado\" | translate }}\n \n {{\n \"registroAbogado.mensajeOtro\" | translate\n }}\n \n\n \n {{\n \"registroAbogado.especialidad\" | translate\n }}\n \n {{ especialidad.nombre }}\n \n \n {{\n \"registroAbogado.especialidadDesc\" | translate\n }}\n \n\n\n \n\n \n\n \n\n \n {{ \"registroAbogado.continuar\" | translate }}\n \n \n
\n
\n\n","\n\n
\n \n
\n
\n \n \n \n
\n","import { Component, OnInit } from '@angular/core';\nimport {\n Validators,\n UntypedFormControl,\n UntypedFormGroup,\n} from '@angular/forms';\nimport { Location } from '@angular/common';\nimport {\n RegisterAbogado,\n Identificacion,\n Especialidad,\n Jurisdiccion,\n Localidad,\n} from '../../../../api/user';\nimport { ApiService } from '../../../../api/api.service';\nimport { MatSnackBar, \n MatSnackBarHorizontalPosition,\n MatSnackBarVerticalPosition, } from '@angular/material/snack-bar';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { environment } from 'src/environments/environment';\nimport { LoginService } from 'src/app/services/login.service';\nimport { RoleNumber } from '../../../../enums/role';\nimport { CheckPasswordService } from '../../../../services/register/checkPassword/check-password.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Pais } from 'src/app/api/pais';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Respuesta } from 'src/app/api/respuesta';\nimport { Certificacion } from 'src/app/api/certificacion';\nimport { MatriculaConfig } from 'src/app/api/matriculaConfig';\nimport { UtilService } from 'src/app/services/util.service';\nimport { RedesCredenciales } from 'src/app/interfaces/redes-credenciales';\n\ndeclare var gtag;\n@Component({\n selector: 'app-registro-abogado',\n templateUrl: './registro.component.html',\n styleUrls: ['./registro.component.css'],\n})\nexport class RegistroAbogadoComponent implements OnInit {\n\n horizontalPosition: MatSnackBarHorizontalPosition = 'center';\n verticalPosition: MatSnackBarVerticalPosition = 'top';\n\n coinciden = true;\n blur = false;\n language:String=\"\";\n imgSelected: String = \"\";\n showTomo:boolean=true;\n showFolio:boolean=true;\n showMatricula:boolean=false;\n matriculaConfig:MatriculaConfig;\n constructor(\n private apiService: ApiService,\n private _snackBar: MatSnackBar,\n private router: Router,\n private route: ActivatedRoute,\n private location: Location,\n private loginSrv: LoginService,\n private checkPasswordService: CheckPasswordService,\n private serviceUtil: UtilService,\n public translate: TranslateService,\n public dialog: MatDialog,\n ) {\n this.serviceUtil.doPreparePageTranslate(translate);\n if(this.language == \"es-AR\")\n this.imgSelected = \"../../../assets/españa.png\"\n if(this.language == \"it-IT\")\n this.imgSelected = \"../../../assets/italia.png\"\n if(this.language == \"en-US\")\n this.imgSelected = \"../../../assets/ingles.png\"\n }\n \n especialidades: Especialidad[];\n jurisdicciones: Jurisdiccion[];\n identificaciones: Identificacion[];\n registroRedes: boolean = false;\n cacheCountries: Pais[];\n localidades: Localidad[];\n provinciasResidencias: Jurisdiccion[];\n localidadesResidencias: Localidad[];\n nombreIdentificacion = 'Seleccione una del campo anterior';\n colegioValido = true;\n tomoValido = true;\n folioValido = true;\n\n newUser = new UntypedFormGroup({\n nombre: new UntypedFormControl(),\n apellido: new UntypedFormControl(),\n email: new UntypedFormControl(),\n dni: new UntypedFormControl(),\n tipoIdentificacion: new UntypedFormControl(),\n password: new UntypedFormControl('', [\n Validators.required,\n Validators.pattern(/^(?=.*[A-Z])(?=.*[0-9])(?=.{8,})/),\n ]),\n repeatPassword: new UntypedFormControl('', [Validators.required]),\n tomo: new UntypedFormControl('', [Validators.max(999), Validators.min(0)]),\n folio: new UntypedFormControl('', [Validators.max(9999), Validators.min(0)]),\n colegio: new UntypedFormControl('', [\n Validators.maxLength(255),\n ]),\n otro: new UntypedFormControl(),\n pais: new UntypedFormControl(),\n jurisdiccion: new UntypedFormControl(),\n localidad: new UntypedFormControl(),\n provinciaResidencia: new UntypedFormControl(),\n localidadResidencia: new UntypedFormControl('', [Validators.required]),\n especialidad: new UntypedFormControl(),\n telefono: new UntypedFormControl(),\n certification : new UntypedFormControl()\n });\n\n suscripcionPlataforma: string;\n suscripcionUuid: string;\n\n redes:string=\"\";\n ngOnInit(): void {\n this.registroRedes = false;\n this.route.paramMap.subscribe((params) => {\n let suscripcionUuid: string;\n const red = params['params'].tipo;\n this.redes = red;\n this.route.queryParams.subscribe((params) => {\n const code = params['code'];\n if (code) {\n this.registroRedes = true;\n this.loginSrv.getRedPerfil(code, 'A', red).subscribe((res) => {\n this.newUser.patchValue({\n nombre: res.nombre,\n apellido: res.apellido,\n email: res.mail,\n });\n this.newUser.controls['nombre'].disable();\n this.newUser.controls['apellido'].disable();\n this.newUser.controls['email'].disable();\n this.newUser.controls['password'].disable();\n this.newUser.controls['repeatPassword'].disable();\n });\n } else if (params?.plataforma) {\n if (params.plataforma == 'MercadoPago') { // https://legalify01.dwxdesign.com/registro-abogado?plataforma=MercadoPago&preapproval_id=8aef2d75867b449001868697ea6f086d\n if (params?.preapproval_id)\n suscripcionUuid = params.preapproval_id;\n else {\n this.openSnackBar(\"No se obtuvo el ID de la suscripcion, volviendo a la pagina anterior.\");\n setTimeout(() => {\n this.location.back();\n }, 5000);\n return;\n }\n } else {\n suscripcionUuid = params.suscripcionUuid;\n }\n this.loginSrv.getPlataformaPerfil(params.plataforma, suscripcionUuid).subscribe({\n next: (resp: RedesCredenciales) => {\n this.newUser.patchValue({\n nombre: resp.nombre,\n apellido: resp.apellido,\n email: resp.mail,\n });\n if (resp.countryId) {\n this.cacheCountries.some(pais => {\n if (pais.countryId == resp.countryId) {\n this.newUser.patchValue({ pais });\n return true;\n }\n return false;\n });\n this.cargarProvincias();\n console.log(`Seleccionando pais por defecto: ${resp.countryId}`);\n this.newUser.controls['pais'].disable();\n\n this.suscripcionPlataforma = params.plataforma;\n this.suscripcionUuid = suscripcionUuid;\n }\n }\n })\n }\n });\n });\n this.trackRegister();\n this.apiService.getEspecialidades(RoleNumber.Abogado).subscribe(\n (especialidades) => {\n this.especialidades = especialidades;\n },\n (error) => {\n console.error(error);\n }\n );\n\n this.apiService.getJurisdicciones().subscribe(\n (respuesta) => {\n this.jurisdicciones = respuesta;\n this.provinciasResidencias = respuesta;\n },\n (error) => {\n console.error(error);\n }\n );\n\n this.apiService.getPaisesClean().subscribe({\n next: (resp: Pais[]) => {\n this.cacheCountries = resp;\n this.jurisdicciones = this.provinciasResidencias = [];\n\n resp.some((pais: Pais) => {\n pais.name = pais.name ?? \"\";\n if (pais.name.toUpperCase().startsWith(\"ARGENT\")) {\n this.newUser.controls['pais'].setValue(pais);\n this.cargarProvincias();\n return true;\n }\n return false;\n });\n },\n error: (err: any) => {\n console.error(err);\n }\n });\n\n this.getIdentificaciones();\n }\n\n keyPressAlphanumeric(event:any){\n // pattern of alphanumeric characters with maximum length of 9\n const pattern = /^[a-zA-Z0-9]{0,9}$/;\n let inputChar = String.fromCharCode(event.charCode);\n if (!pattern.test(inputChar)) {\n event.preventDefault();\n } \n }\n\n switchLang(lang: string) {\n console.log(lang)\n this.translate.use(lang);\n this.language = lang;\n sessionStorage.setItem('language', lang);\n sessionStorage.language = lang;\n if(lang == \"es-AR\")\n this.imgSelected = \"../../../assets/españa.png\"\n if(lang == \"it-IT\")\n this.imgSelected = \"../../../assets/italia.png\"\n if(lang == \"en-US\")\n this.imgSelected = \"../../../assets/ingles.png\"\n }\n\n verificarPassSalir() {\n this.blur = true;\n this.verificarPass();\n }\n\n verificarPass() {\n this.coinciden = this.checkPasswordService.checkPass(\n this.blur,\n this.newUser.value.password,\n this.newUser.value.repeatPassword\n );\n }\n\n trackRegister(){\n gtag('event', 'registro_abog_visita', {\n 'send_to':environment.measurement_id,\n 'event_name': 'registro_abog_visita'\n });\n }\n\n onSubmit() {\n if (this.newUser.value.password != this.newUser.value.repeatPassword) {\n this.openSnackBar(this.translate.instant(\"password.diferentes\"));\n } else {\n this.guardarAbogado();\n }\n }\n hide = true;\n\n getIdentificaciones() {\n this.apiService.getIdentificacion().subscribe(\n (identificaciones) => {\n this.identificaciones = identificaciones;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n certificar(){\n\n\n let respuestas:Respuesta[] =[];\n\n let dto= new Certificacion(this.newUser.value.email,\"Certificacion\",\"\",respuestas);\n this.apiService.certification(dto).subscribe(preg => {\n \n this.openSnackBar('Registro exitoso, revise su correo para la firma del manifiesto');\n localStorage.setItem('redSocial', this.registroRedes.toString());\n this.router.navigate(['/exito-abogado']);\n },\n error => {\n console.error(error);\n this.openSnackBar(\"Estamos trabajando para mejorar el servicio, por favor intente nuevamente más tarde\");\n });\n\n\n\n }\n\n guardarAbogado() {\n\n const rawValue = this.newUser.getRawValue();\n const { nombre, apellido, email } = rawValue;\n const countryId = rawValue.pais.countryId;\n let lenguage=sessionStorage.getItem('language');\n let lchar=\"\";\n if(lenguage == \"es-AR\")\n lchar=\"P\";\n if(lenguage == \"it-IT\")\n lchar=\"T\";\n if(lenguage == \"en-US\")\n lchar=\"N\";\n this.apiService\n .registrarAbogado({\n apellido,\n clave: this.newUser.value.password,\n datosProfesionales: [\n {\n colegio: this.newUser.value.colegio.toUpperCase(),\n especialidadesIds: [\n this.newUser.value.especialidad.id_especialidad,\n ],\n folio: this.newUser.value.folio,\n otro: this.newUser.value.otro,\n localidadId: this.localidades[0].id_localidad,\n numeroDni: this.newUser.value.dni,\n tipoDni:\n this.newUser.value.tipoIdentificacion.id_tipos_identificacion,\n tomo: this.newUser.value.tomo,\n telefono: this.newUser.value.telefono.toString(),\n },\n ],\n mail: email,\n lenguaje:lchar,\n localidadId: this.newUser.value.localidadResidencia.id_localidad,\n nombre,\n pais: countryId,\n redesSociales: this.registroRedes,\n rol: 2,\n mailConfirmUrl: '/validada-abogado',\n suscripcionPlataforma: this.suscripcionPlataforma,\n suscripcionUuid: this.suscripcionUuid\n } as RegisterAbogado)\n .subscribe(\n (res) => {\n if (sessionStorage[\"companyId\"]) {\n this.loginSrv.doUpdateUsuarioCompany(res.id_usuario, sessionStorage[\"companyId\"]).subscribe({\n next: () => {\n sessionStorage.removeItem(\"companyId\");\n }\n });\n }\n\n if(this.registroRedes==true){\n if(this.redes==\"L\"){\n gtag('event', 'registro_abog_exitoso_linkedin', {\n 'send_to':environment.measurement_id,\n 'method':'registro_abog_exitoso_linkedin'\n });\n }\n else if(this.redes==\"G\"){\n gtag('event', 'registro_abog_exitoso_gmail', {\n 'send_to':environment.measurement_id,\n 'method':'registro_abog_exitoso_gmail'\n });\n\n }\n else if(this.redes==\"F\"){\n gtag('event', 'registro_abog_exitoso_facebook', {\n 'send_to':environment.measurement_id,\n 'method':'registro_abog_exitoso_facebook'\n });\n }\n \n }\n else{\n gtag('event', 'registro_abog_exitoso_mail', {\n 'send_to':environment.measurement_id,\n 'method':'registro_abog_exitoso_mail'\n });\n }\n\n \n\n if(this.newUser.value.certification=='true' || this.newUser.value.certification==true ){\n this.certificar();\n }\n else{\n this.openSnackBar('Registro exitoso');\n localStorage.setItem('redSocial', this.registroRedes.toString());\n this.router.navigate(['/exito-abogado']);\n }\n\n \n },\n (error) => {\n if (error.status === 409) {\n this.openSnackBar(\n this.translate.instant(\"email.registered\")\n );\n } else {\n this.openSnackBar('Error');\n }\n }\n );\n }\n\n cargarLocalidades() {\n this.apiService\n .getLocalidades(this.newUser.value.jurisdiccion.id_jurisdiccion)\n .subscribe(\n (localidad) => {\n this.localidades = localidad;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n cargarProvincias(): void {\n this.jurisdicciones = this.provinciasResidencias = [];\n this.localidadesResidencias = [];\n let paraguay=0;\n this.cacheCountries.some((pais: Pais) => {\n pais.name = pais.name ?? \"\";\n if(pais.countryId==this.newUser.value.pais.countryId){\n if (pais.name.toUpperCase().startsWith(\"PARA\")) {\n paraguay=1;\n }\n }\n });\n if(paraguay==1){\n this.showFolio=false;\n this.showTomo=false;\n this.newUser.get('tomo').clearValidators();\n this.newUser.get('folio').clearValidators();\n this.newUser.get('tomo').updateValueAndValidity();\n this.newUser.get('folio').updateValueAndValidity();\n this.showMatricula=true;\n this.apiService.getMatriculaConfig(this.newUser.value.pais.countryId).subscribe({\n next: (resp: MatriculaConfig) => {\n this.matriculaConfig=resp;\n if(paraguay==1){\n if(this.matriculaConfig.visible==true){\n if(this.matriculaConfig.solicitarCampo){\n this.newUser.get('otro').setValidators([Validators.required, \n Validators.maxLength(this.matriculaConfig.tamanio)]);\n }\n else{\n this.newUser.get('otro').setValidators([\n Validators.minLength(this.matriculaConfig.tamanio),Validators.maxLength(this.matriculaConfig.tamanio)]);\n }\n }\n else{\n this.newUser.get('otro').clearValidators();\n this.showMatricula=false;\n }\n this.newUser.get('otro').updateValueAndValidity();\n }\n }\n });\n }\n else{\n this.showFolio=true;\n this.showTomo=true;\n this.showMatricula=false;\n this.newUser.get('otro').clearValidators();\n this.newUser.get('otro').updateValueAndValidity();\n }\n \n this.apiService.getEspecialidadesByPais(RoleNumber.Abogado, this.newUser.value.pais.countryId).subscribe({\n next: (resp: Especialidad[]) => {\n this.especialidades = resp;\n },\n error: err => {\n console.log(err);\n }\n });\n this.apiService.getJurisdiccionPaisesBy(this.newUser.value.pais.countryId).subscribe({\n next: (resp: Jurisdiccion[]) => {\n this.jurisdicciones = this.provinciasResidencias = resp;\n this.localidadesResidencias = [];\n }\n });\n }\n\n cargarLocalidadesResidencia() {\n this.apiService\n .getLocalidades(this.newUser.value.provinciaResidencia.id_jurisdiccion)\n .subscribe(\n (localidad) => {\n this.localidadesResidencias = localidad;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', {\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n });\n }\n\n onKey(event) {\n event.target.value = event.target.value.toUpperCase();\n }\n\n onKeyUp(event) {\n if (!this.newUser.value.colegio.match(/^[a-zA-ZñÑáéíóúÁÉÍÓÚ.\\s]+$/)) {\n this.colegioValido = false;\n } else {\n this.colegioValido = true;\n }\n }\n\n onKeyUpFolio(event) {\n let aux = event.target.value;\n if (aux > 9999) {\n this.folioValido = false;\n } else {\n this.folioValido = true;\n }\n }\n\n onKeyUpTomo(event) {\n let aux = event.target.value;\n if (aux > 999) {\n this.tomoValido = false;\n } else {\n this.tomoValido = true;\n }\n }\n\n definirIdentificacion() {\n this.nombreIdentificacion = this.newUser.value.tipoIdentificacion.nombre;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { CreacionExitosaAbogadoComponent} from '../creacion-exitosa-abogado/creacion-exitosa-abogado.component';\nimport { CuentaValidadaAbogadoComponent } from '../cuenta-validada-abogado/cuenta-validada-abogado.component';\nimport { RegistroAbogadoComponent } from '../registro/registro.component';\n\nconst routes: Routes = [\n {\n path: 'exito-abogado',\n component: CreacionExitosaAbogadoComponent,\n },\n {\n path: 'validada-abogado/:id/:lang',\n component: CuentaValidadaAbogadoComponent\n },\n {\n path: 'registro-abogado',\n component: RegistroAbogadoComponent,\n },\n {\n path: 'registro-abogado/:tipo',\n component: RegistroAbogadoComponent,\n }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AbogadoRegistroRoutingModule { }","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from '../../../../modules/material.module';\n\nimport { AbogadoRegistroRoutingModule } from './abogadoRegistro-routing.module';\n\nimport { RegistroAbogadoComponent } from '../registro/registro.component';\nimport { CreacionExitosaAbogadoComponent } from '../creacion-exitosa-abogado/creacion-exitosa-abogado.component';\n// import { CuentaValidadaAbogadoComponent } from '../cuenta-validada-abogado/cuenta-validada-abogado.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatTooltipModule } from '@angular/material/tooltip';\n\n@NgModule({\n declarations: [\n RegistroAbogadoComponent,\n CreacionExitosaAbogadoComponent,\n \n // CuentaValidadaAbogadoComponent\n ],\n imports: [\n BrowserModule,\n MaterialModule,\n ReactiveFormsModule,\n AbogadoRegistroRoutingModule,\n TranslateModule,\n MatTooltipModule,\n FormsModule\n ],\n providers: [],\n bootstrap: []\n})\nexport class AbogadoRegistroModule { }\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class StorageService {\n\n constructor() { }\n\n getItem(variable:string){\n return localStorage.getItem(variable);\n }\n\n addItem(name:string, value:string){\n var exist = localStorage.getItem(name);\n const delimiter = \";\";\n if(exist!=null){\n var items : Array = [];\n exist.split(delimiter).forEach(function(item){\n items.push(item);\n });\n\n var duplicate = items.find(x=> x==value);\n if(duplicate==null){\n items.push(value);\n }\n localStorage.setItem(name,items.join(delimiter));\n }\n else{\n var items : Array = [];\n items.push(value);\n localStorage.setItem(name, items.join(delimiter));\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { DatePipe } from '@angular/common';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FormatDateService {\n\n constructor(private datePipe : DatePipe) { }\n\n converDateToUTC(timestamp: number) {\n var dateLocal = new Date(timestamp);\n var dateUTC = new Date(dateLocal.getUTCFullYear(), dateLocal.getUTCMonth(), dateLocal.getUTCDate(), (dateLocal.getUTCHours()-3), dateLocal.getUTCMinutes()).getTime();\n return dateUTC;\n }\n\n convertDateToUTCByAttribute(element: any[], attribute: string) {\n element.forEach(function (item) {\n item[attribute] = this.converDateToUTC(item[attribute]);\n }, this);\n return element;\n }\n\n converDateToLocal(timestamp: number) {\n var dateLocal = new Date(timestamp);\n dateLocal.setHours(24);\n var dateLocalConverted = new Date(dateLocal.getFullYear(), dateLocal.getMonth(), dateLocal.getDate()).getTime();\n return dateLocalConverted;\n }\n\n convertDateToLocalByAttribute(element: any[], attribute: string) {\n element.forEach(function (item) {\n item[attribute] = this.converDateToLocal(item[attribute]);\n }, this);\n return element;\n }\n\n convertDateToFormatSpecifc(format : string, date: Date, country : string)\n {\n return this.datePipe.transform(date, format, country);\n }\n}\n","\n\n
\n \n
\n
\n\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-dialogo-previsualizar',\n templateUrl: './dialogo-previsualizar.component.html',\n styleUrls: ['./dialogo-previsualizar.component.css']\n})\nexport class DialogoPrevisualizarComponent implements OnInit {\n\n fileData;\n fileMime: string;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) data: any,\n private sanitizer: DomSanitizer,\n public dialogRef: MatDialogRef\n ) {\n //this.fileData = this.sanitizer.bypassSecurityTrustResourceUrl(data['url']);\n this.fileData = this.sanitizer.bypassSecurityTrustResourceUrl(data['data']);\n this.fileMime = data['mime'];\n }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
\n description\n
\n
\n\n

{{archivo.nombreoriginal}}

\n \n

{{archivo.nombre}}

\n
\n \n

{{archivo.name}}

\n
\n \n
\n
\n
\n
\n
\n
","import { Component, OnInit, Input } from '@angular/core';\nimport { Archivo } from '../../api/user';\nimport { ApiService } from '../../api/api.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogoPrevisualizarComponent } from '../commons/dialogo/dialogo-previsualizar/dialogo-previsualizar.component';\nimport { environment } from 'src/environments/environment';\n\n@Component({\n selector: 'app-archivos',\n templateUrl: './archivos.component.html',\n styleUrls: ['./archivos.component.css']\n})\nexport class ArchivosComponent implements OnInit {\n\n @Input('archivos') archivos: FileList;\n @Input('casoId') casoId: number;\n @Input('isDownloadable') isDownloadable: boolean;\n archivo: Archivo;\n constructor(private apiService: ApiService,\n public dialog: MatDialog) { }\n\n ngOnInit(): void {\n }\n\n descargarArchivo(archivoLocal) { \n let extensions = [\".pdf\", \".jpg\", \".jpeg\", \".png\", \".svg\"];\n let isPreview = extensions.some(ext => archivoLocal.tipo == ext);\n\n this.apiService.downloadDoc(archivoLocal.id_adjunto_caso, this.casoId)\n .subscribe(archivo => {\n if (isPreview) {\n let reader = new FileReader();\n\n reader.onloadend = () => {\n this.dialog.open(DialogoPrevisualizarComponent, {\n data: {\n data: reader.result,\n mime: this.getMimeType(archivoLocal.tipo)\n },\n width: '80vw',\n height: '90vh'\n });\n };\n reader.readAsDataURL(archivo);\n } else {\n let dataType = archivo.type;\n let binaryData = [];\n binaryData.push(archivo);\n let downloadLink = document.createElement('a');\n downloadLink.href = window.URL.createObjectURL(new Blob(binaryData, { type: dataType }));\n downloadLink.setAttribute('download', archivoLocal.nombre);\n document.body.appendChild(downloadLink);\n downloadLink.click();\n this.archivo = archivo;\n }\n }, error => {\n console.error(error);\n });\n }\n\n getMimeType(extension: string): string {\n if (extension == \".pdf\")\n return \"application/pdf\";\n else if (extension == \".jpg\")\n return \"image/jpg\";\n else if (extension == \".png\" || extension == \".png\")\n return \"image/png\";\n else if (extension == \".svg\")\n return \"image/svg+xml\";\n else\n return \"application/octet-stream\";\n }\n\n}\n","
\n
\n \n \n
\n
\n

{{ \"barraAbo.oportunidades\" | translate }}

\n
\n
\n
\n
\n

{{ \"oportunidades.no\" | translate }}

\n

\n {{ \"oportunidades.visualizar\" | translate }}\n

\n
\n
\n

{{ \"oportunidades.no\" | translate }}

\n

\n {{ \"oportunidades.visualizar\" | translate }}\n

\n
\n
\n\n
\n

{{ \"oportunidades.disponible\" | translate }}

\n
\n\n
\n\n
\n
\n error_outlined\n

No tienes un plan contratado

\n

\n Contrata un plan para poder utilizar los
\n servicios disponibles\n

\n
\n
\n\n
\n \n Paginas  \n\n
\n
\n \n \n
\n

{{ caso1.fechaCreacion | date: \"dd/MM/yyy\" }}

\n
\n
\n \n


\n {{\n caso1.titulo\n }}\n {{ caso1.categoria.titulo }}\n
\n
\n

{{ \"oportunidades.jurisdiccion\" | translate }}

\n \n place{{ caso1.localidad.jurisdiccion.nombre }}\n \n
\n {{ caso1.localidad.nombre }}\n
\n
\n
\n

{{ \"oportunidades.descripcion\" | translate }}

\n {{ caso1.descripcion }}\n
\n
\n
\n

{{ \"oportunidades.adjuntar\" | translate }}

\n {{\n \"oportunidades.viArchivos\" | translate\n }}\n \n
\n
\n \n
\n
\n
\n
\n \n close\n \n \n done\n \n
\n\n
\n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { ApiService } from '../../../../api/api.service';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { CasoDetallado, ListaArchivos } from '../../../../api/user';\nimport { StorageService } from 'src/app/utils/storage/storage.service';\nimport { FormatDateService } from 'src/app/utils/formatDate/formatDate.service.';\nimport { ActivatedRoute } from '@angular/router';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { TranslateService } from '@ngx-translate/core';\nimport { StatusIncrease } from 'src/app/api/planes';\nimport { PlanService } from 'src/app/services/plan/plan.service';\nimport { Suscripcion } from 'src/app/components/admin/multipago/modules/multipago.model';\nimport { PlanMultipagoService } from 'src/app/services/plan/plan-multipago.service';\n\n@Component({\n selector: 'app-oportunidades',\n templateUrl: './oportunidades.component.html',\n styleUrls: ['./oportunidades.component.css'],\n})\nexport class OportunidadesComponent implements OnInit {\n constructor(\n private planService: PlanService,\n private apiService: ApiService,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n private storageService: StorageService,\n private servicePlanMP: PlanMultipagoService,\n private formatDateService: FormatDateService,\n private route: ActivatedRoute,\n private snackBar: MatSnackBar,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n this.matIconRegistry.addSvgIcon(\n `rechazar`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../assets/rechazar.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `aceptar`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../assets/aceptar.svg'\n )\n );\n }\n idOportunidadLinkeada: number;\n hayCaso: boolean = true;\n contadorCasos = 0;\n pagina = 0;\n CANTIDAD_CASOS_PARA_PEDIR = 1000;\n today: number;\n caso: CasoDetallado;\n casosDetallados: CasoDetallado[];\n showingCasos: CasoDetallado[]=[];\n listaArchivos: ListaArchivos[];\n casoNoDisponible: boolean;\n accionesHabilitadas: boolean = true;\n pages:number[]=[];\n actualpage:number=1;\n itemsperpage=3;\n\n suscripcionSel: Suscripcion;\n planStatus: boolean = false;\n\n ngOnInit(): void {\n this.route.queryParams.subscribe((params) => {\n this.idOportunidadLinkeada = params.id;\n if (this.idOportunidadLinkeada) {\n console.log(\"OPORTUNIDAD LINKEADA \")\n this.apiService.getCasoById(this.idOportunidadLinkeada).subscribe(\n (res) => {\n this.caso = res;\n this.hayCaso = true;\n },\n (error) => {\n console.error('error', error);\n if (error.status == 409) {\n this.casoNoDisponible = true;\n }\n }\n );\n } else {\n console.log(\"OPORTUNIDAD LINKEADA no \")\n this.pidoCasos(this.pagina);\n }\n });\n\n this.servicePlanMP.getSubscripcionLast().subscribe({\n next: (suscripcion: Suscripcion) => {\n this.suscripcionSel = suscripcion;\n this.planStatus = this.servicePlanMP.isSuscriptionActive(suscripcion);\n }\n });\n /*this.planService.getClientStatus().subscribe( res => {\n if(res.mensaje == \"OK\"){\n let plan: StatusIncrease[\"suscripcion\"] = res.suscripcion;\n this.planStatus = plan && (plan.status !== 'canceled' && plan.status !== 'pending')\n }\n });*/\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n aceptarCaso() {\n if (this.accionesHabilitadas) {\n this.accionesHabilitadas = false;\n this.apiService.aceptarCaso(this.caso.id_caso).subscribe(\n (respuesta) => {\n this.recargarLista();\n this.snackBar.open(\n 'El caso fue enviado a la sección “Mis casos” para que un cliente pueda seleccionarte',\n '',\n { duration: 5000 }\n );\n },\n (error) => {\n if (error.status == 409) {\n this.snackBar.open(\n 'Se alcanzó el numero maximo de abogados interesados en este caso.',\n '',\n { duration: 5000 }\n );\n this.rechazarCaso();\n }\n }\n );\n }\n }\n\n aceptarCaso1(caso) {\n if (this.accionesHabilitadas) {\n this.accionesHabilitadas = false;\n this.apiService.aceptarCaso(caso.id_caso).subscribe(\n (respuesta) => {\n this.recargarLista();\n this.snackBar.open(\n 'El caso fue enviado a la sección “Mis casos” para que un cliente pueda seleccionarte',\n '',\n { duration: 5000 }\n );\n },\n (error) => {\n if (error.status == 409) {\n this.snackBar.open(\n 'Se alcanzó el numero maximo de abogados interesados en este caso.',\n '',\n { duration: 5000 }\n );\n this.rechazarCaso();\n }\n }\n );\n }\n }\n\n rechazarCaso() {\n this.accionesHabilitadas = false;\n this.storageService.addItem('Casos', this.caso.id_caso.toString());\n this.recargarLista();\n }\n\n rechazarCaso1(caso) {\n this.accionesHabilitadas = false;\n this.storageService.addItem('Casos', caso.id_caso.toString());\n this.recargarLista();\n }\n\n pidoListaArchivos() {\n this.apiService.getFiles(this.caso.id_caso).subscribe(\n (lista) => {\n this.listaArchivos = lista;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n pidoCasos(desde: number) {\n this.accionesHabilitadas = false;\n this.casoNoDisponible = false;\n this.apiService\n .getOportunidades(desde, this.CANTIDAD_CASOS_PARA_PEDIR)\n .subscribe(\n (casos) => {\n const delimiter = ';';\n var oportunities = this.storageService.getItem('Casos');\n if (oportunities != null) {\n var lstOportunity = oportunities.split(delimiter);\n var casesWithFilter = casos.filter(\n (x) =>\n lstOportunity.find((y) => y == x.id_caso.toString()) == null\n );\n\n casos.forEach(function (cas,index) {\n lstOportunity.forEach(function (value) {\n if(cas.id_caso.toString()==value){\n \n casos[index].isrejected=true;\n }\n }); \n }); \n\n \n // this.casosDetallados = this.formatDateService.convertDateToUTCByAttribute(casesWithFilter, \"fechaCreacion\");\n // this.casosDetallados = casesWithFilter;\n } else {\n // this.casosDetallados = casos;\n }\n\n\n this.casosDetallados = casos;//Cambio 24/02\n this.showingCasos = [];\n\n if(this.casosDetallados.length>this.itemsperpage){\n for(var j=this.actualpage;j {\n console.error(error);\n }\n );\n }\n\n recargarLista() {\n this.contadorCasos++;\n const casoSiguienteExiste =\n this.casosDetallados && this.casosDetallados[this.contadorCasos];\n this.caso = casoSiguienteExiste\n ? this.casosDetallados[this.contadorCasos]\n : this.caso;\n this.accionesHabilitadas = true;\n if (!casoSiguienteExiste) {\n this.accionesHabilitadas = false;\n this.pagina++;\n this.contadorCasos = 0;\n this.pidoCasos(this.pagina);\n }\n }\n\n gotoPage(page:number){\n\n this.actualpage=page-1;\n this.showingCasos = [];\n for(var j=this.actualpage;j\n
\n \n \n \n {{ \"previa.agendar\" | translate }}\n \n\n
\n \n \n

\n Abogados disponibles para
\n atender tu caso\n

\n

{{ \"previa.abogados\" | translate }}

\n
\n \n
\n\n
\n \n
\n
\n
\n \n \n
\n
\n
\n \n arrow_back\n \n

{{ posicion + 1 }}/{{ abogados.length }}

\n \n arrow_forward\n \n
\n \n

\n {{ \"previa.no\" | translate }}\n

\n
\n
\n\n \n
\n
\n \n
\n \n \n
\n
\n \n

{{ \"previa.no\" | translate }}

\n
\n
\n
\n \n \n
\n\n","import { Component, OnInit, Input } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { Location } from '@angular/common';\nimport { environment } from '../../../../../environments/environment';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-previa',\n templateUrl: './previa.component.html',\n styleUrls: ['./previa.component.css'],\n})\nexport class PreviaComponent implements OnInit {\n titulo = '';\n abogados: any[];\n abogado: any;\n servicio: '';\n id_caso: 0;\n caso: any;\n posicion: number;\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private _location: Location,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n this.id_caso = this.router.getCurrentNavigation().extras.state.id_caso;\n this.titulo = this.router.getCurrentNavigation().extras.state.titulo;\n this.abogados = this.router.getCurrentNavigation().extras.state.abogados;\n this.servicio = this.router.getCurrentNavigation().extras.state.servicio;\n this.caso = this.router.getCurrentNavigation().extras.state.caso;\n if (this.abogados && this.abogados.length) {\n this.abogados = this.abogados.map((a) => {\n return {\n ...a,\n mostrando: false,\n avatarUrl: environment.apiUrl + a.avatarUrl,\n };\n });\n this.abogados[0].mostrando = true;\n this.abogado = this.abogados[0];\n }\n }\n\n ngOnInit(): void {\n this.posicion = 0;\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n navegar() {\n this._location.back();\n }\n\n atras() {\n window.history.back();\n }\n\n cambiar(destino: number) {\n const indexActual = this.abogados.findIndex((a) => a.mostrando);\n const indexFinal = this.abogados.length - 1;\n const avanzando = destino == 2;\n if (indexActual == indexFinal && avanzando) {\n return;\n }\n if (indexActual == 0 && !avanzando) {\n return;\n }\n this.posicion = avanzando ? indexActual + 1 : indexActual - 1;\n this.abogados[indexActual].mostrando = false;\n this.abogados[this.posicion].mostrando = true;\n this.abogado = this.abogados[this.posicion];\n }\n\n isMobileDevice() {\n let check = false;\n ((a) => {\n if (\n /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?iPad|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(\n a\n ) ||\n /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(\n a.substr(0, 4)\n )\n )\n check = true;\n })(navigator.userAgent || navigator.vendor);\n return check;\n }\n}\n","export enum TiposCasoCode {\n LLAMADA = 'L',\n AGENDA = 'A',\n EMAIL = 'E'\n}","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FilesService {\n\n constructor() { }\n\n fromFileToBase64(file: File) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = error => reject(error);\n });\n }\n\n fromBase64ToFile(file: string, fileName: string) {\n const type = this.getTypeFromBase64(file);\n const toReplace = `data:${type};base64,`;\n const test = file.replace(toReplace, '');\n const byteString = atob(test);\n const arrayBuffer = new ArrayBuffer(byteString.length);\n const int8Array = new Uint8Array(arrayBuffer);\n for (let i = 0; i < byteString.length; i++) {\n int8Array[i] = byteString.charCodeAt(i);\n }\n const blob = new Blob([int8Array], { type: type });\n const imageFile = new File([blob], fileName, { type: type });\n return imageFile;\n }\n\n getTypeFromBase64(file: string) {\n return file.match(/[^:]\\w+\\/[\\w-+\\d.]+(?=;|,)/)[0];\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { DatePipe } from '@angular/common';\nimport { ApiService } from '../../api/api.service';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CurrentTimeService {\n\n constructor(\n private apiService: ApiService\n ) { }\n\n public getTimezoneMinutes() {\n return new Date().getTimezoneOffset();\n }\n\n public getTimeStamp() {\n return Date.now();\n }\n\n public getTimezoneHours() {\n let aux = (-1)*this.getTimezoneMinutes()/60\n return \"GMT\"+aux;\n }\n}\n","
\n","import { Component, OnInit } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { ApiService } from '../../../../api/api.service';\nimport { Perfil } from '../../../../api/user';\nimport { environment } from '../../../../../environments/environment';\nimport { Puntuacion } from 'src/app/interfaces/Puntuacion';\nimport { TiposCasoCode } from 'src/app/enums/TiposCasoCode';\nimport { PuntuacionesService } from '../../../../services/puntuaciones.service';\nimport { FilesService } from '../../../../utils/files.service';\nimport { EspecialidadDelCasoService } from '../../../../services/especialidad/especialidad-del-caso.service';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { CurrentTimeService } from '../../../../utils/currentTime/current-time.service';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-datos',\n templateUrl: './datos.component.html',\n styleUrls: ['./datos.component.css'],\n})\nexport class DatosComponent implements OnInit {\n perfil: Perfil;\n nombre: string;\n apellido: string;\n bio: string;\n mail: string;\n localidad: string;\n jurisdiccion: string;\n colegio: string;\n especialidades: [\n {\n id_especialidad: number;\n nombre: string;\n }\n ];\n folio: string;\n numeroDni: string;\n tomo: string;\n pais: string;\n telefono: string;\n\n titulo: string;\n url = '';\n caso: any;\n nombreEspecialidad: string;\n tieneFoto = false;\n avatarUrl = '';\n\n abogado: any;\n seleccion = {\n nombre: '',\n apellido: '',\n estado: 's',\n titulo: '',\n id_caso: 0,\n caso: '',\n id_usuario: 0,\n abogado: '',\n archivosSeleccionados: '',\n };\n mostrarTelefono = false;\n mostrarCorreo = false;\n mostrarDatos = false;\n mostrarVolver = false;\n mostrarExplicacionLlamada = false;\n seleccionAbogado = false;\n\n especialidadParaMostrar = '';\n mostrar = false;\n opiniones: Array = [];\n\n countryId = 54;\n rolId = 3;\n\n constructor(\n private puntuacionesService: PuntuacionesService,\n private router: Router,\n private route: ActivatedRoute,\n private apiService: ApiService,\n private _location: Location,\n private fileSrv: FilesService,\n private especialidadService: EspecialidadDelCasoService,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n private currentTimeSrv: CurrentTimeService,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n this.matIconRegistry.addSvgIcon(\n `perfil`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../assets/perfil.svg'\n )\n );\n\n this.url =\n this.router.getCurrentNavigation().extractedUrl.root.children.primary.segments[0].path;\n\n if (this.url === 'seleccion') {\n if (this.router.getCurrentNavigation().extras.state.caso != undefined) {\n this.seleccion.archivosSeleccionados =\n this.router.getCurrentNavigation().extras.state.caso.archivosSeleccionados;\n }\n this.titulo = this.router.getCurrentNavigation().extras.state.titulo;\n switch (this.titulo) {\n case 'Llamada express':\n this.mostrarCorreo = false;\n this.mostrarExplicacionLlamada = true;\n this.mostrarDatos = true;\n break;\n case 'Detalle del caso':\n this.mostrarCorreo = true;\n this.mostrarDatos = true;\n break;\n case 'Agendar cita':\n this.mostrarCorreo = false;\n this.mostrarDatos = false;\n break;\n default:\n break;\n }\n this.caso = this.router.getCurrentNavigation().extras.state.caso;\n this.abogado = this.router.getCurrentNavigation().extras.state.abogado;\n\n if (\n this.caso &&\n this.caso.especialidad &&\n this.caso.especialidad.nombre\n ) {\n this.especialidadParaMostrar = this.especialidadService.match(\n this.caso.especialidad.nombre,\n this.abogado\n );\n if (this.especialidadParaMostrar.length > 2) {\n this.mostrar = true;\n }\n }\n\n this.seleccion.abogado = this.abogado;\n this.mail = this.abogado.mail;\n this.apiService.getPais(this.abogado.pais)\n .subscribe(pais =>{\n console.log(pais);\n this.pais = pais.name;\n })\n this.tieneFoto =\n this.router.getCurrentNavigation().extras.state.tieneFoto;\n this.seleccion.id_usuario = this.abogado.id_usuario;\n\n this.seleccionAbogado = true;\n this.seleccion.id_caso =\n this.router.getCurrentNavigation().extras.state.id_caso;\n this.nombre =\n this.router.getCurrentNavigation().extras.state.abogado.nombre;\n this.apellido =\n this.router.getCurrentNavigation().extras.state.abogado.apellido;\n this.nombreEspecialidad =\n this.router.getCurrentNavigation().extras.state.abogado.datosProfesionales[0].especialidadesAbogados[0].nombre;\n }\n\n if (this.url === 'llamada') {\n this.abogado = JSON.parse(localStorage.getItem('abogado'));\n this.nombre = this.abogado.nombre;\n this.apellido = this.abogado.apellido;\n this.nombreEspecialidad =\n this.abogado.datosProfesionales[0].especialidadesAbogados[0].nombre;\n this.titulo = 'Llamada express';\n this.mostrarDatos = true;\n this.mostrarCorreo = false;\n this.telefono = this.abogado.datosProfesionales[0].telefono;\n this.mostrarTelefono = true;\n this.mostrarVolver = true;\n this.seleccionAbogado = false;\n this.crearCaso();\n }\n }\n\n ngOnInit(): void {\n if (this.url === 'llamada') {\n this.abogado = JSON.parse(localStorage.getItem('abogado'));\n this.seleccion.abogado = this.abogado;\n this.caso = JSON.parse(localStorage.getItem('caso'));\n }\n this.getOpiniones();\n\n let aux: string;\n aux = this.abogado.avatarUrl.toString();\n let contiene = aux.includes(environment.apiUrl);\n if (\n this.abogado &&\n this.abogado.avatarUrl &&\n !this.abogado.avatarUrl.includes(null)\n ) {\n this.tieneFoto = true;\n this.avatarUrl = this.abogado.avatarUrl;\n } else {\n this.tieneFoto = false;\n }\n\n let userData = JSON.parse(localStorage.user);\n this.countryId = userData.pais;\n this.rolId = userData.rol?.id;\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n llamar(telefono) {\n window.open(`tel:${telefono}`);\n }\n\n atras() {\n window.history.back();\n }\n\n private getOpiniones() {\n this.apiService.getPuntuacion(this.abogado.id_usuario).subscribe((res) => {\n this.opiniones = res;\n this.puntuacionesService.crearEstrellasMapeando(this.opiniones);\n });\n }\n\n aceptarAbogado() {\n this.apiService\n .aceptarAbogado(this.abogado.id_usuario, this.seleccion.id_caso)\n .subscribe(\n (respuesta) => {},\n (error) => {\n console.error(error);\n }\n );\n }\n\n crearCaso() {\n this.abogado = JSON.parse(localStorage.getItem('abogado'));\n this.caso = JSON.parse(localStorage.getItem('caso'));\n let archivos = JSON.parse(localStorage.getItem('archivos'));\n let timeStamp = this.currentTimeSrv.getTimeStamp();\n let timeZone = '';\n // if (archivos) {\n // for (let a of archivos) {\n // const { file, name } = a;\n // const archivoFinal = this.fileSrv.fromBase64ToFile(file, name);\n // this.caso.archivosSeleccionados.push(archivoFinal);\n // }\n // }\n this.caso.archivosSeleccionados = archivos;\n this.caso.profesionalAsignadoId = this.abogado.id_usuario;\n this.apiService.getCountry().subscribe(\n (res) => {\n timeZone = res.countryCode;\n this.postCaso(timeStamp, timeZone);\n },\n (error) => {\n console.error(error);\n timeZone = this.currentTimeSrv.getTimezoneHours();\n this.postCaso(timeStamp, timeZone);\n }\n );\n }\n\n postCaso(timeStamp, timeZone) {\n this.caso.profesionalAsignadoId = this.abogado.id_usuario;\n this.apiService\n .postCaso(\n this.caso.categoria.id_categoria,\n this.caso.detalles,\n this.caso.archivosSeleccionados,\n this.caso.localidad.id_localidad,\n this.caso.titulo,\n this.caso.profesionalAsignadoId,\n TiposCasoCode.LLAMADA,\n timeStamp,\n timeZone\n )\n .subscribe(\n (respuesta) => {\n this.seleccion.id_caso = respuesta.id_caso;\n this.aceptarAbogado;\n },\n (error) => {\n console.error(error);\n if (error.status === 409) {\n alert('Error de registro');\n } else {\n alert('Error');\n }\n }\n );\n }\n\n navegar(destino) {\n switch (destino) {\n case 1:\n this._location.back();\n break;\n case 2:\n this.seleccion.nombre = this.nombre;\n this.seleccion.apellido = this.apellido;\n this.seleccion.titulo = this.titulo;\n this.seleccion.caso = this.caso;\n if (this.titulo == 'Agendar cita') {\n this.router.navigateByUrl('/resumen', { state: this.seleccion });\n }\n if (this.titulo == 'Llamada express') {\n this.router.navigateByUrl('/resumen', { state: this.seleccion });\n }\n\n if (this.titulo == 'Detalle del caso') {\n this.router.navigateByUrl('/seleccionado', { state: this.seleccion });\n }\n\n break;\n case 3:\n this.router.navigate(['/casos-activos/3']);\n break;\n default:\n break;\n }\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-mensaje-espera',\n templateUrl: './mensaje-espera.component.html',\n styleUrls: ['./mensaje-espera.component.css']\n})\nexport class MensajeEsperaComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n \n \n Agregar jurisdicción\n \n \n
\n \n
\n
\n
\n
","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'app-abogado',\n templateUrl: './abogado.component.html',\n styleUrls: ['./abogado.component.css'],\n})\nexport class AbogadoComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","
\n

Vinculaciones

\n
\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n
\n Plataforma Nombre\n \n {{ vinculacion.plataformaNombre }}\n \n Vinculacion\n \n \n \n Esta vinculado\n \n \n \n Acciones\n \n \n \n Vincular\n \n \n \n \n \n
\n
\n","
\n
\n \n \n
\n \n \n
\n","import { Component, OnInit } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { PlanMultipagoService } from 'src/app/services/plan/plan-multipago.service';\nimport { MPVinculacion } from '../../admin/multipago/modules/multipago.model';\nimport { DialogVincularComponent } from '../perfil-abogado/dialogvincular.component';\nimport { loadCustomScript } from \"@paypal/paypal-js\";\nimport { environment } from 'src/environments/environment';\n\n\n@Component({\n selector: 'app-vinculaciones',\n templateUrl: './vinculaciones.component.html',\n styleUrls: ['./vinculaciones.component.css']\n})\nexport class VinculacionesComponent implements OnInit {\n\n cacheVinculaciones: MPVinculacion[] = [];\n\n displayedColumns: string[] = [\n 'plataformaNombre',\n 'vincular',\n 'vinculado',\n 'acciones', \n ];\n\n selVinculacion: MPVinculacion;\n swInit: boolean = false;\n\n constructor(\n private servicePlanMP: PlanMultipagoService,\n public dialog: MatDialog,\n ) { \n (window as any).doPaypalVinculado = (authCode, sharedId) => {\n this.onPaypalConnection(authCode, sharedId);\n }\n }\n\n ngOnInit(): void {\n if (this.swInit)\n return;\n this.swInit = true;\n\n this.servicePlanMP.getAbogadoVinculaciones().subscribe({\n next: (vinculaciones: MPVinculacion[]) => {\n let vincPaypal: MPVinculacion[] = [];\n let existsPaypal: boolean = false;\n this.cacheVinculaciones = vinculaciones;\n\n vinculaciones.forEach((row) => {\n if (row.plataformaNombre == \"Paypal\") {\n vincPaypal.push(row);\n }\n });\n\n vincPaypal.forEach((row, index) => {\n this.servicePlanMP.getAbogadoVinculacionLink(row.plataformaId).subscribe({\n next: resp => {\n console.log(\"respuesta: \");\n console.log(resp);\n\n if (resp?.links) {\n resp.links.some(paypalLink => {\n if (paypalLink?.rel == \"action_url\") {\n row.urlLink = paypalLink.href + \"&displayMode=minibrowser\";\n existsPaypal = true;\n }\n })\n }\n },\n complete: () => {\n if (index +1 == vincPaypal.length) {\n if (existsPaypal) {\n try {\n loadCustomScript({\n url: environment.paypal_partner_url\n }).then(resp => {\n console.log(\"cargado loadCustomScript: \", resp);\n });\n } catch (err) {\n console.error(\"error loadCustomScript: \", err);\n }\n }\n }\n }\n });\n });\n }\n });\n }\n\n openDialogVincular(vinculacion: MPVinculacion) {\n if (vinculacion.plataformaNombre.toLocaleLowerCase() == \"mercadopago\") {\n this.dialog.open(DialogVincularComponent, {\n backdropClass: 'backdropBackground',\n });\n }\n }\n\n onPaypalButton(vinculacion: MPVinculacion): void {\n this.selVinculacion = vinculacion;\n }\n\n onPaypalConnection(authCode, sharedId) {\n this.servicePlanMP.doAbogadoVinculacionPaypal(this.selVinculacion.plataformaId, authCode, sharedId).subscribe({\n next: resp => {\n window.location.reload();\n }\n });\n console.log(`onPaypalConnection: ${authCode} - ${sharedId}`);\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { OportunidadesComponent } from '../casos/oportunidades/oportunidades.component';\nimport { PreviaComponent } from '../seleccion/previa/previa.component';\nimport { DatosComponent } from '../seleccion/datos/datos.component';\nimport { AuthGuard } from '../../../auth.guard';\nimport { Role } from '../../../enums/role';\nimport { MensajeEsperaComponent } from '../agregar/mensaje-espera/mensaje-espera.component';\nimport { AbogadoComponent } from '../abogado.component';\nimport { VinculacionesComponent } from '../vinculaciones/vinculaciones.component';\n\n\nconst routes: Routes = [\n {\n path: 'oportunidades',\n component: OportunidadesComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Abogado] }\n },\n {\n path: 'seleccion/previa',\n component: PreviaComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'seleccion/datos',\n component: DatosComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'llamada',\n component: DatosComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'agregar-jurisdiccion',\n component: MensajeEsperaComponent,\n }, {\n path: 'abogado',\n component: AbogadoComponent,\n children: [{\n path: 'vinculaciones',\n component: VinculacionesComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Abogado] },\n }]\n }\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class AbogadoRoutingModule { }","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PopupPaypalPagoComponent } from '../dialogo/mercadopago/popup-paypal-pago/popup-paypal-pago.component';\nimport { DialogoConfirmarComponent } from '../dialogo/dialogo-confirmar/dialogo-confirmar.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DialogoPrevisualizarComponent } from '../dialogo/dialogo-previsualizar/dialogo-previsualizar.component';\n\n\n\n@NgModule({\n declarations: [\n PopupPaypalPagoComponent,\n DialogoConfirmarComponent,\n DialogoPrevisualizarComponent\n ],\n imports: [\n CommonModule,\n MatButtonModule,\n TranslateModule\n ],\n exports: [\n PopupPaypalPagoComponent\n ]\n})\nexport class CommonsModule { }\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MaterialModule } from '../../../modules/material.module';\nimport { LoginRoutingModule } from '../../login/login-routing.module';\nimport { AbogadoRegistroModule } from '../registroYMensajesAsociados/modules/abogadoRegistro.modules';\nimport { AbogadoRoutingModule } from '../modules/abogado-routing.module';\n//import { OportunidadesComponent } from '../casos/oportunidades/oportunidades.component';\nimport { DialogComponent } from '../plan/modal/dialog.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PopupMercadopagoTarjetaComponent } from '../plan/popup-mercadopago-tarjeta/popup-mercadopago-tarjeta.component';\nimport { CommonsModule } from '../../commons/modules/commons.module';\nimport { PopupMercadopagoOpcionesComponent } from '../plan/popup-mercadopago-opciones/popup-mercadopago-opciones.component';\n@NgModule({\n declarations: [\n DialogComponent,\n PopupMercadopagoTarjetaComponent,\n PopupMercadopagoOpcionesComponent,\n // OportunidadesComponent\n ],\n imports: [\n BrowserModule,\n LoginRoutingModule,\n MaterialModule,\n ReactiveFormsModule,\n AbogadoRegistroModule,\n AbogadoRoutingModule,\n TranslateModule,\n CommonsModule\n ],\n providers: [],\n bootstrap: []\n})\nexport class AbogadoModule { }\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-creacion-exitosa-cliente',\n templateUrl: './creacion-exitosa-cliente.component.html',\n styleUrls: ['./creacion-exitosa-cliente.component.css']\n})\nexport class CreacionExitosaClienteComponent implements OnInit {\n\n\n constructor( ) { }\n\n ngOnInit(): void {\n }\n}\n\n\n\n","\n
\n \n
\n
\n \n
\n \n
\n \n
{{ \"registroCliente.ingresar\" | translate }}
\n

Crear Caso

\n
\n\n
\n \n {{ \"casoNuevo.nombre\" | translate }}\n \n \n \n {{ \"casoNuevo.descripcion\" | translate }}\n \n \n
\n
\n \n {{ \"registroCliente.pais\" | translate }}\n \n \n {{ pais.name }}\n \n \n \n \n {{ \"registroCliente.provincia\" | translate }}\n \n {{ provincia.nombre }}\n \n \n \n \n {{ \"registroAbogado.localidad\" | translate }}\n \n {{ localidad.nombre }}\n \n \n
\n\n
\n

Especifique la especialidad y categoria de su caso

\n
\n\n \n Especialidad \n \n \n {{ especialidad.nombre }}\n \n \n \n \n Categoria \n \n \n {{ categoria.titulo }}\n \n \n \n\n
\n

{{ \"casoNuevo.adjuntar\" | translate }}

\n
\n\n
\n \n \n
\n {{\n \"casoNuevo.adjuntarDesc\" | translate\n }}\n
\n
\n description\n
\n

\n {{\n archivo.nombreoriginal\n ? archivo.nombreoriginal\n : archivo.name\n }}\n

\n

\n {{ (archivo.size ? archivo.size : archivo.tamanio) / 100000 }}\n MB\n

\n
\n
\n \n
\n
\n
\n\n
\n

{{ \"registroCliente.datos\" | translate }}

\n
\n\n \n {{ \"registroCliente.nombre\" | translate }}\n \n \n \n {{ \"registroCliente.apellido\" | translate }}\n \n \n\n \n {{ \"registroCliente.correo\" | translate }}\n \n {{ \"registroCliente.correoDescrip\" | translate }}\n \n\n \n {{ \"registroAbogado.celular\" | translate }}\n \n \n\n
\n \n {{ \"registroCliente.contraseña\" | translate }}\n \n \n {{ hide ? \"visibility_off\" : \"visibility\" }}\n \n {{ \"registroCliente.contraDescrip\" | translate }}\n \n \n {{ \"registroCliente.repCon\" | translate }}\n \n \n {{ hide ? \"visibility_off\" : \"visibility\" }}\n \n {{\n \"registroCliente.contraCoin\" | translate\n }}\n \n\n
\n

\n
\n
\n {{ \"registroCliente.final1\" | translate }}\n {{\n \"registroCliente.final2\" | translate\n }}\n {{ \"registroCliente.final3\" | translate }}\n {{\n \"registroCliente.final4\" | translate\n }}\n
\n\n \n {{ \"registroCliente.continuar\" | translate }}\n \n \n
\n
\n\n"," \n
\n \n \n
\n \n
\n

Tu cuenta se creó con éxito

\n Te enviamos un mail a tu correo para poder validar tu identidad. Si no lo encuentras en tu bandeja principal, revisa en spam.
\n
\n
\n
\n \n
\n \n
\n
\n ","import { Component, OnInit } from '@angular/core';\nimport {\n Validators,\n UntypedFormControl,\n UntypedFormGroup,\n FormControl,\n} from '@angular/forms';\nimport {\n Categoria,\n Especialidad,\n Identificacion,\n Jurisdiccion,\n Localidad,\n RegisterClient,\n} from '../../../../api/user';\nimport { ApiService } from '../../../../api/api.service';\nimport {\n MatSnackBar,\n MatSnackBarHorizontalPosition,\n MatSnackBarVerticalPosition,\n} from '@angular/material/snack-bar';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { LoginService } from 'src/app/services/login.service';\nimport { CheckPasswordService } from '../../../../services/register/checkPassword/check-password.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Pais } from 'src/app/api/pais';\nimport { environment } from 'src/environments/environment';\nimport { RoleNumber } from 'src/app/enums/role';\nimport { TiposCasoCode } from 'src/app/enums/TiposCasoCode';\nimport { CurrentTimeService } from 'src/app/utils/currentTime/current-time.service';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\ndeclare var gtag;\ndeclare let fbq: any;\n\n@Component({\n selector: 'app-registro-cliente',\n templateUrl: './registro-cliente.component.html',\n styleUrls: ['./registro-cliente.component.css'],\n})\nexport class RegistroClienteComponent implements OnInit {\n horizontalPosition: MatSnackBarHorizontalPosition = 'center';\n verticalPosition: MatSnackBarVerticalPosition = 'top';\n\n coinciden = true;\n blur = false;\n language: String = '';\n localidadesResidencias: Localidad[];\n localidades: Localidad[];\n imgSelected;\n cacheCountries: Pais[];\n jurisdicciones: Jurisdiccion[];\n provinciasResidencias: Jurisdiccion[];\n nombreIdentificacion = '';\n\n selArchivos: File[] = [];\n\n cacheEspecialidades: Especialidad[] = [];\n cacheCategorias: Categoria[] = [];\n\n constructor(\n private apiService: ApiService,\n private _snackBar: MatSnackBar,\n private router: Router,\n private loginSrv: LoginService,\n private route: ActivatedRoute,\n private currentTimeSrv: CurrentTimeService,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n private checkPasswordService: CheckPasswordService,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT', 'en-US']);\n this.language = sessionStorage.getItem('language');\n if (!this.language) {\n this.language = 'es-AR';\n sessionStorage.setItem('language', '' + this.language);\n }\n translate.setDefaultLang(sessionStorage.getItem('language'));\n if (this.language == 'it-IT')\n this.imgSelected = '../../../assets/italia.png';\n else if (this.language == 'en-US')\n this.imgSelected = '../../../assets/ingles.png';\n else\n this.imgSelected = '../../../assets/españa.png';\n\n this.matIconRegistry.addSvgIcon(\n `borrar`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/garbage.svg'\n )\n );\n }\n registerClients: RegisterClient[] = [];\n registroRedes: boolean = false;\n flag: boolean = false;\n identificaciones: Identificacion[];\n newUser = new UntypedFormGroup({\n nombre: new UntypedFormControl(),\n apellido: new UntypedFormControl(),\n email: new UntypedFormControl(),\n dni: new UntypedFormControl('0'),\n tipoIdentificacion: new UntypedFormControl(\n {\n id_tipos_identificacion: 2,\n nombre: 'Cédula de Identidad'\n }\n ),\n telefono: new UntypedFormControl(),\n password: new UntypedFormControl('', [\n Validators.required,\n Validators.pattern(/^(?=.*[A-Z])(?=.*[0-9])(?=.{8,})/),\n ]),\n repeatPassword: new UntypedFormControl('', [Validators.required]),\n pais: new UntypedFormControl(),\n localidad: new UntypedFormControl(),\n provinciaResidencia: new UntypedFormControl(),\n localidadResidencia: new UntypedFormControl(),\n casoTitulo: new FormControl(null, [Validators.required]),\n casoDesc: new FormControl(null, [Validators.required]),\n especialidadId: new FormControl(null, [Validators.required]),\n categoriaId: new FormControl(null, [Validators.required]),\n archivosSeleccionados: new FormControl(),\n });\n\n redes: string = '';\n\n ngOnInit() {\n this.registroRedes = false;\n this.route.paramMap.subscribe((params) => {\n const red = params['params'].tipo;\n this.redes = red;\n this.route.queryParams.subscribe((params) => {\n const code = params['code'];\n if (code) {\n this.registroRedes = true;\n this.loginSrv.getRedPerfil(code, 'C', red).subscribe((res) => {\n this.newUser.patchValue({\n nombre: res.nombre,\n apellido: res.apellido,\n email: res.mail,\n });\n this.newUser.controls['password'].disable();\n this.newUser.controls['repeatPassword'].disable();\n this.guardarUsuario();\n });\n }\n });\n });\n this.trackRegister();\n\n this.apiService.getPaisesClean().subscribe({\n next: (resp: Pais[]) => {\n this.cacheCountries = resp;\n this.jurisdicciones = this.provinciasResidencias = [];\n\n resp.some((pais: Pais) => {\n pais.name = pais.name ?? '';\n if (pais.name.toUpperCase().startsWith('ARGENT')) {\n this.newUser.controls['pais'].setValue(pais);\n this.cargarProvincias();\n return true;\n }\n return false;\n });\n },\n error: (err: any) => {\n console.error(err);\n },\n });\n this.getIdentificaciones();\n }\n\n trackRegister() {\n gtag('event', 'registro_clie_visita', {\n send_to: environment.measurement_id,\n event_name: 'registro_clie_visita',\n });\n }\n\n getIdentificaciones() {\n this.apiService.getIdentificacion().subscribe(\n (identificaciones) => {\n this.identificaciones = identificaciones;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n cargarLocalidades() {\n this.apiService\n .getLocalidades(this.newUser.value.jurisdiccion.id_jurisdiccion)\n .subscribe(\n (localidad) => {\n this.localidades = localidad;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n cargarProvincias(): void {\n this.jurisdicciones = this.provinciasResidencias = [];\n this.localidadesResidencias = [];\n this.apiService\n .getJurisdiccionPaisesBy(this.newUser.value.pais.countryId)\n .subscribe({\n next: (resp: Jurisdiccion[]) => {\n if (resp.length > 0) {\n this.newUser.patchValue({\n provinciaResidencia: resp[0]\n });\n this.cargarLocalidadesResidencia();\n }\n this.jurisdicciones = this.provinciasResidencias = resp;\n this.localidadesResidencias = [];\n },\n });\n\n this.apiService.getEspecialidadesByPais(RoleNumber.Cliente, this.newUser.value.pais.countryId).subscribe({\n next: (especialidades: Especialidad[]) => {\n this.cacheEspecialidades = especialidades;\n if (especialidades && especialidades.length > 0) {\n this.newUser.patchValue({\n especialidadId: especialidades[0].id_especialidad\n });\n\n this.doEspecialidadSel();\n }\n }\n });\n }\n\n doEspecialidadSel(): void {\n let countryId = this.newUser.value.pais.countryId;\n let especialidadId = this.newUser.value.especialidadId;\n this.cacheCategorias = [];\n this.newUser.patchValue({\n categoriaId: null\n });\n\n this.apiService.getCategoriasByPais(especialidadId, countryId).subscribe({\n next: (categorias: Categoria[]) => {\n this.cacheCategorias = categorias;\n if (categorias && categorias.length > 0) {\n this.newUser.patchValue({\n categoriaId: categorias[0].id_categoria\n });\n }\n }\n });\n }\n\n cargarLocalidadesResidencia() {\n this.apiService\n .getLocalidades(this.newUser.value.provinciaResidencia.id_jurisdiccion)\n .subscribe(\n (localidad) => {\n if (localidad.length > 0) {\n this.newUser.patchValue({\n localidadResidencia: localidad[0]\n });\n }\n this.localidadesResidencias = localidad;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n switchLang(lang: string) {\n console.log(lang);\n this.translate.use(lang);\n this.language = lang;\n sessionStorage.setItem('language', lang);\n sessionStorage.language = lang;\n if (lang == 'es-AR') this.imgSelected = '../../../assets/españa.png';\n if (lang == 'it-IT') this.imgSelected = '../../../assets/italia.png';\n if (lang == 'en-US') this.imgSelected = '../../../assets/ingles.png';\n }\n\n onSubmit() {\n if (this.newUser.value.password != this.newUser.value.repeatPassword) {\n this.openSnackBar('Las contraseñas no coinciden');\n } else {\n this.guardarUsuario();\n fbq('track', 'CompleteRegistration');\n }\n }\n hide = true;\n\n guardarUsuario() {\n let clientRegister: RegisterClient;\n\n let lenguage = sessionStorage.getItem('language');\n let lchar = '';\n if (lenguage == 'es-AR') lchar = 'P';\n if (lenguage == 'it-IT') lchar = 'T';\n if (lenguage == 'en-US') lchar = 'N';\n\n clientRegister = {\n apellido: this.newUser.value.apellido,\n clave: this.newUser.value.password,\n datosUsuario: [\n {\n direccion: this.newUser.value.provinciaResidencia.nombre,\n localidadId: this.newUser.value.localidadResidencia.id_localidad,\n numeroDni: this.newUser.value.dni,\n telefono: this.newUser.value.telefono,\n tipoDni:\n this.newUser.value.tipoIdentificacion.id_tipos_identificacion,\n },\n ],\n lenguaje: lchar,\n mail: this.newUser.value.email,\n nombre: this.newUser.value.nombre,\n pais: this.newUser.value.pais.countryId,\n localidadId: this.newUser.value.localidadResidencia.id_localidad,\n rol: 3,\n redesSociales: this.registroRedes,\n mailConfirmUrl: '/validada-cliente',\n } as RegisterClient;\n \n let timeZone = '';\n this.apiService.getCountry().subscribe(\n (res) => {\n timeZone = res.countryCode;\n this.doGuardarUsuario(clientRegister, timeZone);\n },\n (error) => {\n console.error(error);\n timeZone = this.currentTimeSrv.getTimezoneHours();\n this.doGuardarUsuario(clientRegister, timeZone);\n }\n );\n }\n\n doGuardarUsuario(register: RegisterClient, timeZone: string) {\n register[\"caso\"] = {\n casoId: 0,\n categoriaId: this.newUser.value.categoriaId,\n descripcion: this.newUser.value.casoDesc,\n localidadId: this.newUser.value.localidadResidencia.id_localidad,\n tipo: TiposCasoCode.EMAIL,\n titulo: this.newUser.value.casoTitulo,\n fechaCreacion: this.currentTimeSrv.getTimeStamp(),\n zonaHoraria: timeZone,\n };\n\n let nextFn = (res) => {\n if (sessionStorage[\"companyId\"]) {\n this.loginSrv.doUpdateUsuarioCompany(res.id_usuario, sessionStorage[\"companyId\"]).subscribe({\n next: () => {\n sessionStorage.removeItem(\"companyId\");\n }\n });\n }\n\n if (this.registroRedes == true) {\n if (this.redes == 'L') {\n gtag('event', 'registro_clie_exitoso_linkedin', {\n send_to: environment.measurement_id,\n method: 'registro_clie_exitoso_linkedin',\n });\n } else if (this.redes == 'G') {\n gtag('event', 'registro_clie_exitoso_gmail', {\n send_to: environment.measurement_id,\n method: 'registro_clie_exitoso_gmail',\n });\n } else if (this.redes == 'F') {\n gtag('event', 'registro_clie_exitoso_facebook', {\n send_to: environment.measurement_id,\n method: 'registro_clie_exitoso_facebook',\n });\n }\n } else {\n gtag('event', 'registro_clie_exitoso_mail', {\n send_to: environment.measurement_id,\n method: 'registro_clie_exitoso_mail',\n });\n }\n\n this.openSnackBar(this.translate.instant('register.success'));\n if (this.registroRedes && res.token) {\n this.loginSrv.handleUserData(res);\n } else {\n this.router.navigate(['/exito-cliente']);\n }\n };\n let errFn = (error) => {\n console.error(error);\n if (error.status === 409) {\n this.openSnackBar(this.translate.instant('email.registered'));\n } else {\n this.openSnackBar(this.translate.instant('service.error'));\n }\n };\n\n if (this.selArchivos && this.selArchivos.length > 0) {\n this.apiService\n .registrarClienteWithFiles(register, this.selArchivos)\n .subscribe(nextFn, errFn);\n } else {\n this.apiService.registrarCliente(register).subscribe(nextFn, errFn);\n }\n }\n\n verificarPassSalir() {\n this.blur = true;\n this.verificarPass();\n }\n\n verificarPass() {\n this.coinciden = this.checkPasswordService.checkPass(\n this.blur,\n this.newUser.value.password,\n this.newUser.value.repeatPassword\n );\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', {\n horizontalPosition: this.horizontalPosition,\n verticalPosition: this.verticalPosition,\n });\n }\n\n definirIdentificacion() {\n this.nombreIdentificacion = this.newUser.value.tipoIdentificacion.nombre;\n }\n\n doSelectFiles(event) {\n for (var i = 0; i < event.target.files.length; i++) {\n this.selArchivos.push(event.target.files[i]);\n }\n this.newUser.patchValue({\n archivosSeleccionados: this.selArchivos\n });\n }\n\n doEliminarFiles(archivo, index) {\n let newFileList = Array.from(this.selArchivos);\n let borrar = newFileList.filter(\n (archivoParaBorrar) => archivoParaBorrar.name === archivo.name\n );\n this.selArchivos.splice(index, 1);\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { ApiService } from '../../../../api/api.service';\nimport { ActivatedRoute } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-cuenta-validada-cliente',\n templateUrl: './cuenta-validada-cliente.component.html',\n styleUrls: ['./cuenta-validada-cliente.component.css']\n})\nexport class CuentaValidadaClienteComponent implements OnInit {\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n public translate: TranslateService) {\n\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n if(sessionStorage.getItem('language')==null){\n translate.setDefaultLang('es-AR');\n }\n else{\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n }\n id = \"\";\n language = \"\";\n ngOnInit(): void {\n this.route.paramMap.subscribe(params => {\n this.id = params['params'].id;\n this.language = params['params'].lang;\n this.translate.use(this.language);\n\n sessionStorage.setItem('language', this.language);\n });\n\n this.apiService.confirmarUsuario(this.id)\n .subscribe(respuesta => {\n },\n error => {\n console.error(error);\n });\n }\n\n}","\n
\n \n
\n
\n \n \n \n
\n

{{ \"registroCliente.validatedTitle\" | translate }}

\n
\n {{ \"registroCliente.validatedBody\" | translate }}\n
\n \n \n
\n
\n","import {\n AfterViewChecked,\n AfterViewInit,\n Component,\n isDevMode,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport * as CryptoJS from 'crypto-js';\nimport { environment } from 'src/environments/environment';\nimport { Observable } from 'rxjs';\nimport { NewUser, RegisterClient } from 'src/app/api/user';\nimport { LoginService } from 'src/app/services/login.service';\nimport { ApiService } from 'src/app/api/api.service';\nimport { ChangeDetectorRef } from '@angular/core';\nimport { SenderService } from 'src/app/services/sender.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\ndeclare var gtag;\n@Component({\n selector: 'app-external',\n templateUrl: './external.component.html',\n styleUrls: ['./external.component.css'],\n})\nexport class ExternalComponent implements OnInit {\n public usuario = { rol: 0 };\n public nippy: boolean;\n constructor(private _snackBar: MatSnackBar,\n private route: ActivatedRoute,\n private http: HttpClient,\n private loginSrv: LoginService,\n private apiService: ApiService,\n private cdRef: ChangeDetectorRef,\n private router: Router,\n private service: SenderService\n ) {}\n // key: string = \"4573746F4573556E614B6579616161614573746F4573556E614B657961616161\";\n // iv : string = \"3DA59479589FB1A4FE21487D7C07045C\";\n // key: string = '4573746F4573556E614B657961616161';\n // iv: string = '3DA59479589FB1A4';\n\n key: string = 'JDG4R1WHPME850CW9NXCMQTVRCF6OY2Y';\n iv: string = 'CLQ0QAW64LGOHIIA';\n data: string;\n json: string;\n decKey: string = 'piorjfnkfnlaskfslf';\n desc = null;\n registerClients: RegisterClient[] = [];\n private url = environment.apiUrl + '/';\n httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n }),\n };\n\n ngOnInit(): void {\n this.route.queryParams.subscribe((params) => {\n\n try {\n this.data = decodeURI(params['data']);\n } catch (ex) {\n this.trackLoginNippyError();\n this.openSnackBar(\"Se encontro un error al validar su identidad\");\n }\n \n });\n\n this.decrypt(this.data);\n this.cdRef.detectChanges();\n this.inciarSesion(this.json);\n\n // this.decrypt(this.data);\n\n // 1. consultar al backend si el usuario existe y esta activo\n // 2. si no existe aprovisionarlo y redirigir a la pagina para la apertura de caso\n // 3. si es existe, loguear y redireccionar a la pagina de apertura de caso\n }\n\n trackLoginNippySuccess(){\n gtag('event', 'login_nippy_success', {\n 'send_to':environment.measurement_id,\n 'event_name': 'login_nippy_success'\n });\n gtag('event', 'login', {\n 'send_to':environment.measurement_id,\n 'method': 'login_nippy_success'\n });\n }\n\n trackLoginNippyError(){\n gtag('event', 'login', {\n 'send_to':environment.measurement_id,\n 'method': 'login_nippy_error'\n });\n }\n\n decrypt(cypherText: string) {\n let keyBase64: any;\n let ivBase64: any;\n let cypherTextArray: any;\n keyBase64 = CryptoJS.enc.Utf8.parse(this.key);\n ivBase64 = CryptoJS.enc.Utf8.parse(this.iv);\n\n //console.log(\"JSON 1\"+cypherText);\n //console.log(\"utf8 \"+utf8);\n // cypherTextArray = this.stringToByteArray(cypherText);\n //cypherTextArray = CryptoJS.enc.Base64.parse(cypherText);\n\n try {\n this.json = CryptoJS.AES.decrypt(cypherText, keyBase64, {\n iv: ivBase64,\n padding: CryptoJS.pad.ZeroPadding,\n mode: CryptoJS.mode.CBC,\n }).toString(CryptoJS.enc.Utf8);\n } catch (ex) {\n this.openSnackBar(\"Se encontro un error AES\");\n }\n \n \n\n\n }\n //if()\n send(json: string): Observable {\n return this.http.post(this.url + 'cuenta', json, this.httpOptions);\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, \"\", { duration: 5000 });\n }\n\n byteArrayToString(hex: Uint16Array): string {\n var hexString = '';\n var nextHexByte;\n for (var i = 0; i < hex.byteLength; i++) {\n nextHexByte = hex[i].toString(16); // Integer to base 16\n if (nextHexByte.length < 2) {\n nextHexByte = '0' + nextHexByte; // Otherwise 10 becomes just a instead of 0a\n } // w w w.java 2 s . c om\n hexString += nextHexByte;\n }\n return hexString;\n }\n\n stringToByteArray(hex: string): Uint16Array {\n var numBytes = hex.length / 2;\n var byteArray = new Uint16Array(numBytes);\n for (var i = 0; i < numBytes; i++) {\n byteArray[i] = parseInt(hex.substr(i * 2, 2), 16);\n }\n return byteArray;\n }\n\n guardarUsuario() {\n console.log('Create una cuenta');\n }\n\n inciarSesion(dato: any) {\n this.nippy = true;\n //this.service.nippy = this.nippy;\n sessionStorage.nippy = '';\n if (isDevMode())\n console.log('Iniciar sesion: ' + dato);\n else\n console.log('Iniciar sesion.');\n //this.apiService.postUserNippy(dato).subscribe((dato) => (dato = dato));\n this.apiService.postUserNippy(dato).subscribe(\n (dato) => {\n sessionStorage.companyLogo = `${environment.apiUrl}/public/company/${dato.companyId}/logo`;\n this.trackLoginNippySuccess();\n this.loginSrv.handleUserData(dato);\n },\n (error) => {\n if (error.status == 409) {\n console.log('Error pa');\n this.apiService.LoginUserNippy(dato).subscribe((dato) => {\n sessionStorage.companyLogo = `${environment.apiUrl}/public/company/${dato.companyId}/logo`;\n this.loginSrv.handleUserData(dato);\n });\n }\n }\n );\n }\n\n navegarRegistro(rol: number) {\n this.usuario.rol = rol;\n localStorage.setItem('rol', this.usuario.rol.toString());\n this.router.navigateByUrl('/redes');\n }\n}\n// http://legalify.app/account?data=sndlñksandfaskldfniasdniosa\n","\n \n\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { CreacionExitosaClienteComponent } from '../creacion-exitosa/creacion-exitosa-cliente.component';\nimport { RegistroClienteComponent } from '../registro-cliente/registro-cliente.component';\nimport { CuentaValidadaClienteComponent } from '../cuenta-validada-cliente/cuenta-validada-cliente.component';\nimport { ExternalComponent } from '../external/external.component';\n\nconst routes: Routes = [\n {\n path: 'exito-cliente',\n component: CreacionExitosaClienteComponent,\n },\n {\n path: 'registro-cliente',\n component: RegistroClienteComponent,\n },\n {\n path: 'registro-cliente/:tipo',\n component: RegistroClienteComponent,\n },\n {\n path: 'validada-cliente/:id/:lang',\n component: CuentaValidadaClienteComponent,\n },\n {\n path: 'account',\n component: ExternalComponent,\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n})\nexport class ClienteRegistroRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from '../../../../modules/material.module';\n\nimport { ClienteRegistroRoutingModule } from './clienteRegistro-routing.module';;\n\nimport { CreacionExitosaClienteComponent } from '../creacion-exitosa/creacion-exitosa-cliente.component';\nimport { RegistroClienteComponent } from '../registro-cliente/registro-cliente.component';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n declarations: [\n CreacionExitosaClienteComponent,\n RegistroClienteComponent,\n ],\n imports: [\n BrowserModule,\n MaterialModule,\n ReactiveFormsModule,\n ClienteRegistroRoutingModule,\n TranslateModule,\n FormsModule\n ],\n providers: [],\n bootstrap: []\n})\nexport class ClienteRegistroModule { }\n","import { Component, OnInit, Inject } from '@angular/core';\nimport {\n UntypedFormControl,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { ApiService } from '../../../../../api/api.service';\nimport { Router } from '@angular/router';\nimport { Jurisdiccion, Localidad } from '../../../../../api/user';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { EnterClickService } from '../../../../../utils/enter-click/enter-click.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Pais } from 'src/app/api/pais';\nimport { Observable } from 'rxjs';\nimport { RoleNumber } from '../../../../../enums/role';\nimport { Especialidad } from '../../../../../api/user';\nimport { Categoria } from '../../../../../api/user';\nimport { MatDialog } from '@angular/material/dialog';\n\nimport { Planes } from '../../../../../api/planes';\nimport { PlanMultipagoService } from 'src/app/services/plan/plan-multipago.service';\nimport { IPlanCicloPlanAmount, PlanDefaultAmount } from 'src/app/components/admin/multipago/modules/multipago.model';\nimport { PopupDialogComponent } from './popup-dialog/popup-dialog.component';\nimport { DOCUMENT } from '@angular/common';\n\nenum PlanType {\n Mail = 'Mail',\n Schedule = 'Agenda',\n CallExpress = 'Llamada Express',\n}\n\nclass CostPlan {\n Mail: number;\n Schedule: number;\n CallExpress: number;\n ScheduleMoneda: string;\n CallExpressMoneda: string;\n}\n\n@Component({\n selector: 'app-crear',\n templateUrl: './crear.component.html',\n styleUrls: ['./crear.component.css'],\n})\nexport class CrearComponent implements OnInit {\n titulo = '';\n detalles = '';\n flag: boolean = false;\n edit: boolean = false;\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private apiService: ApiService,\n private router: Router,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n private enterClick: EnterClickService,\n public translate: TranslateService,\n private servicePlanMultipago: PlanMultipagoService,\n public dialog: MatDialog\n ) {\n translate.addLangs(['es-AR', 'it-IT', 'en-US']);\n this.language = sessionStorage.getItem('language');\n translate.setDefaultLang(sessionStorage.getItem('language'));\n this.matIconRegistry.addSvgIcon(\n `borrar`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/garbage.svg'\n )\n );\n }\n\n planCiclo: IPlanCicloPlanAmount = {};\n\n paises: Pais[];\n jurisdicciones: Jurisdiccion[];\n localidades: Localidad[];\n especialidades: Especialidad[];\n categorias: Categoria[];\n archivos: File[] = [];\n language: String = '';\n contadorTitulo;\n contadorDetalles;\n claseTitulo = 'contador';\n claseDetalles = 'contador';\n jurisdiccionSeleccionada = 'Provincia';\n localidadSeleccionada = 'Localidad';\n cambiar = false;\n casoForm = new UntypedFormGroup({\n titulo: new UntypedFormControl('', [Validators.maxLength(255)]),\n detalles: new UntypedFormControl('', [Validators.maxLength(255)]),\n pais: new UntypedFormControl(''),\n jurisdiccion: new UntypedFormControl('', [Validators.required]),\n localidad: new UntypedFormControl('', [Validators.required]),\n archivosSeleccionados: new UntypedFormControl(),\n especialidad: new UntypedFormControl('', [Validators.required]),\n categoria: new UntypedFormControl({ value: '', disabled: true }, [\n Validators.required,\n ]),\n });\n caso_edit;\n\n caso = {\n titulo: '',\n detalles: '',\n jurisdiccion: {\n nombre: '',\n id_jurisdiccion: '',\n countryId: 54,\n },\n localidad: {\n nombre: '',\n id_localidad: '',\n },\n especialidad: {\n nombre: '',\n id_especialidad: '',\n },\n categoria: {\n nombre: '',\n id_categoria: '',\n },\n archivosSeleccionados: [],\n };\n datos = {\n titulo: 'Llamada express',\n abogados: [],\n caso: this.caso,\n };\n costPlan: CostPlan;\n\n isFormValid() {\n // Comprueba si cada campo requerido está completo\n const isTituloValid = this.casoForm.get('titulo').value !== '';\n const isDetallesValid = this.casoForm.get('detalles').value !== '';\n const isPaisValid = this.casoForm.get('pais').value !== '';\n const isJurisdiccionValid = this.casoForm.get('jurisdiccion').value !== '';\n const isLocalidadValid = this.casoForm.get('localidad').value !== '';\n const isEspecialidadValid = this.casoForm.get('especialidad').value !== '';\n\n // Devuelve true si todos los campos requeridos están completos\n return (\n isTituloValid &&\n isDetallesValid &&\n isPaisValid &&\n isJurisdiccionValid &&\n isLocalidadValid &&\n isEspecialidadValid\n );\n }\n\n sincronizarCasoConFormulario() {\n const valoresForm = this.casoForm.value;\n this.caso.titulo = valoresForm.titulo;\n this.caso.detalles = valoresForm.detalles;\n\n this.caso.jurisdiccion.nombre = valoresForm.jurisdiccion.nombre;\n this.caso.jurisdiccion.id_jurisdiccion =\n valoresForm.jurisdiccion.id_jurisdiccion;\n this.caso.jurisdiccion.countryId = valoresForm.jurisdiccion.countryId;\n\n this.caso.localidad.nombre = valoresForm.localidad.nombre;\n this.caso.localidad.id_localidad = valoresForm.localidad.id_localidad;\n\n const especialidadSeleccionada = this.especialidades.find(\n (e) => e.id_especialidad === valoresForm.especialidad\n );\n const categoriaSeleccionada = this.categorias.find(\n (c) => c.id_categoria === valoresForm.categoria\n );\n\n this.caso.especialidad.nombre = especialidadSeleccionada.nombre;\n this.caso.especialidad.id_especialidad = valoresForm.especialidad;\n this.caso.categoria.nombre = categoriaSeleccionada.titulo;\n this.caso.categoria.id_categoria = valoresForm.categoria;\n }\n\n ngOnInit(): void {\n var plans: Planes[];\n this.costPlan = new CostPlan();\n\n this.apiService.getPlanes().subscribe(\n (planes) => {\n plans = planes;\n this.setCost(plans);\n\n this.servicePlanMultipago\n .getPlanDefaultAmounts(\n 0,\n this.caso.jurisdiccion.id_jurisdiccion,\n [2, 3]\n )\n .subscribe({\n next: (result: PlanDefaultAmount[]) => {\n this.setDefaultCost(result);\n console.log(result.length);\n },\n });\n },\n (error) => {\n console.error(error);\n }\n );\n this.traerAbogados();\n\n let caso = JSON.parse(localStorage.getItem('caso'));\n this.caso_edit = JSON.parse(localStorage.getItem('caso-edit'));\n if (this.caso_edit != null) {\n this.edit = true;\n }\n let paisValue = JSON.parse(localStorage.user).pais;\n if (paisValue == 'ARG') paisValue = '54';\n this.casoForm.get('pais').setValue(paisValue * 1);\n\n let observable = new Observable((observer) => {\n if (caso != null) {\n this.titulo = caso.titulo;\n this.detalles = caso.detalles;\n this.casoForm.patchValue({\n titulo: caso.titulo,\n detalles: caso.detalles,\n });\n this.conteoTitulo();\n this.conteoDetalles();\n this.cargarJurisdicciones(paisValue);\n\n let archivos = JSON.parse(localStorage.getItem('archivos'));\n this.archivos = [];\n if (archivos) {\n this.archivos = archivos;\n }\n } else {\n observer.next(paisValue);\n }\n });\n\n this.apiService.getPaisesClean().subscribe({\n next: (resp: Pais[]) => {\n this.paises = resp;\n },\n error: (error) => {\n console.error(error);\n },\n });\n\n if (\n this.caso &&\n this.caso.jurisdiccion &&\n this.caso.jurisdiccion.countryId !== undefined\n ) {\n console.log('countryId:', this.caso.jurisdiccion.countryId);\n this.apiService\n .getCategoriasByPais(\n +this.caso.especialidad.id_especialidad,\n this.caso.jurisdiccion.countryId\n )\n .subscribe(\n (categorias) => {\n this.categorias = categorias;\n },\n (error) => {\n console.error(error);\n }\n );\n } else {\n console.log('caso or jurisdiccion or countryId is undefined');\n }\n\n observable.subscribe({\n next: (paisSelected) => {\n this.cargarJurisdicciones(paisSelected, caso);\n this.cargarEspecialidades(paisSelected);\n },\n });\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n this.language = lang;\n sessionStorage.setItem('language', lang);\n sessionStorage.language = lang;\n this.flag = true;\n }\n\n conteoTitulo() {\n this.contadorTitulo = this.casoForm.value.titulo.length;\n if (this.contadorTitulo === 55) {\n this.claseTitulo = 'textoRojo';\n } else {\n this.claseTitulo = 'contador';\n }\n }\n\n conteoDetalles() {\n let detalles = this.casoForm.getRawValue().detalles;\n this.contadorDetalles = detalles ? detalles.length : 0;\n if (this.contadorDetalles === 255) {\n this.claseDetalles = 'textoRojo';\n } else {\n this.claseDetalles = 'contador';\n }\n }\n\n atras($event) {\n if (this.enterClick.isClick($event)) {\n this.router.navigate(['/']);\n }\n }\n\n selectFiles(event) {\n for (var i = 0; i < event.target.files.length; i++) {\n this.archivos.push(event.target.files[i]);\n }\n this.casoForm.get('archivosSeleccionados').patchValue(this.archivos);\n }\n\n eliminar(archivo, index) {\n let newFileList = Array.from(this.archivos);\n let borrar = newFileList.filter(\n (archivoParaBorrar) => archivoParaBorrar.name === archivo.name\n );\n this.archivos.splice(index, 1);\n }\n\n getValueFromCicloPlanAmountUtfCode(planCiclo: IPlanCicloPlanAmount, planId: number, field: string, defValue:any) {\n let value = this.getValueFromCicloPlanAmount(planCiclo, planId, field, defValue);\n value = `&#${value};`;\n value = this.domSanitizer.bypassSecurityTrustHtml(value);\n return value;\n }\n\n getValueFromCicloPlanAmount(planCiclo: IPlanCicloPlanAmount, planId: number, field: string, defValue:any) {\n if (planCiclo && planCiclo[planId] && planCiclo[planId][0])\n return planCiclo[planId][0][field];\n return defValue;\n }\n\n cargarJurisdicciones(paisId: number, caso: any = null): void {\n let localidadId: number = null;\n this.apiService.getJurisdiccionPaisesBy(paisId).subscribe({\n next: (jurisdiccion) => {\n this.jurisdicciones = jurisdiccion;\n if (jurisdiccion && jurisdiccion.length > 0) {\n this.apiService.getPlanInfos(jurisdiccion[0].id_jurisdiccion, [2, 3]).subscribe({\n next: (result) => {\n this.planCiclo = result;\n }\n });\n }\n if (caso) {\n if (caso != null) {\n this.casoForm.get('jurisdiccion').setValue(caso.jurisdiccion);\n this.casoForm.value.jurisdiccion = caso.jurisdiccion;\n jurisdiccion.some((respJurisdiccion) => {\n if (\n respJurisdiccion.id_jurisdiccion ==\n caso.jurisdiccion.id_jurisdiccion\n ) {\n this.casoForm.patchValue({\n jurisdiccion: respJurisdiccion,\n });\n return true;\n }\n return false;\n });\n } else {\n }\n this.cargarLocalidades();\n }\n },\n error: (error) => {\n console.error(error);\n },\n });\n }\n\n cargarEspecialidades(paisId: number): void {\n this.apiService.getEspecialidadesByPais(\n RoleNumber.Cliente,\n paisId\n )\n .subscribe(\n (especialidades) => {\n this.especialidades = especialidades.map((especialidad) => {\n const nombreReemplazado = especialidad.nombre.replace('/', ' ');\n return { ...especialidad, nombre: nombreReemplazado };\n });\n\n if (this.caso.especialidad.id_especialidad) {\n this.onEspecialidadChange(+this.caso.especialidad.id_especialidad);\n }\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n updateJurisdiccion(event: any) {\n const selectedIndex = event.target.options.selectedIndex;\n this.caso.jurisdiccion.id_jurisdiccion =\n event.target.options[selectedIndex].getAttribute('id');\n this.caso.jurisdiccion.countryId =\n event.target.options[selectedIndex].getAttribute('countryId');\n }\n\n cargarLocalidades() {\n this.jurisdiccionSeleccionada = 'Provincia';\n this.casoForm.get('localidad').setValue('');\n this.localidadSeleccionada = 'Localidad';\n this.apiService\n .getLocalidades(this.casoForm.value.jurisdiccion.id_jurisdiccion)\n .subscribe(\n (localidad) => {\n this.localidades = localidad;\n\n if (this.localidades && this.localidades.length > 0) {\n this.casoForm.patchValue({ localidad: this.localidades[0] });\n }\n\n let localidadValue = this.casoForm.getRawValue().localidad;\n if (typeof localidadValue === 'number') {\n localidad.some((respLocalidad) => {\n if (localidadValue == respLocalidad.id_localidad) {\n this.casoForm.patchValue({ localidad: respLocalidad });\n return true;\n }\n return false;\n });\n }\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n onEspecialidadChange(especialidadId: number) {\n this.apiService.getCategorias(especialidadId).subscribe((categorias) => {\n this.categorias = categorias;\n\n if (this.categorias && this.categorias.length > 0) {\n this.casoForm\n .get('categoria')\n .setValue(this.categorias[0].id_categoria);\n }\n\n this.casoForm.get('categoria').enable();\n if (this.casoForm.valid) {\n this.caso.titulo = this.casoForm.get('titulo').value;\n this.caso.detalles = this.casoForm.get('detalles').value;\n }\n });\n }\n\n setCost(plans: Planes[]) {\n this.costPlan.Mail = plans.find((x) => x.nombre == PlanType.Mail).costo;\n this.costPlan.Schedule = plans.find(\n (x) => x.nombre == PlanType.Schedule\n ).costo;\n this.costPlan.CallExpress = plans.find(\n (x) => x.nombre == PlanType.CallExpress\n ).costo;\n }\n\n setDefaultCost(planAmounts: PlanDefaultAmount[]): void {\n planAmounts.forEach((planAmount: PlanDefaultAmount) => {\n switch (planAmount.planId) {\n case 2:\n this.costPlan.Schedule = planAmount.monto;\n this.costPlan.ScheduleMoneda = planAmount.monedaId;\n break;\n case 3:\n this.costPlan.CallExpress = planAmount.monto;\n this.costPlan.CallExpressMoneda = planAmount.monedaId;\n break;\n }\n });\n }\n\n OpenDialog() {\n this.document.body.classList.add('custom-glassmorphism');\n const dialogRef = this.dialog.open(PopupDialogComponent, {\n data: { caso: this.caso },\n width: '80%',\n height: '90%',\n });\n\n dialogRef.afterClosed().subscribe(() => {\n this.document.body.classList.remove('custom-glassmorphism');\n });\n }\n\n navegar(destino) {\n switch (destino) {\n case 1:\n this.cargarArchivo();\n this.OpenDialog();\n break;\n case 2:\n this.router.navigateByUrl('/rango', { state: this.datos });\n this.sincronizarCasoConFormulario();\n break;\n case 3:\n this.router.navigateByUrl('/seleccion/previa', { state: this.datos });\n this.sincronizarCasoConFormulario();\n break;\n default:\n break;\n }\n }\n\n cargarArchivo() {\n this.sincronizarCasoConFormulario();\n console.log(this.caso);\n let archivos: File[] =\n this.casoForm.get('archivosSeleccionados').value || [];\n\n this.apiService.postCasoTmpUpload(archivos).subscribe({\n next: (resp: any[]) => {\n if (resp) {\n let toSave: any[] = [...archivos, ...resp];\n localStorage.setItem('archivos', JSON.stringify(toSave));\n this.caso.archivosSeleccionados = toSave;\n } else {\n localStorage.removeItem('archivos');\n }\n },\n error: (err) => {\n console.error('Hubo un error al cargar los archivos', err);\n },\n });\n this.sincronizarCasoConFormulario();\n console.log(this.caso);\n }\n\n traerAbogados() {\n let hora = Date.now();\n this.apiService\n .getAbogadosDisponiblesLlamada(\n +this.caso.especialidad.id_especialidad,\n hora,\n +this.caso.localidad.id_localidad\n )\n .subscribe(\n (respuesta) => {\n this.datos.abogados = respuesta;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n async onSubmit() {\n this.sincronizarCasoConFormulario();\n console.log(this.caso);\n let archivos: File[] =\n this.casoForm.get('archivosSeleccionados').value || [];\n\n this.apiService.postCasoTmpUpload(archivos).subscribe({\n next: (resp: any[]) => {\n if (resp) {\n let toSave: any[] = [...archivos, ...resp];\n localStorage.setItem('archivos', JSON.stringify(toSave));\n this.caso.archivosSeleccionados = toSave;\n } else {\n localStorage.removeItem('archivos');\n }\n },\n error: (err) => {\n console.error('Hubo un error al cargar los archivos', err);\n },\n });\n this.sincronizarCasoConFormulario();\n console.log(this.caso);\n }\n}\n","
\n \n {{ \"Resumen del Caso\" | translate }}\n \n\n \n \n {{ caso.titulo }}\n \n\n \n
\n {{ \"Detalles:\" | translate }}\n

{{ caso.detalles }}

\n
\n
\n {{ \"Jurisdicción:\" | translate }}\n {{ caso.jurisdiccion.nombre }}\n
\n
\n {{ \"Localidad:\" | translate }}\n {{ caso.localidad.nombre }}\n
\n
\n {{ \"Especialidad:\" | translate }}\n {{ caso.especialidad.nombre }}\n
\n
\n {{ \"Categoría:\" | translate }}\n {{ caso.categoria.nombre }}\n
\n
\n\n \n

{{ \"revisarNue.archivos\" | translate }}

\n 0\n \"\n >\n
\n {{ archivo.nombre }}\n
\n
\n \n No se cargó adjunto\n \n \n\n
\n \n \n
\n \n\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TiposCasoCode } from 'src/app/enums/TiposCasoCode';\nimport { FilesService } from 'src/app/utils/files.service';\n\nimport { ApiService } from '../../../../../../api/api.service';\nimport { MatSnackBar, MatSnackBarConfig } from '@angular/material/snack-bar';\nimport { CurrentTimeService } from '../../../../../../utils/currentTime/current-time.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatDialogRef } from '@angular/material/dialog';\n\n@Component({\n selector: 'app-popup-dialog',\n templateUrl: './popup-dialog.component.html',\n styleUrls: ['./popup-dialog.component.css'],\n})\nexport class PopupDialogComponent implements OnInit {\n caso: any;\n\n edit: boolean = false;\n desactivarSubmit = false;\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private _snackBar: MatSnackBar,\n private apiService: ApiService,\n private router: Router,\n private fileSrv: FilesService,\n private currentTimeSrv: CurrentTimeService,\n public translate: TranslateService,\n public dialogRef: MatDialogRef\n ) {\n this.caso = data.caso;\n console.log('Caso:', this.caso);\n\n translate.addLangs(['es-AR', 'it-IT', 'en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n cerrar(): void {\n this.dialogRef.close();\n }\n\n guardar(): void {\n this.dialogRef.close();\n }\n\n ngOnInit(): void {\n let caso = JSON.parse(localStorage.getItem('caso-edit'));\n if (caso != null) {\n this.edit = true;\n }\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n atras() {\n window.history.back();\n }\n\n openSnackBar(message: string, action: string) {\n this._snackBar.open(message, action, {\n panelClass: ['snackbar-custom', 'snackbar-custom-action'],\n duration: 5000,\n });\n }\n\n onSubmit() {\n let timeStamp = this.currentTimeSrv.getTimeStamp();\n let timeZone = '';\n this.apiService.getCountry().subscribe(\n (res) => {\n timeZone = res.countryCode;\n this.postCaso(timeStamp, timeZone);\n },\n (error) => {\n console.error(error);\n timeZone = this.currentTimeSrv.getTimezoneHours();\n this.postCaso(timeStamp, timeZone);\n }\n );\n }\n\n postCaso(timeStamp, timeZone) {\n let caso = JSON.parse(localStorage.getItem('caso-edit'));\n if (caso != null) {\n this.apiService\n .putCasoMail(\n caso.id_caso,\n this.caso.categoria.id_categoria,\n this.caso.detalles,\n this.caso.archivosSeleccionados,\n this.caso.localidad.id_localidad,\n this.caso.titulo,\n TiposCasoCode.EMAIL,\n timeStamp,\n timeZone\n )\n .subscribe(\n () => {\n this.router.navigate(['/casos-activos/3']);\n this.desactivarSubmit = false;\n localStorage.removeItem('caso-edit');\n this.openSnackBar('Su caso se creó con éxito', 'Ok');\n this.dialogRef.close();\n },\n (error) => {\n this.desactivarSubmit = false;\n console.error(error);\n this.openSnackBar('No fue posible publicar tu caso', 'Fracaso');\n }\n );\n } else {\n this.apiService\n .postCasoMail(\n this.caso.categoria.id_categoria,\n this.caso.detalles,\n this.caso.archivosSeleccionados,\n this.caso.localidad.id_localidad,\n this.caso.titulo,\n TiposCasoCode.EMAIL,\n timeStamp,\n timeZone\n )\n .subscribe(\n () => {\n this.router.navigate(['/casos-activos/3']);\n this.desactivarSubmit = false;\n this.openSnackBar('Su caso se creó con éxito', 'Ok');\n this.dialogRef.close();\n },\n (error) => {\n this.desactivarSubmit = false;\n console.error(error);\n this.openSnackBar('No fue posible publicar tu caso', 'Fracaso');\n }\n );\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class EnterClickService {\n\n constructor() { }\n\n public isClick($event) {\n let x = $event.offsetX;\n let y = $event.offsetY;\n let result: boolean = false;\n if(x >0 && y > 0) {\n result = true;\n }\n return result;\n }\n}\n","
\n
\n \n \n \n {{ \"casoNuevo.nuevo\" | translate }}\n {{ \"casoNuevo.editar\" | translate }}\n \n\n
\n
\n \n \n {{ \"casoNuevo.nombre\" | translate }}\n \n {{ \"casoNuevo.nombreDesc\" | translate }} {{ contadorTitulo }} /\n 55\n \n
\n \n {{ \"casoNuevo.descripcion\" | translate }}\n \n {{ \"casoNuevo.descripcionDesc\" | translate }}\n {{ contadorDetalles }} / 255\n \n


\n
\n
\n\n
\n \n
\n
\n

{{ \"casoNuevo.pais\" | translate }}*

\n \n \n {{ pais.name }}\n \n \n \n
\n
\n
\n
\n
\n

{{ \"casoNuevo.provincia\" | translate }}*

\n \n \n {{ jurisdiccion.nombre }}\n \n \n {{ \"casoNuevo.provincia\" | translate }}\n \n \n
\n\n
\n

{{ \"casoNuevo.localidad\" | translate }}*

\n \n \n {{ localidad.nombre }}\n \n {{ \"casoNuevo.localidad\" | translate }}\n \n \n
\n
\n
\n\n \n

{{ \"casoNuevo.adjuntar\" | translate }}

\n
\n \n \n
\n {{\n \"casoNuevo.adjuntarDesc\" | translate\n }}\n
\n
\n description\n
\n

\n {{\n archivo.nombreoriginal\n ? archivo.nombreoriginal\n : archivo.name\n }}\n

\n

\n {{ (archivo.size ? archivo.size : archivo.tamanio) / 100000 }}\n MB\n

\n
\n \n
\n
\n
\n
\n
\n
\n\n \n \n Especialidad\n \n {{ especialidad.nombre }}\n \n \n\n \n Categoría\n \n {{ categoria.titulo }}\n \n \n
\n\n

\n Selecciona el tipo de servicio que quieres\n

\n
\n \n \n \n {{ \"servicio.correo\" | translate }}\n

\n {{ \"servicio.correoDescripcion\" | translate }}
\n {{ \"servicio.correoDescripcion1\" | translate }}
\n {{ \"servicio.correoDescripcion2\" | translate }}
\n {{ \"servicio.correoDescripcion3\" | translate }}\n

\n
\n

{{ \"servicio.gratis\" | translate }}

\n
\n {{ \"servicio.probono\" | translate }}\n
\n
\n \n \n {{ \"servicio.revisar\" | translate }}\n \n \n
\n\n \n \n \n {{ \"servicio.cita\" | translate }}\n

\n
\n {{ \"servicio.citaDescripcion1\" | translate }}
{{\n \"servicio.citaDescripcion2\" | translate\n }}\n

\n
\n
\n\n

\n {{ \"servicio.precioCita1\" | translate }}\n \n {{ getValueFromCicloPlanAmount(planCiclo, 2, \"monto\", costPlan.Schedule) }}\n {{ \"servicio.precioCita2\" | translate }}\n

\n
\n \n \n {{ \"servicio.citaAgen\" | translate }}\n \n \n
\n\n \n \n \n {{ \"servicio.llamada\" | translate }}\n
\n

\n {{ \"servicio.llamadaDescripcion1\" | translate }}
\n {{ \"servicio.llamadaDescripcion2\" | translate }}\n

\n
\n
\n

\n {{ \"servicio.precioLlamada1\" | translate }}\n \n {{ getValueFromCicloPlanAmount(planCiclo, 3, \"monto\", costPlan.Schedule) }}\n {{ \"servicio.precioLlamada2\" | translate }}\n

\n
\n \n \n {{ \"servicio.llamadaAho\" | translate }}\n \n \n
\n
\n \n\n


\n\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IphoneScrollService {\n\n ORIGINAL_CLASS = \"casoImpar\";\n WITHOUT_HOVER = \"casoSinHover\";\n TIMER = 500;\n constructor() { }\n\n public changeClass() {\n let aux = this.ORIGINAL_CLASS;\n if (this.isIos()) {\n aux = this.WITHOUT_HOVER;\n }\n return aux;\n }\n\n public waitingScrollToFinish = async () => {\n if (this.isIos()) {\n await this.delay(this.TIMER);\n }\n return this.ORIGINAL_CLASS;\n }\n\nprivate delay = ms => new Promise(res => setTimeout(res, ms));\n\npublic isIos() {\n var isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\n return isIOS;\n }\n\n}\n","
\n
\n \n \n \n {{ \"problematica.crear\" | translate }}\n \n
\n \n \n {{ \"problematica.problematica\" | translate }}\n \n \n
\n\n
\n
\n
\n \n \n
\n {{ caso.especialidad.nombre }}\n
\n \n
\n
\n
\n
\n \n \n
\n {{ caso.especialidad.nombre }}\n
\n \n
\n
\n
\n
\n
\n \n \n
{{ categoria.titulo }}
\n \n \n
\n
\n \n \n
{{ categoria.titulo }}
\n \n
\n
\n
\n\n
\n \n {{\n caso.especialidad.nombre\n }}\n \n \n\n
\n
\n \n {{\n categoria.titulo\n }}\n \n
\n
\n \n {{ \"problematica.continuar\" | translate }}\n \n \n {{ \"problematica.continuar\" | translate }}\n \n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { FormControl, UntypedFormGroup } from '@angular/forms';\n\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Categoria } from '../../../../../api/user';\nimport { ApiService } from '../../../../../api/api.service';\n\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { IphoneScrollService } from 'src/app/services/iphone-scroll/iphone-scroll.service';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-categoria',\n templateUrl: './categoria.component.html',\n styleUrls: ['./categoria.component.css'],\n})\nexport class CategoriaComponent implements OnInit {\n constructor(\n private apiService: ApiService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n private iPhoneService: IphoneScrollService,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n this.matIconRegistry.addSvgIcon(\n `Laboral`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/Laboral.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Familia`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/individuos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Comercial y negocios`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/comercial.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Contratos`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/contratos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Defensa del Consumidor`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/defensa.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Impuestos`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/impuestos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Inmobiliaria y Propiedad Horizontal`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/inmobiliaria.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Otros`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/otros.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Penal`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/penal.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Sucesiones`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/sucesiones.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Jubilaciones y pensiones`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/previsional.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Digital`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/digital.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Daños y Perjuicios`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/perjuicios.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Sociedades`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/societario.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Accidentes de tránsito`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/accidentes.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Marcas y patentes`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/propiedad.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Mala Praxis y Salud`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/mala.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Violencia de género`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/discriminacion.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `ayuda`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/ayuda.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Reclamos al Estado o por Servicios Públicos`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/reclamos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho Aduanero y Comercio Exterior`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/aduanero.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Concursos y quiebras`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/quiebras.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Reclamos Temas Ambientales`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/derecho ambiental.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Trámites y Problemas Migratorios`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/derecho-migratorio.svg'\n )\n );\n }\n\n categoriaUnico = 'categoriaUnico';\n textoEnGridUnica = 'textoEnGridUnica';\n permitirContinuar = false;\n categorias: Categoria[];\n categoriaAnterior: any;\n masDeUno = true;\n caso = {\n titulo: '',\n detalles: '',\n jurisdiccion: {\n nombre: '',\n id_jurisdiccion: '',\n countryId: 0\n },\n localidad: {\n nombre: '',\n id_localidad: 0,\n },\n especialidad: {\n nombre: '',\n id_especialidad: 0,\n },\n categoria: {\n titulo: '',\n id_categoria: 0,\n descripcion: '',\n },\n archivosSeleccionados: [],\n };\n\n class = 'casoImpar';\n disableScroll() {\n this.class = this.iPhoneService.changeClass();\n }\n\n ngOnInit(): void {\n this.caso.titulo = history.state.titulo;\n if (this.caso.titulo == undefined) {\n this.caso = JSON.parse(localStorage.getItem('caso'));\n this.caso.detalles = this.caso.detalles;\n this.caso.jurisdiccion = this.caso.jurisdiccion;\n this.caso.localidad = this.caso.localidad;\n this.caso.especialidad = this.caso.especialidad;\n } else {\n this.caso.detalles = history.state.detalles;\n this.caso.jurisdiccion = history.state.jurisdiccion;\n this.caso.localidad = history.state.localidad;\n this.caso.especialidad = history.state.especialidad\n ? history.state.especialidad\n : 1;\n }\n\n this.caso.archivosSeleccionados = history.state.archivosSeleccionados;\n this.apiService\n .getCategoriasByPais(this.caso.especialidad.id_especialidad, this.caso.jurisdiccion.countryId)\n .subscribe(\n (categorias) => {\n this.categorias = categorias;\n if (categorias.length == 1) {\n this.permitirContinuar = true;\n this.caso.categoria = categorias[0];\n this.masDeUno = false;\n this.isOtros();\n }\n },\n (error) => {\n console.error(error);\n }\n );\n }\n casoForm = new UntypedFormGroup({});\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n atras() {\n localStorage.setItem('caso', JSON.stringify(this.caso));\n this.router.navigate(['/especialidad-nuevo']);\n }\n\n guardar(categoria) {\n if (!this.iPhoneService.isIos) {\n categoria.selected = !categoria.selected;\n }\n this.caso.categoria = categoria;\n this.permitirContinuar = true;\n if (!this.masDeUno) {\n this.categoriaUnico = 'categoriaUnicoClickeada';\n this.textoEnGridUnica = 'textoEnGridSeleccionadaUnica';\n }\n }\n\n onSubmit() {\n let caso_edit=JSON.parse(localStorage.getItem(\"caso-edit\"));\n if(caso_edit!=null && caso_edit!=undefined){\n localStorage.setItem('caso', JSON.stringify(this.caso));\n this.router.navigateByUrl('/agendadamod', { });\n }\n else{\n localStorage.setItem('caso', JSON.stringify(this.caso));\n this.router.navigateByUrl('/tipo-servicio-nuevo', { state: this.caso });\n }\n \n }\n\n isOtros() {\n if (this.caso.especialidad.nombre == 'Otros') {\n this.guardar(this.caso.categoria);\n this.onSubmit();\n }\n }\n\n down(categoria) {\n this.class = 'casoImpar';\n categoria.selected = !categoria.selected;\n if (this.categoriaAnterior) {\n this.categoriaAnterior.selected = false;\n }\n this.categoriaAnterior = categoria;\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { FormControl, UntypedFormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Planes } from '../../../../../api/planes';\nimport { ApiService } from '../../../../../api/api.service';\n// import { FilesService } from 'src/app/utils/files.service';\nimport { FilesService } from '../../../../../utils/files.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { PlanMultipagoService } from 'src/app/services/plan/plan-multipago.service';\nimport { PlanDefaultAmount } from 'src/app/components/admin/multipago/modules/multipago.model';\n\nenum PlanType {\n Mail = 'Mail',\n Schedule = 'Agenda',\n CallExpress = 'Llamada Express',\n}\n\nclass CostPlan {\n Mail: number;\n Schedule: number;\n CallExpress: number;\n ScheduleMoneda: string;\n CallExpressMoneda: string;\n}\n\n@Component({\n selector: 'app-tipo-servicio',\n templateUrl: './tipo-servicio.component.html',\n styleUrls: ['./tipo-servicio.component.css'],\n})\nexport class TipoServicioComponent implements OnInit {\n caso = {\n titulo: '',\n detalles: '',\n jurisdiccion: {\n nombre: '',\n id_jurisdiccion: 0,\n },\n localidad: {\n nombre: '',\n id_localidad: 0,\n },\n especialidad: {\n nombre: '',\n id_especialidad: 0,\n },\n categoria: {\n nombre: '',\n id_categoria: 0,\n descripcion: '',\n },\n archivosSeleccionados: [],\n };\n datos = {\n titulo: 'Llamada express',\n abogados: [],\n caso: this.caso,\n };\n costPlan: CostPlan;\n\n constructor(\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private apiService: ApiService,\n private servicePlanMultipago: PlanMultipagoService,\n private fileSrv: FilesService,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n casoForm = new UntypedFormGroup({});\n\n async ngOnInit() {\n this.caso.titulo = history.state.titulo;\n if (this.caso.titulo == undefined) {\n this.caso = JSON.parse(localStorage.getItem('caso'));\n this.caso.detalles = this.caso.detalles;\n this.caso.jurisdiccion = this.caso.jurisdiccion;\n this.caso.localidad = this.caso.localidad;\n this.caso.especialidad = this.caso.especialidad;\n this.caso.categoria = this.caso.categoria;\n this.caso.archivosSeleccionados = this.caso.archivosSeleccionados;\n\n let archivos = JSON.parse(localStorage.getItem('archivos'));\n if (archivos) {\n for (let a of archivos) {\n const { file, name } = a;\n const archivoFinal = this.fileSrv.fromBase64ToFile(file, name);\n this.caso.archivosSeleccionados.push(archivoFinal);\n }\n }\n } else {\n this.caso.detalles = history.state.detalles;\n this.caso.jurisdiccion = history.state.jurisdiccion;\n this.caso.localidad = history.state.localidad;\n this.caso.especialidad = history.state.especialidad;\n this.caso.categoria = history.state.categoria;\n this.caso.archivosSeleccionados = history.state.archivosSeleccionados;\n }\n // let base64Files = [];\n\n // if (this.caso.archivosSeleccionados) {\n // for (let a of this.caso.archivosSeleccionados) {\n // const convertedFile = await this.fileSrv.fromFileToBase64(a);\n // base64Files.push({ file: convertedFile, name: a.name });\n // }\n // localStorage.setItem('archivos', JSON.stringify(base64Files));\n // } else {\n // localStorage.removeItem('archivos');\n // }\n\n var plans: Planes[];\n this.costPlan = new CostPlan();\n\n this.apiService.getPlanes().subscribe(\n (planes) => {\n plans = planes;\n this.setCost(plans);\n\n this.servicePlanMultipago.getPlanDefaultAmounts(0, this.caso.jurisdiccion.id_jurisdiccion, [2, 3]).subscribe({\n next: (result: PlanDefaultAmount[]) => {\n this.setDefaultCost(result);\n console.log(result.length);\n }\n });\n },\n (error) => {\n console.error(error);\n }\n );\n this.traerAbogados();\n console.log(this.caso);\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n atras() {\n if (this.caso.especialidad.nombre == 'Otros') {\n this.router.navigate(['/especialidad-nuevo']);\n } else {\n this.router.navigate(['/categoria-nuevo']);\n }\n }\n\n traerAbogados() {\n let hora = Date.now();\n this.apiService\n .getAbogadosDisponiblesLlamada(\n this.caso.especialidad.id_especialidad,\n hora,\n this.caso.localidad.id_localidad\n )\n .subscribe(\n (respuesta) => {\n this.datos.abogados = respuesta;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n navegar(destino) {\n switch (destino) {\n case 1:\n this.router.navigateByUrl('/revisar-nuevo', { state: this.caso });\n break;\n case 2:\n this.router.navigateByUrl('/rango', { state: this.datos });\n break;\n case 3:\n this.router.navigateByUrl('/seleccion/previa', { state: this.datos });\n default:\n break;\n }\n }\n\n setDefaultCost(planAmounts: PlanDefaultAmount[]): void {\n planAmounts.forEach((planAmount: PlanDefaultAmount) => {\n switch (planAmount.planId) {\n case 2:\n this.costPlan.Schedule = planAmount.monto;\n this.costPlan.ScheduleMoneda = planAmount.monedaId;\n break;\n case 3:\n this.costPlan.CallExpress = planAmount.monto;\n this.costPlan.CallExpressMoneda = planAmount.monedaId;\n break;\n }\n });\n }\n\n setCost(plans: Planes[]) {\n this.costPlan.Mail = plans.find((x) => x.nombre == PlanType.Mail).costo;\n this.costPlan.Schedule = plans.find(\n (x) => x.nombre == PlanType.Schedule\n ).costo;\n this.costPlan.CallExpress = plans.find(\n (x) => x.nombre == PlanType.CallExpress\n ).costo;\n }\n}\n","
\n \n \n \n {{ \"revisarNue.caso\" | translate }}\n \n
\n \n \n {{ \"revisarNue.Descrip\" | translate }}\n \n \n
\n\n \n \n {{ this.caso.titulo }}\n Categoria del caso: {{ this.caso.categoria.titulo }}\n \n \n \n

{{ \"revisarNue.jurisdiccion\" | translate }}

\n \n place{{ this.caso.jurisdiccion.nombre }}\n \n
\n {{ this.caso.localidad.nombre }}\n
\n
\n
\n

{{ \"revisarNue.descripCaso\" | translate }}

\n {{ this.caso.detalles }}\n

\n
\n
\n *{{ \"revisarNue.msg2month\" | translate }}\n
\n
\n

{{ \"revisarNue.archivos\" | translate }}

\n \n
\n\n \n \n {{ \"revisarNue.actualizar\" | translate }}\n \n \n {{ \"revisarNue.crear\" | translate }}\n \n \n \n

\n
\n","
\n \n \n \n {{ \"servicio.crear\" | translate }}\n \n\n
\n \n \n {{ \"servicio.descripcion\" | translate }}\n Elige como contactarte con
tu Abogado
\n
\n \n
\n\n
\n \n \n \n {{ \"servicio.correo\" | translate }}\n

\n {{ \"servicio.correoDescripcion\"| translate }}
\n {{ \"servicio.correoDescripcion1\"| translate }}
\n {{ \"servicio.correoDescripcion2\"| translate}}
\n {{ \"servicio.correoDescripcion3\"| translate}}\n

\n
\n

{{ \"servicio.gratis\" | translate }}

\n
{{ \"servicio.probono\" | translate }}
\n
\n \n \n \n
\n\n \n \n \n {{ \"servicio.cita\" | translate }}\n

\n
\n {{ \"servicio.citaDescripcion1\" | translate }}
{{\n \"servicio.citaDescripcion2\" | translate\n }} \n

\n
\n
\n \n

\n {{ \"servicio.precioCita1\" | translate }} \n {{ costPlan.ScheduleMoneda ? costPlan.ScheduleMoneda : '$' }}\n {{ costPlan.Schedule }}\n {{ \"servicio.precioCita2\" | translate }}\n

\n
\n \n \n \n
\n\n \n \n \n {{ \"servicio.llamada\" | translate }}\n
\n

\n {{ \"servicio.llamadaDescripcion1\" | translate }}
\n {{ \"servicio.llamadaDescripcion2\" | translate }}\n

\n
\n
\n

\n {{ \"servicio.precioLlamada1\" | translate }}\n {{ costPlan.CallExpressMoneda ? costPlan.CallExpressMoneda : '$' }}\n {{ costPlan.CallExpress }} {{ \"servicio.precioLlamada2\" | translate }}\n

\n
\n \n \n \n
\n
\n


\n
\n","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { TiposCasoCode } from 'src/app/enums/TiposCasoCode';\nimport { FilesService } from 'src/app/utils/files.service';\n\nimport { ApiService } from '../../../../../api/api.service';\nimport { Caso } from '../../../../../api/user';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { CurrentTimeService } from '../../../../../utils/currentTime/current-time.service';\nimport { TranslateService } from '@ngx-translate/core';\n@Component({\n selector: 'app-revisar',\n templateUrl: './revisar.component.html',\n styleUrls: ['./revisar.component.css'],\n})\nexport class RevisarComponent implements OnInit {\n caso = {\n titulo: '',\n detalles: '',\n jurisdiccion: {\n nombre: '',\n id_jurisdiccion: 0,\n },\n localidad: {\n nombre: '',\n id_localidad: 0,\n },\n especialidad: {\n nombre: '',\n id_especialidad: 0,\n },\n categoria: {\n titulo: '',\n id_categoria: 0,\n descripcion: '',\n },\n archivosSeleccionados: [],\n };\n\n edit:boolean=false\n desactivarSubmit = false;\n constructor(\n private _snackBar: MatSnackBar,\n private apiService: ApiService,\n private router: Router,\n private fileSrv: FilesService,\n private currentTimeSrv: CurrentTimeService,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n ngOnInit(): void {\n let caso = JSON.parse(localStorage.getItem('caso-edit'));\n if(caso!=null){this.edit=true}\n\n\n this.caso.titulo = history.state.titulo\n ? history.state.titulo\n : this.caso.titulo;\n this.caso.detalles = history.state.detalles\n ? history.state.detalles\n : this.caso.detalles;\n this.caso.jurisdiccion = history.state.jurisdiccion\n ? history.state.jurisdiccion\n : this.caso.jurisdiccion;\n this.caso.localidad = history.state.localidad\n ? history.state.localidad\n : this.caso.localidad;\n this.caso.especialidad = history.state.especialidad\n ? history.state.especialidad\n : this.caso.especialidad;\n this.caso.categoria = history.state.categoria\n ? history.state.categoria\n : this.caso.categoria;\n this.caso.archivosSeleccionados = history.state.archivosSeleccionados;\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n atras() {\n window.history.back();\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n\n onSubmit() {\n this.desactivarSubmit = true;\n let archivos = JSON.parse(localStorage.getItem('archivos'));\n this.caso.archivosSeleccionados = archivos;\n let timeStamp = this.currentTimeSrv.getTimeStamp();\n let timeZone = '';\n this.apiService.getCountry().subscribe(\n (res) => {\n timeZone = res.countryCode;\n this.postCaso(timeStamp, timeZone);\n },\n (error) => {\n console.error(error);\n timeZone = this.currentTimeSrv.getTimezoneHours();\n this.postCaso(timeStamp, timeZone);\n }\n );\n }\n\n postCaso(timeStamp, timeZone) {\n let caso = JSON.parse(localStorage.getItem('caso-edit'));\n if(caso!=null){\n this.apiService\n .putCasoMail(\n caso.id_caso,\n this.caso.categoria.id_categoria,\n this.caso.detalles,\n this.caso.archivosSeleccionados,\n this.caso.localidad.id_localidad,\n this.caso.titulo,\n TiposCasoCode.EMAIL,\n timeStamp,\n timeZone\n )\n .subscribe(\n () => {\n this.router.navigate(['/finalizada-nuevo']);\n this.desactivarSubmit = false;\n localStorage.removeItem(\"caso-edit\");\n },\n (error) => {\n this.desactivarSubmit = false;\n console.error(error);\n this.openSnackBar('No fue posible publicar tu caso');\n }\n );\n\n }\n else{\n\n this.apiService\n .postCasoMail(\n this.caso.categoria.id_categoria,\n this.caso.detalles,\n this.caso.archivosSeleccionados,\n this.caso.localidad.id_localidad,\n this.caso.titulo,\n TiposCasoCode.EMAIL,\n timeStamp,\n timeZone\n )\n .subscribe(\n () => {\n this.router.navigate(['/finalizada-nuevo']);\n this.desactivarSubmit = false;\n },\n (error) => {\n this.desactivarSubmit = false;\n console.error(error);\n this.openSnackBar('No fue posible publicar tu caso');\n }\n );\n\n }\n \n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-finalizada',\n templateUrl: './finalizada.component.html',\n styleUrls: ['./finalizada.component.css'],\n})\nexport class FinalizadaComponent implements OnInit {\n constructor(public translate: TranslateService) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n ngOnInit(): void {}\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n}\n","
\n \n \n {{ \"finalizada.crear\" | translate }}\n \n
\n \n \n {{ \"finalizada.finalizada\" | translate }}\n \n \n
\n \n
\n
\n \n

{{ \"finalizada.exito\" | translate }}

\n {{\n \"finalizada.correo\" | translate\n }}\n \n {{ \"finalizada.casos\" | translate }}\n \n \n
\n
\n
\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Subject } from 'rxjs';\nimport { UtilService } from 'src/app/services/util.service';\n\n@Component({\n selector: 'app-dialogo-confirmar',\n templateUrl: './dialogo-confirmar.component.html',\n styleUrls: ['./dialogo-confirmar.component.css']\n})\nexport class DialogoConfirmarComponent implements OnInit {\n\n result: boolean;\n\n subjectResult: Subject = new Subject();\n\n title: string;\n\n message: string;\n\n constructor(@Inject(MAT_DIALOG_DATA) private data: any,\n public dialogRef: MatDialogRef,\n public translate: TranslateService,\n private serviceUtil: UtilService\n ) {\n serviceUtil.doPreparePageTranslate(translate);\n\n this.title = data.title ?? '';\n this.message = data.message ?? '';\n }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
\n

{{title}}

\n \n
\n
\n {{message}}\n
\n
\n \n \n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { FormatDateService } from 'src/app/utils/formatDate/formatDate.service.';\nimport { ApiService } from '../../../../../api/api.service';\nimport { PlanService } from 'src/app/services/plan/plan.service';\nimport { CasoDetallado } from '../../../../../api/user';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SenderService } from 'src/app/services/sender.service';\nimport { PlanMultipagoService } from 'src/app/services/plan/plan-multipago.service';\nimport { MatDialog } from '@angular/material/dialog';\nimport { DialogoConfirmarComponent } from 'src/app/components/commons/dialogo/dialogo-confirmar/dialogo-confirmar.component';\nimport { Observable, Subject, forkJoin, observable } from 'rxjs';\n\nenum CaseType {\n Open = 'a',\n Close = 'c',\n}\n\n@Component({\n selector: 'app-activos',\n templateUrl: './activos.component.html',\n styleUrls: ['./activos.component.css'],\n})\nexport class ActivosComponent implements OnInit {\n language:String=\"\";\n constructor(\n private _snackBar: MatSnackBar,\n public dialog: MatDialog,\n private router: Router,\n private route: ActivatedRoute,\n private apiService: ApiService,\n private planService: PlanService,\n private servicePlanMP: PlanMultipagoService,\n private formatDateService: FormatDateService,\n public translate: TranslateService,\n private service: SenderService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n if(sessionStorage.getItem('language')==null){\n sessionStorage.setItem('language','es-AR');\n translate.setDefaultLang('es-AR');\n \n }\n else{\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n console.log('ASD: ' + sessionStorage.getItem('language'));\n }\n\n casosAbiertos: any[];\n terminoCarga: boolean = false;\n casosCerrados: CasoDetallado[];\n hayCasosAbiertos = true;\n hayCasosCerrados = false;\n soyCliente = true;\n rolId = 0;\n crearOBuscar = '';\n LIMITE_CASOS = 6;\n LIMITE_TITULO = 38;\n LIMITE_CATEGORIA = 50;\n paginaCasos: number;\n mostrarMas: boolean = true;\n paginateLeftOpen = false;\n paginateRightOpen = false;\n paginateLeftClosed = false;\n paginateRightClosed = false;\n caseType: CaseType;\n nippy: boolean;\n companyLogo: string;\n fecha=new Date();\n\n cargarMasCasos(type: CaseType, destino: number) {\n const ATRAS = 0;\n const ADELANTE = 1;\n\n switch (destino) {\n case ATRAS: {\n if (this.paginaCasos > 0) {\n this.paginaCasos--;\n }\n break;\n }\n case ADELANTE: {\n this.paginaCasos++;\n break;\n }\n }\n this.loadCases(this.paginaCasos, type);\n }\n\n switchLang(lang: string) {\n sessionStorage.setItem('language',lang);\n this.language = lang;\n this.translate.use(lang);\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n\n clickTab(event) {\n this.paginaCasos = 0;\n this.paginateRightOpen = false;\n this.paginateLeftOpen = false;\n this.paginateRightClosed = false;\n this.paginateLeftClosed = false;\n\n if (event.tab.textLabel == 'ABIERTOS') {\n this.loadCases(this.paginaCasos, CaseType.Open);\n } else {\n this.loadCases(this.paginaCasos, CaseType.Close);\n }\n }\n\n asignarClasesEstados(caso) {\n let clase = '';\n switch (caso.estado) {\n case 'Pendiente de Puntuación':\n clase = 'pendientePuntuacion';\n break;\n case 'Pendiente de Aceptación':\n clase = 'aceptacion-seleccion';\n break;\n case 'Pendiente de selección':\n clase = 'aceptacion-seleccion';\n break;\n case 'Tomado':\n clase = 'ganado-tomado';\n break;\n case 'Seleccionado':\n clase = 'ganado-tomado';\n break;\n case 'Cita Agendada':\n clase = 'citaAgendada';\n break;\n case 'Llamada Express':\n clase = 'llamadaExpress';\n break;\n case 'No seleccionado':\n clase = 'noSeleccionado';\n break;\n case 'Finalizado':\n clase = 'finalizado';\n break;\n }\n\n if (caso.estado.includes('Abogados Disponibles')) {\n clase = 'abogadosDisponibles';\n }\n return clase;\n }\n\n getDaysDiff(now,fechacreacion,tipo,estado){\n let del = false;\n if(estado.includes(\"Pendiente de Aceptación\") || estado.includes(\"Abogados Disponibles\")){\n if(tipo=='Email'){\n let days =Math.floor((fechacreacion-now)/1000/60/60/24);\n del = days>30?true:false;\n }\n else{\n del=true;\n }\n }\n return del;\n }\n\n loadCases(page: number, type: CaseType) {\n this.fecha=new Date();\n this.fecha.getTime();\n this.terminoCarga = false;\n this.apiService.getCasos(page, type, this.LIMITE_CASOS).subscribe(\n (casos) => {\n if (casos.length == 0) {\n if (type == CaseType.Open) this.hayCasosAbiertos = false;\n else this.hayCasosCerrados = false;\n } else {\n let casesFormated = casos;\n // var casesFormated = this.formatDateService.convertDateToLocalByAttribute(casos, \"fechaCreacion\");\n // var casesFormated = this.formatDateService.convertDateToUTCByAttribute(casos, \"fechaCreacion\");\n if (type == CaseType.Open) {\n this.paginateRightOpen = casesFormated.length >= this.LIMITE_CASOS;\n if (this.paginateRightOpen) {\n this.apiService\n .getCasos(page + 1, type, this.LIMITE_CASOS)\n .subscribe(\n (response) => {\n if (response.length == 0) {\n this.paginateRightOpen = false;\n }\n },\n (error) => {\n this.openSnackBar(\n 'No fue posible cargar la lista de casos'\n );\n }\n );\n }\n this.paginateLeftOpen = this.paginaCasos != 0;\n if (!this.paginateRightOpen) {\n casesFormated = casesFormated.slice(0, this.LIMITE_CASOS - 1);\n }\n } else {\n this.paginateRightClosed =\n casesFormated.length >= this.LIMITE_CASOS;\n this.paginateLeftClosed = this.paginaCasos != 0;\n if (this.paginateRightClosed) {\n this.apiService\n .getCasos(page + 1, type, this.LIMITE_CASOS)\n .subscribe(\n (response) => {\n if (response.length == 0) {\n this.paginateRightClosed = false;\n }\n },\n (error) => {\n this.openSnackBar(\n 'No fue posible cargar la lista de casos'\n );\n }\n );\n }\n if (!this.paginateRightClosed) {\n casesFormated = casesFormated.slice(0, this.LIMITE_CASOS - 1);\n }\n }\n casesFormated.map((caso) => {\n caso['clase'] = this.asignarClasesEstados(caso);\n if (caso.titulo.length > this.LIMITE_TITULO) {\n caso.tituloAlterado =\n caso.titulo.substring(0, this.LIMITE_TITULO) + '...';\n } else {\n caso.tituloAlterado = caso.titulo;\n }\n if (caso.categoria.titulo.length > this.LIMITE_CATEGORIA) {\n caso.categoria.tituloAlterado =\n caso.categoria.titulo.substring(0, this.LIMITE_CATEGORIA) +\n '...';\n } else {\n caso.categoria.tituloAlterado = caso.categoria.titulo;\n }\n });\n if (type == CaseType.Open) {\n this.hayCasosAbiertos = true;\n this.casosAbiertos = casesFormated;\n } else {\n this.hayCasosCerrados = true;\n this.casosCerrados = casesFormated;\n }\n }\n this.terminoCarga = true;\n },\n (error) => {\n this.openSnackBar('No fue posible cargar la lista de casos');\n console.error(error);\n this.terminoCarga = true;\n }\n );\n }\n\n ngOnInit(): void {\n //this.nippy = this.service.nippy;\n this.nippy = sessionStorage.nippy;\n this.companyLogo = sessionStorage.companyLogo;\n console.log('NIPPY ' + this.nippy);\n this.paginaCasos = 0;\n localStorage.setItem('entro', 'si');\n this.route.paramMap.subscribe((params) => {\n this.rolId = params['params'].rolId;\n console.log(params);\n\n if (this.rolId == 2) {\n this.servicePlanMP.doAbogadoValidarIncrease().subscribe({\n next: () => {\n console.log(\"validacion de migracion a increase - final.\");\n }\n });\n }\n });\n if (this.rolId == 3) {\n this.crearOBuscar = 'crear ';\n localStorage.removeItem('caso');\n this.soyCliente = true;\n } else {\n this.crearOBuscar = 'buscar ';\n this.soyCliente = false;\n }\n this.loadCases(this.paginaCasos, CaseType.Open);\n this.loadCases(this.paginaCasos, CaseType.Close);\n }\n\n detalles(caso) {\n const rol = this.rolId;\n this.router.navigateByUrl('/detalles', { state: { caso, rol } });\n }\n\n doDeleteConfirm(caso) {\n forkJoin(this.translate.get(\"dialog.confirm.delete.header\"), this.translate.get(\"dialog.confirm.delete.message\")).subscribe({\n next: (resp: string []) => {\n const dialogRef = this.dialog.open(DialogoConfirmarComponent, {\n data: {\n title: resp[0],\n message: resp[1]\n }\n });\n\n dialogRef.afterClosed().subscribe({\n next: data => {\n console.log(\"dialog close with: \" + data);\n if (data) {\n this.delete(caso);\n }\n }\n });\n }\n })\n }\n\n delete(caso){\n this.apiService.borrarCaso(caso.id_caso).subscribe(\n (response) => {\n if(response.estado==\"Ok\"){\n this.casosAbiertos=[];\n this.casosCerrados=[];\n \n this.loadCases(this.paginaCasos, CaseType.Open);\n this.loadCases(this.paginaCasos, CaseType.Close);\n }\n else{\n this.openSnackBar('No se puede eliminar el caso');\n }\n \n },\n (error) => {\n this.openSnackBar('No fue posible cargar la lista de casos');\n console.error(error);\n this.terminoCarga = true;\n });\n }\n\n edit(caso){\n localStorage.setItem(\"caso\",JSON.stringify(caso));\n localStorage.setItem(\"caso-edit\",JSON.stringify(caso));\n this.router.navigate(['/edit-caso']);\n }\n\n navegar = () => {\n if (this.rolId == 3) {\n localStorage.removeItem('caso');\n localStorage.removeItem('caso-edit');\n this.router.navigate(['/crear-nuevo']);\n } else {\n this.router.navigate(['/oportunidades']);\n }\n };\n}\n","export enum EstadoCaso {\n FINALIZADO = \"Finalizado\",\n PENDIENTE_PUNTUACION = \"Pendiente de Puntuación\",\n CITA_AGENDADA = \"Cita Agendada\",\n LLAMADA_EXPRESS = \"Llamada Express\",\n TOMADO = \"Tomado\",\n PENDIENTE_ACEPTACION = \"Pendiente de Aceptación\",\n PERDIDO = \"Perdido\",\n PENDIENTE_SELECCION = \"Pendiente de selección\",\n GANADO = \"Ganado\"\n}\nexport namespace EstadoCaso {\n export function getEstadoFromString(str: string): string {\n let out = null;\n Object.keys(EstadoCaso).forEach(key => {\n if (EstadoCaso[key] == str) {\n out = key;\n }\n });\n return out;\n }\n}","
\n
\n
\n
\n \n
\n
\n \n
\n\n \n\n \n
\n
\n
\n
\n
\n \n
\n
\n \n
\n \n \n
\n
\n\n \n \n
\n \n

\n
\n

{{ \"casosActivos.desc\" | translate }}

\n
\n
\n

{{ \"casosActivos.desc\" | translate }}

\n
\n
\n
\n

\n
\n

{{ \"casosActivos.desc\" | translate }}

\n
\n
\n

{{ \"casosActivos.desc\" | translate }}

\n
\n
\n
\n \n
\n
\n
\n
\n \n \n
\n

{{ caso.estado | translate }}

\n

\n {{ caso.fechaCreacion | date: \"dd/MM/yyy\" }} \n

\n
\n
\n \n {{\n caso.tituloAlterado\n }}\n {{ \"casosActivos.categoria\" | translate }}:\n {{ caso.categoria.tituloAlterado }}\n\n
\n\n \n place{{ caso.localidad.jurisdiccion.nombre }}\n \n
\n {{ caso.localidad.nombre }}\n
\n
\n
\n

{{ \"casosActivos.categoria\" | translate }}

\n {{ caso.categoria.titulo }}\n
\n
\n
\n

{{ \"casosActivos.especialidad\" | translate }}

\n {{ caso.especialidad.nombre }}\n\n
\n\n
\n
\n \n
\n \n \n \n\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n \n {{ \"casosActivos.crear\" | translate }}\n \n
\n
\n \n {{ \"casosActivos.crear\" | translate }}\n \n
\n
\n
\n \n \n \n \n \n \n
\n
\n \n \n
\n \n
\n

\n
\n

{{ \"casosActivos.descCerr\" | translate }}

\n
\n
\n

{{ \"casosActivos.descCerr\" | translate }}

\n
\n
\n
\n
\n
\n \n \n
\n

{{ caso.estado }}

\n

\n {{ caso.fechaCreacion | date: \"dd/MM/yyy\" }}\n

\n
\n
\n \n {{\n caso.tituloAlterado\n }}\n Categoría:\n {{ caso.categoria.tituloAlterado }}\n \n
\n \n
\n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n
\n \n\n
\n\n","
\n \n \n \n {{ \"detalles.detalles\" | translate }}\n \n\n
\n
\n \n
\n
\n \n \n
\n
\n
\n {{ datos.abogado.nombre }} {{ datos.abogado.apellido }}\n \n {{\n \"detalles.abogado\" | translate\n }}\n \n {{ mailAbogado }}\n \n
\n {{ telefono }}\n \n {{ \"detalles.llamar\" | translate }}\n \n
\n
\n
\n
\n
\n
\n\n
\n
\n \n
\n
\n \n {{\n \"detalles.disponibles\" | translate\n }}\n
\n \n {{ \"detalles.seleccionar\" | translate }}\n \n
\n
\n
\n star\n

{{ \"detalles.preg\" | translate }} {{ textoParaCalificar }}?

\n {{\n \"detalles.calificar\" | translate\n }}\n \n {{ \"detalles.calificarBtn\" | translate }}\n \n
\n
\n
\n
\n \n \n

{{ caso.estado }}

\n

{{ caso.fechaCreacion | date: \"dd/MM/yyy\" }}

\n
\n
\n \n

\n {{datos.cliente.nombre}} \n {{datos.cliente.pais}}\n {{datos.cliente.mail}}\n {{telefono}} \n\n \n {{globalCliente.nombre}} \n {{datos.cliente.pais}} \n {{globalCliente.mail}}\n \n {{globalCliente.datosUsuario[0].telefono}}   \n \n \n \n
\n


\n {{ caso.titulo }}\n {{ caso.categoria }}\n
\n
\n
\n

{{ \"detalles.jurisdiccion\" | translate }}

\n \n place{{ caso.jurisdiccion }}\n \n
\n {{ caso.localidad }}\n
\n
\n
\n

{{ \"detalles.descripcion\" | translate }}

\n {{ caso.descripcion }}\n

\n
\n
\n

{{ \"detalles.archivos\" | translate }}

\n \n
\n
\n
\n

{{ \"detalles.cita\" | translate }}

\n {{ \"detalles.fecha\" | translate }} {{ fecha }}\n {{ \"detalles.hora\" | translate }} {{ hora }}\n {{ \"detalles.correoAbo\" | translate }}\n {{ mailAbogado }}\n \n {{ \"detalles.correoCli\" | translate }}\n {{ mailCliente }}\n \n
\n
\n
\n
\n
\n
\n","import { Component, NgZone, OnInit } from '@angular/core';\nimport { FormControl, UntypedFormGroup } from '@angular/forms';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { ApiService } from '../../../../../api/api.service';\nimport { ListaArchivos } from '../../../../../api/user';\nimport { Location } from '@angular/common';\nimport { environment } from '../../../../../../environments/environment';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { EstadoCaso } from 'src/app/enums/EstadoCaso';\n\nimport { FormatDateService } from '../../../../../utils/formatDate/formatDate.service.';\nimport { StorageService } from '../../../../../utils/storage/storage.service';\nimport { AuthenticationService } from '../../../../../services/authentication/authentication.service';\nimport { Role } from '../../../../../enums/role';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Provincia } from '../../../../../api/Provincia';\n\n@Component({\n selector: 'app-detalles',\n templateUrl: './detalles.component.html',\n styleUrls: ['./detalles.component.css'],\n})\nexport class DetallesComponent implements OnInit {\n fecha: any;\n hora: any;\n fechaCompletaString: string;\n fechaCompletaDate: Date;\n\n mailAbogado = '';\n mailCliente = '';\n mail = '';\n idProfesionalAsignado: number;\n\n caso = {\n zonaHoraria: '',\n titulo: '',\n descripcion: '',\n categoria: '',\n localidad: '',\n jurisdiccion: '',\n estado: '',\n fechaCreacion: '',\n id_caso: 0,\n clase: '',\n tipo: '',\n detalles: {\n fecha: new Date(),\n },\n profesionalAsignado: {\n id_usuario: 0,\n },\n especialidad: {\n id_especialidad: 0,\n nombre: '',\n nombreCliente: '',\n },\n };\n\n seleccionado = false;\n seleccion = {\n abogado: '',\n };\n\n noSoyAbogado:boolean;\n miRol: number;\n textoParaCalificar = '';\n\n datos = {\n titulo: 'Detalle del caso',\n id_caso: 0,\n tituloDelCaso: '',\n abogado: null,\n categoriaCaso: '',\n cliente: {\n nombre:'',\n mail:'',\n pais:''\n },\n rolActual: 0,\n abogados: [\n {\n nombre: 'perez',\n apellido: 'cruz',\n },\n {\n nombre: 'juana',\n apellido: 'de arco',\n },\n {\n nombre: 'pepe',\n apellido: 'williams',\n },\n ],\n };\n\n pais : any;\n estado = '';\n hayAbogadosParaElegir = false;\n finalizado = false;\n perdido = false;\n listaArchivos: ListaArchivos[];\n abogadosDisponibles: [];\n abogado: any;\n avatarUrl: string;\n tieneFoto = false;\n elegiste = false;\n esLlamada = false;\n esCita = false;\n telefono = '';\n nombre = 'aa';\n apellido = 'bb';\n idCliente;\n abogadosChequeados: boolean = false;\n usuarioActualId: number;\n\n formatCulture: string = 'full';\n culture: string = 'es-AR';\n formatDateBackend: string = 'yyyy-MM-ddTHH:mm:ss';\n\n constructor(\n private formatDateService: FormatDateService,\n private storageService: StorageService,\n private matIconRegistry: MatIconRegistry,\n private authenticationService: AuthenticationService,\n private domSanitizer: DomSanitizer,\n private router: Router,\n private route: ActivatedRoute,\n private apiService: ApiService,\n private _location: Location,\n private ngZone: NgZone,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n this.matIconRegistry.addSvgIcon(\n `alert`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../assets/alert.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `whatsapp`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../assets/whatsapp.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `perfil`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../assets/perfil.svg'\n )\n );\n if (this.router.getCurrentNavigation().extras.state) {\n if (this.router.getCurrentNavigation().extras.state.estado == 's') {\n this.getAbogado();\n }\n }\n }\n\n hayCasosAbiertos = true;\n hayCasosCerrados = true;\n rolId = 0;\n crearOBuscar = '';\n async ngOnInit() {\n this.getRol();\n this.usuarioActualId = parseInt(localStorage.getItem('usuarioActualId'));\n if (history.state.navigationId != 1) {\n console.log(\"0310 HIS\");\n this.caso.titulo = history.state.caso.titulo;\n this.caso.zonaHoraria = history.state.caso.zonaHoraria;\n this.caso.especialidad = history.state.caso.especialidad;\n if (history.state.caso.profesionalAsignado) {\n this.idProfesionalAsignado =\n history.state.caso.profesionalAsignado.id_usuario;\n }\n this.caso.profesionalAsignado.id_usuario = this.idProfesionalAsignado;\n this.datos.tituloDelCaso = this.caso.titulo;\n this.datos.categoriaCaso = history.state.caso.categoria.titulo;\n this.caso.descripcion = history.state.caso.descripcion;\n this.caso.localidad = history.state.caso.localidad.nombre;\n this.caso.categoria = history.state.caso.categoria.titulo;\n this.caso.jurisdiccion = history.state.caso.localidad.jurisdiccion.nombre;\n this.caso.estado = history.state.caso.estado;\n this.caso.clase = history.state.caso.clase;\n this.caso.tipo = history.state.caso.tipo;\n this.caso.fechaCreacion = history.state.caso.fechaCreacion;\n this.caso.id_caso = history.state.caso.id_caso;\n this.datos.id_caso = this.caso.id_caso;\n this.idCliente = history.state.caso.usuarioId;\n localStorage.setItem('usuarioId', this.idCliente);\n this.datos.rolActual = history.state.rol;\n localStorage.setItem('rolActual', this.datos.rolActual.toString());\n if (history.state.caso.detalles) {\n this.caso.detalles.fecha = history.state.caso.detalles.fecha;\n }\n } else {\n console.log(\"0310 HIS L\");\n this.caso = JSON.parse(localStorage.getItem('caso'));\n if (this.caso.profesionalAsignado) {\n this.idProfesionalAsignado = this.caso.profesionalAsignado.id_usuario;\n }\n this.caso.id_caso = this.caso.id_caso;\n this.idCliente = localStorage.getItem('usuarioId');\n this.datos.rolActual = parseInt(localStorage.getItem('rolActual'), 10);\n this.pidoListaArchivos();\n }\n if (this.caso.estado === 'Finalizado' || this.caso.estado === 'Perdido') {\n this.finalizado = true;\n }\n if (this.caso.estado === 'Perdido') {\n this.perdido = true;\n }\n if (this.caso.detalles) {\n if (this.caso.detalles.fecha) {\n let aux = this.caso.detalles.fecha;\n this.fechaCompletaDate = new Date(aux);\n if (this.caso.tipo === 'Agenda') {\n this.esCita = true;\n } else {\n this.esCita = false;\n }\n this.fechaCompletaString =\n this.formatDateService.convertDateToFormatSpecifc(\n this.formatCulture,\n this.fechaCompletaDate,\n this.culture\n );\n this.hora = this.formatDateService.convertDateToFormatSpecifc(\n 'HH:mm',\n this.fechaCompletaDate,\n this.culture\n );\n this.fecha =\n this.fechaCompletaDate.getDate() +\n '/' +\n (this.fechaCompletaDate.getMonth() + 1);\n }\n }\n await this.getPerfilCliente();\n await this.getAbogado();\n if (this.datos.abogado && this.datos.abogado.avatarUrl) {\n this.avatarUrl = environment.apiUrl + this.datos.abogado.avatarUrl;\n this.tieneFoto = true;\n }\n\n if (this.datos.abogado) {\n this.seleccionado = true;\n }\n\n if (this.datos.abogado) {\n this.hayAbogadosParaElegir = false;\n } else {\n this.ngZone.run(() => {\n if (this.authenticationService.getRole.toString() != Role.Abogado) {\n this.apiService.getAbogadosDisponibles(this.caso.id_caso).subscribe(\n (abogados) => {\n this.abogadosDisponibles = abogados;\n if (abogados.length == 0) {\n this.hayAbogadosParaElegir = false;\n } else {\n this.hayAbogadosParaElegir = true;\n this.seleccionado = false;\n }\n this.abogadosChequeados = true;\n },\n (error) => {\n error(error);\n }\n );\n }\n });\n }\n\n this.pidoListaArchivos();\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n getMiPerfil() {\n this.apiService.getPerfil().subscribe(\n (perfil) => {\n this.miRol = perfil.rol;\n if (this.datos.abogado.id_usuario === perfil.id_usuario) {\n this.seleccionado = true;\n this.noSoyAbogado = false;\n } else {\n this.textoParaCalificar =\n this.datos.abogado.nombre + ' ' + this.datos.abogado.apellido;\n }\n //Eres Abogado\n if(perfil.rol['id'] == 2){\n //Mostrar data del Cliente\n this.pais = parseInt(this.globalCliente.pais,10);\n this.apiService.getPais(this.pais)\n .subscribe(pais =>{\n console.log(pais);\n this.datos.cliente.pais = pais.name;\n })\n this.datos.cliente = this.globalCliente;\n this.telefono = this.globalCliente.datosUsuario[0].telefono; \n }\n //Eres Cliente\n else if(perfil.rol['id'] == 3){\n //Mostrar data del Abogado\n console.log(this.globalAgobado);\n this.pais = parseInt(this.globalAgobado.pais,10);\n this.apiService.getPais(this.pais)\n .subscribe(data =>{\n console.log(data);\n this.datos.cliente.pais = data.name;\n })\n this.datos.cliente = this.globalAgobado;\n this.telefono = this.globalAgobado.datosProfesionales[0].telefono; \n }\n\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n globalCliente:any;\n private getPerfilCliente() {\n return new Promise((resolve, reject) => {\n this.apiService.getPerfilUsuario(this.idCliente).subscribe((res) => {\n this.globalCliente = res;\n this.textoParaCalificar = res.nombre + ' ' + res.apellido;\n this.mailCliente = res.mail;\n this.apiService.getPais(this.globalCliente.pais)\n .subscribe(pais =>{\n console.log(pais);\n this.datos.cliente.pais = pais.name;\n })\n localStorage.setItem('caso', JSON.stringify(this.caso));\n resolve();\n });\n });\n }\n\n\n\n\n userForm = new UntypedFormGroup({});\n\n llamar(telefono) {\n window.open(`tel:${telefono}`);\n }\n\n whatsapp(telefono) {\n window.open(`tel:${telefono}`);\n }\n\n rolActual:any;\n\n getRol(){\n this.apiService.getPerfil().subscribe(perfil => {\n this.rolActual = perfil.rol['id'];\n })\n }\n\n globalAgobado : any;\n getAbogado() {\n if (\n this.authenticationService.getRole.toString() != Role.Abogado ||\n this.usuarioActualId == this.idProfesionalAsignado\n ) {\n return new Promise((resolve, reject) => {\n this.apiService.getAbogadoCaso(this.caso.id_caso).subscribe(\n (abogado) => {\n this.globalAgobado = abogado;\n this.datos.abogado = abogado;\n localStorage.setItem('abogado', JSON.stringify(this.abogado));\n localStorage.setItem('caso', JSON.stringify(this.caso));\n this.mailAbogado = this.datos.abogado.mail;\n\n if (\n this.caso.tipo === 'Llamada Express' ||\n this.caso.tipo === 'Llamada Express'\n ) {\n this.esLlamada = true;\n this.telefono = this.datos.abogado.datosProfesionales[0].telefono;\n }\n this.getMiPerfil();\n if (this.datos.abogado) {\n this.seleccionado = true;\n this.hayAbogadosParaElegir = false;\n if (this.datos.abogado && this.datos.abogado.avatarUrl) {\n this.avatarUrl =\n environment.apiUrl + this.datos.abogado.avatarUrl;\n this.tieneFoto = true;\n }\n } else {\n this.seleccionado = false;\n }\n resolve();\n },\n (error) => {\n this.seleccionado = false;\n localStorage.setItem('abogado', JSON.stringify(this.abogado));\n localStorage.setItem('caso', JSON.stringify(this.caso));\n resolve();\n }\n );\n });\n }\n }\n pidoListaArchivos() {\n this.apiService.getFiles(this.caso.id_caso).subscribe(\n (lista) => {\n this.listaArchivos = lista;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n navegar(destino) {\n switch (destino) {\n case 1:\n this._location.back();\n break;\n case 2:\n localStorage.setItem('caso', JSON.stringify(this.caso));\n localStorage.setItem('datos', JSON.stringify(this.datos));\n this.router.navigateByUrl('/calificar');\n break;\n case 3:\n this.datos.abogados = this.abogadosDisponibles;\n localStorage.setItem('caso', JSON.stringify(this.caso));\n this.router.navigateByUrl('/seleccion/previa', { state: this.datos });\n break;\n default:\n break;\n }\n }\n\n sePuedeCalificar() {\n const key = EstadoCaso.getEstadoFromString(this.caso.estado);\n const estadoInvalido =\n EstadoCaso[key] == EstadoCaso.FINALIZADO ||\n EstadoCaso[key] == EstadoCaso.PENDIENTE_ACEPTACION ||\n EstadoCaso[key] == EstadoCaso.PENDIENTE_SELECCION ||\n EstadoCaso[key] == EstadoCaso.PERDIDO;\n const involucradoEnElCaso =\n this.datos.rolActual == 2 && this.datos.abogado\n ? this.usuarioActualId == this.datos.abogado.id_usuario\n : this.usuarioActualId == this.idCliente;\n const calificable =\n !this.hayAbogadosParaElegir &&\n this.seleccionado &&\n involucradoEnElCaso &&\n !estadoInvalido;\n return calificable;\n }\n}\n","
\n

{{data.nombre}}

\n\n
\n \n
\n \n
\n\n\n \n
    \n
  • {{categoria.titulo}}
  • \n
\n\n
\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Router } from '@angular/router';\nimport {\n MatDialog,\n MatDialogRef,\n MAT_DIALOG_DATA,\n} from '@angular/material/dialog';\nimport { Especialidad } from '../../../../../api/user';\nimport { ApiService } from '../../../../../api/api.service';\nimport { Categoria } from '../../../../../api/user';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n@Component({\n selector: 'dialog-content-example-dialog',\n templateUrl: 'dialog-content-example-dialog.html',\n styleUrls: ['./dialog.component.css'],\n})\nexport class DialogComponent {\n categorias: Categoria[];\n constructor(\n public dialog: MatDialog,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n private apiService: ApiService,\n @Inject(MAT_DIALOG_DATA) public data: Especialidad\n ) {\n this.matIconRegistry.addSvgIcon(\n `Laboral`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/Laboral.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Individuos y familia`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/individuos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Comercial y negocios`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/comercial.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Contratos`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/contratos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Defensa del Consumidor`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/defensa.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Impuestos`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/impuestos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Inmobiliaria y Propiedades`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/inmobiliaria.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Otros`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/otros.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Penal`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/penal.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Sucesiones y herencias`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/sucesiones.svg'\n )\n );\n\n this.apiService.getCategorias(data.id_especialidad).subscribe(\n (categorias) => {\n this.categorias = categorias;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n}\n","
\n
\n \n \n \n {{ \"especialidad.crear\" | translate }}\n \n
\n \n \n \n {{ \"especialidad.categorizar\" | translate }}\n \n \n
\n\n
\n
\n \n \n \n
{{ especialidad.nombre }}
\n \n \n
\n
\n
\n \n \n \n {{ especialidad.nombre }}\n \n \n \n
\n \n {{ \"especialidad.continuar\" | translate }}\n \n \n {{ \"especialidad.continuar\" | translate }}\n \n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Especialidad } from '../../../../../api/user';\nimport { ApiService } from '../../../../../api/api.service';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { MatDialog, MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { DialogComponent } from '../especialidad/dialog.component';\nimport { RoleNumber } from '../../../../../enums/role';\nimport { delay } from 'rxjs/operators';\nimport { IphoneScrollService } from 'src/app/services/iphone-scroll/iphone-scroll.service';\nimport { TranslateService } from '@ngx-translate/core';\n@Component({\n selector: 'app-especialidad',\n templateUrl: './especialidad.component.html',\n styleUrls: ['./especialidad.component.css'],\n})\nexport class EspecialidadComponent implements OnInit {\n constructor(\n private apiService: ApiService,\n public dialog: MatDialog,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n private iPhoneService: IphoneScrollService,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n\n this.matIconRegistry.addSvgIcon(\n `Laboral`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/Laboral.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Familia`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/individuos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Comercial y negocios`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/comercial.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Contratos`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/contratos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Defensa del Consumidor`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/defensa.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Impuestos`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/impuestos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Inmobiliaria y Propiedad Horizontal`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/inmobiliaria.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Otros`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/otros.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Penal`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/penal.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Sucesiones`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/sucesiones.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Jubilaciones y pensiones`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/previsional.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Digital`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/digital.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Daños y Perjuicios`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/perjuicios.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Sociedades`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/societario.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Accidentes de tránsito`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/accidentes.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Marcas y patentes`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/propiedad.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Mala Praxis y Salud`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/mala.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Violencia de género`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/discriminacion.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `ayuda`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/ayuda.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Reclamos al Estado o por Servicios Públicos`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/reclamos.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Derecho Aduanero y Comercio Exterior`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/aduanero.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Concursos y quiebras`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/quiebras.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Reclamos Temas Ambientales`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/derecho ambiental.svg'\n )\n );\n this.matIconRegistry.addSvgIcon(\n `Trámites y Problemas Migratorios`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../../../assets/derecho-migratorio.svg'\n )\n );\n }\n\n openDialog(especialidad) {\n this.dialog.open(DialogComponent, {\n width: '600px',\n data: {\n nombre: especialidad.nombre,\n id_especialidad: especialidad.id_especialidad,\n },\n backdropClass: 'backdropBackground',\n });\n }\n\n permitirContinuar = false;\n caso = {\n titulo: '',\n detalles: '',\n jurisdiccion: {\n nombre: '',\n id_jurisdiccion: '',\n countryId: 0\n },\n localidad: {\n nombre: '',\n id_localidad: '',\n },\n especialidad: {\n nombre: '',\n id_especialidad: 'number',\n },\n archivosSeleccionados: [],\n };\n\n especialidades: Especialidad[];\n especialidadAnterior: any;\n casoForm = new UntypedFormGroup({\n especialidad: new UntypedFormControl(),\n });\n\n class = 'casoSinHover';\n disableScroll() {\n this.class = this.iPhoneService.changeClass();\n }\n\n ngOnInit(): void {\n this.caso.titulo = history.state.titulo;\n if (this.caso.titulo == undefined) {\n this.caso = JSON.parse(localStorage.getItem('caso'));\n this.caso.detalles = this.caso.detalles;\n this.caso.jurisdiccion = this.caso.jurisdiccion;\n this.caso.localidad = this.caso.localidad;\n } else {\n this.caso.detalles = history.state.detalles;\n this.caso.jurisdiccion = history.state.jurisdiccion;\n this.caso.localidad = history.state.localidad;\n this.caso.archivosSeleccionados = history.state.archivosSeleccionados;\n }\n\n this.apiService.getEspecialidadesByPais(RoleNumber.Cliente, this.caso.jurisdiccion.countryId).subscribe(\n (especialidades) => {\n this.especialidades = especialidades.map((especialidad) => {\n const nombreReemplazado = especialidad.nombre.replace('/', ' ');\n return { ...especialidad, nombre: nombreReemplazado };\n });\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n atras() {\n localStorage.setItem('caso', JSON.stringify(this.caso));\n this.router.navigate(['/crear-nuevo']);\n }\n\n guardar(especialidad) {\n if (!this.iPhoneService.isIos) {\n especialidad.selected = !especialidad.selected;\n }\n this.caso.especialidad = especialidad;\n this.permitirContinuar = true;\n }\n\n onSubmit() {\n this.router.navigateByUrl('/categoria-nuevo', { state: this.caso });\n }\n\n down(especialidad) {\n this.class = 'casoImpar';\n especialidad.selected = !especialidad.selected;\n if (this.especialidadAnterior) {\n this.especialidadAnterior.selected = false;\n }\n this.especialidadAnterior = especialidad;\n }\n}\n","
\n \n \n \n {{ \"cita.agendar\" | translate }}\n \n
\n \n \n {{ \"cita.dia\" | translate }}\n \n \n
\n\n
\n
\n \n
\n

\n {{ \"cita.no\" | translate }}\n

\n
\n \n
\n \n

\n {{ \"cita.si\" | translate }} \n
\n
\n
\n \n \n \n
\n
\n
\n

{{ textoRespuesta }}

\n
\n
\n
\n 0\">\n {{\n \"cita.horario\" | translate\n }}\n
\n \n \n {{ horario.horaString }}\n \n \n
\n
\n
\n
\n 0\"\n >{{ \"cita.abogados\" | translate }} {{ cantidad }}\n

\n 0\"\n (click)=\"verAbogados()\"\n class=\"boton-primario\"\n mat-raised-button\n color=\"primary\"\n >\n {{ \"cita.ver\" | translate }}\n \n
\n
\n {{ seleccion.nombre }} {{ seleccion.apellido }}\n \n
\n
\n
\n
\n
\n
\n
\n
\n


\n
\n
\n","import { Component, OnInit, ViewEncapsulation, ViewChild } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormControl } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ApiService } from '../../../../../../api/api.service';\nimport { UsuariosHora } from '../../../../../../api/agenda';\nimport { StorageService } from '../../../../../../utils/storage/storage.service';\nimport { FormatDateService } from 'src/app/utils/formatDate/formatDate.service.';\nimport {\n MatCalendarHeader,\n MatDatepickerInputEvent,\n} from '@angular/material/datepicker';\nimport { MatCalendar } from '@angular/material/datepicker';\nimport { MatCalendarCellClassFunction } from '@angular/material/datepicker';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Horario } from '../../../../../../api/horarios';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-rango',\n templateUrl: './rango.component.html',\n styleUrls: ['./rango.component.css'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class RangoComponent implements OnInit {\n @ViewChild('picker2') calendar: MatCalendar;\n @ViewChild('picker2') calendarHeader: MatCalendarHeader;\n\n mesPrevio = '';\n mesActual = '';\n primerClick = false;\n dias = [];\n meses = [];\n diaYMes = [\n {\n dia: -1,\n mes: -1,\n },\n ];\n\n dateClass: MatCalendarCellClassFunction = (cellDate, view) => {\n let mesActual = new Date().getMonth();\n let mesProximo = mesActual + 1;\n if (mesActual == 11) {\n mesProximo = 0;\n }\n if (view === 'month') {\n const date = cellDate.getDate();\n const month = cellDate.getMonth();\n const year = cellDate.getFullYear();\n this.dias = JSON.parse(localStorage.getItem('dias'));\n this.meses = JSON.parse(localStorage.getItem('meses'));\n let currentYear = new Date().getFullYear();\n let nextYear = new Date().getFullYear() + 1;\n for (var i = 0; i < this.dias.length; i++) {\n let unDia = this.dias[i];\n let unMes = this.meses[i];\n if (\n (date === unDia &&\n month === mesActual &&\n mesActual === unMes - 1 &&\n year === currentYear) ||\n (date === unDia &&\n month === mesProximo &&\n mesProximo === unMes - 1 &&\n year === currentYear) ||\n (date === unDia &&\n month === mesProximo &&\n mesProximo == 0 &&\n mesProximo === unMes - 1 &&\n year === nextYear)\n ) {\n return 'example-custom-date-class';\n }\n }\n }\n };\n\n horarioSeleccionado: Horario;\n cantidad = 0;\n textoRespuesta = '';\n valido: boolean = false;\n terminoCarga: boolean = false;\n usuariosDisponiblesPorHora: UsuariosHora[];\n diasDisponibles: string[] = [];\n events: string[] = [];\n datos = {\n caso: {\n titulo: '',\n detalles: '',\n jurisdiccion: {\n nombre: '',\n id_jurisdiccion: 0,\n },\n localidad: {\n nombre: '',\n id_localidad: 0,\n },\n especialidad: {\n nombre: '',\n id_especialidad: 0,\n },\n categoria: {\n nombre: '',\n id_categoria: 0,\n descripcion: '',\n },\n archivosSeleccionados: [],\n },\n titulo: 'Agendar cita',\n abogados: [],\n archivosSeleccionados: [],\n };\n seleccionado = false;\n selected: Date;\n respuestasHoras: any;\n\n todosLosHorarios: any;\n\n seleccion = {\n titulo: 'Agendar cita',\n nombre: '',\n apellido: '',\n estado: '',\n abogado: '',\n fechaIsoString: '',\n horarioSeleccionado: '',\n fecha: '',\n caso: {\n titulo: '',\n detalles: '',\n jurisdiccion: {\n nombre: '',\n id_jurisdiccion: 0,\n },\n localidad: {\n nombre: '',\n id_localidad: 0,\n },\n especialidad: {\n nombre: '',\n id_especialidad: 0,\n },\n categoria: {\n nombre: '',\n id_categoria: 0,\n descripcion: '',\n },\n archivosSeleccionados: [],\n },\n };\n\n horarios: Horario[];\n horariosCompletos = [\n {\n horaVisible: '',\n fechaOriginal: '',\n },\n ];\n abogadosIds: number[] = [];\n form = new UntypedFormGroup({\n horario: new UntypedFormControl(''),\n });\n\n formatCulture: string = 'yyyy-MM-dd';\n culture: string = 'es-AR';\n\n constructor(\n private _snackBar: MatSnackBar,\n private storageService: StorageService,\n private formatDateService: FormatDateService,\n private apiService: ApiService,\n private router: Router,\n private activatedRoute: ActivatedRoute,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT', 'en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n\n if (this.router.getCurrentNavigation().extras.state) {\n this.seleccion.caso =\n this.router.getCurrentNavigation().extras.state.caso;\n if (this.seleccion.caso.titulo != null) {\n localStorage.setItem('caso', JSON.stringify(this.seleccion.caso));\n } else {\n this.seleccion.caso = JSON.parse(localStorage.getItem('caso'));\n this.seleccion.fechaIsoString = JSON.parse(\n localStorage.getItem('fechaCompleta')\n );\n }\n this.seleccion.nombre =\n this.router.getCurrentNavigation().extras.state.nombre;\n this.seleccion.apellido =\n this.router.getCurrentNavigation().extras.state.apellido;\n this.seleccion.estado =\n this.router.getCurrentNavigation().extras.state.estado;\n if (this.router.getCurrentNavigation().extras.state.abogado) {\n this.seleccion.abogado =\n this.router.getCurrentNavigation().extras.state.abogado;\n }\n if (this.seleccion.estado == 's') {\n this.seleccionado = true;\n }\n }\n }\n\n ngOnInit(): void {\n this.valido = false;\n this.terminoCarga = false;\n if (this.seleccion.caso.titulo == '') {\n this.seleccion.caso = JSON.parse(localStorage.getItem('caso'));\n this.seleccion.fechaIsoString = JSON.parse(\n localStorage.getItem('fechaCompleta')\n );\n }\n this.verificarAbogados();\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n atras() {\n console.log(localStorage.getItem('caso'));\n window.history.back();\n }\n\n submit() {\n this.seleccion.horarioSeleccionado = this.horarioSeleccionado.horaString;\n }\n\n convertirHora(hora) {\n let horas = hora.getHours().toString();\n if (horas.length == 1) {\n horas = '0' + horas;\n }\n let minutos = hora.getMinutes().toString();\n if (minutos.length == 1) {\n minutos = '0' + minutos;\n }\n return horas + ':' + minutos;\n }\n\n navegar() {\n this.seleccion.horarioSeleccionado = this.horarioSeleccionado.horaString;\n let hora = new Date(this.horarioSeleccionado.horaString);\n let horarioEscogido;\n this.router.navigateByUrl('/resumen', { state: this.seleccion });\n }\n\n range = new UntypedFormGroup({\n start: new UntypedFormControl(),\n end: new UntypedFormControl(),\n });\n\n diaEscogido = new UntypedFormGroup({\n diaEscogido2: new UntypedFormControl(),\n });\n\n range2 = new UntypedFormGroup({\n start: new UntypedFormControl(),\n end: new UntypedFormControl(),\n });\n\n verificarAbogados() {\n let hoy = new Date();\n let unMes = new Date();\n let mes = unMes.getMonth() + 1;\n unMes.setMonth(mes);\n let fechaInicio = this.formatDateService.convertDateToFormatSpecifc(\n this.formatCulture,\n hoy,\n this.culture\n );\n let fechaFinal = this.formatDateService.convertDateToFormatSpecifc(\n this.formatCulture,\n unMes,\n this.culture\n );\n localStorage.setItem('fechaInicio', fechaInicio);\n localStorage.setItem('fechaFinal', fechaFinal);\n if (this.seleccion.caso.titulo != undefined) {\n let tagEspecialidad = this.seleccion.caso.especialidad.id_especialidad;\n let tagLocalidad = this.seleccion.caso.jurisdiccion.nombre;\n let horaAConvertir;\n let agregarHorario = '';\n\n this.apiService\n .getAgendaDias(fechaInicio, fechaFinal, tagEspecialidad, tagLocalidad)\n .subscribe(\n (respuesta) => {\n this.terminoCarga = true;\n if (respuesta.length == 0) {\n this.valido = false;\n } else {\n this.valido = true;\n }\n if (respuesta === null) {\n this.textoRespuesta = 'No se encontraron abogados disponibles';\n } else {\n this.textoRespuesta = '';\n this.seleccionado = true;\n }\n this.diasDisponibles = respuesta;\n this.dias = [];\n respuesta.forEach((dia) => {\n if (dia.charAt(8) === '0') {\n let aux = parseInt(dia.charAt(9), 10);\n this.dias.push(aux);\n } else {\n let aux = dia.charAt(8).toString() + dia.charAt(9).toString();\n let aux2 = parseInt(aux, 10);\n this.dias.push(aux2);\n }\n\n if (dia.charAt(5) === '0') {\n //hasta septiembre inclusive\n let aux = parseInt(dia.charAt(6), 10);\n this.meses.push(aux);\n } else {\n //de octubre en adelante\n let aux = dia.charAt(5).toString() + dia.charAt(6).toString();\n let aux2 = parseInt(aux, 10);\n this.meses.push(aux2);\n }\n });\n localStorage.setItem('dias', JSON.stringify(this.dias));\n localStorage.setItem('meses', JSON.stringify(this.meses));\n },\n (error) => {\n console.error(error);\n this.terminoCarga = true;\n this.valido = false;\n }\n );\n } else {\n this.terminoCarga = true;\n this.valido = false;\n }\n }\n\n addEvent(type: string, event: MatDatepickerInputEvent) {\n this.events.push(`${type}: ${event.value}`);\n let fechaInicio = this.formatDateService.convertDateToFormatSpecifc(\n 'yyyy-MM-dd',\n event.value,\n this.culture\n );\n let fechaFinal = fechaInicio;\n let tagEspecialidad = this.seleccion.caso.especialidad.nombre;\n let tagLocalidad = this.seleccion.caso.jurisdiccion.nombre;\n let horaAConvertir;\n let horaString = '';\n this.horarios = [];\n this.horariosCompletos = [];\n this.todosLosHorarios = [];\n this.apiService\n .getAgendaDisponibles(\n fechaInicio,\n fechaFinal,\n tagEspecialidad,\n tagLocalidad\n )\n .subscribe(\n (respuesta) => {\n if (respuesta === null || respuesta.length == 0) {\n this.textoRespuesta =\n 'No se encontraron abogados disponibles en el día seleccionado';\n } else {\n this.textoRespuesta = '';\n this.todosLosHorarios = respuesta;\n }\n this.usuariosDisponiblesPorHora = respuesta;\n\n this.usuariosDisponiblesPorHora.forEach((usuario) => {\n horaAConvertir = new Date(usuario.hora);\n horaString =\n horaAConvertir.getHours().toString() +\n ':' +\n horaAConvertir.getMinutes().toString();\n horaString = this.convertirHora(horaAConvertir);\n let horarioAux = {\n horaString,\n checked: false,\n };\n this.horarios.push(horarioAux);\n });\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n formatDate(date) {\n var d = new Date(date),\n month = '' + (d.getMonth() + 1),\n day = '' + d.getDate(),\n year = d.getFullYear();\n\n if (month.length < 2) month = '0' + month;\n if (day.length < 2) day = '0' + day;\n return [year, month, day].join('-');\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n verificarHorarioDia($event) {\n this.seleccionado = false;\n if (\n this.calendar.monthView ||\n this.calendar.currentView == 'multi-year' ||\n this.calendar.currentView == 'year'\n ) {\n if (\n this.calendar.currentView == 'multi-year' ||\n this.calendar.currentView == 'year' ||\n (this.calendar.monthView._monthLabel != this.mesPrevio &&\n this.primerClick)\n ) {\n this.horarios = [];\n this.selected = undefined;\n this.mesPrevio = this.calendar.monthView._monthLabel;\n } else {\n this.primerClick = true;\n let hoy = new Date();\n if (this.selected < hoy) {\n this.openSnackBar('No es posible elegir días previos a hoy');\n this.horarios = [];\n } else {\n if (this.selected != null) {\n let aux = this.formatDateService.convertDateToFormatSpecifc(\n this.formatCulture,\n this.selected,\n this.culture\n );\n let fechaInicio = aux;\n let fechaFinal = fechaInicio;\n let tagEspecialidad = this.seleccion.caso.especialidad.nombre;\n let tagLocalidad = this.seleccion.caso.jurisdiccion.nombre;\n let horaAConvertir;\n let horaString = '';\n this.horarios = [];\n this.horariosCompletos = [];\n this.apiService\n .getAgendaDisponibles(\n fechaInicio,\n fechaFinal,\n tagEspecialidad,\n tagLocalidad\n )\n .subscribe(\n (respuesta) => {\n this.mesPrevio = this.calendar.monthView._monthLabel;\n if (respuesta === null || respuesta.length == 0) {\n this.textoRespuesta =\n 'No se encontraron abogados disponibles';\n this.cantidad = 0;\n } else {\n this.textoRespuesta = '';\n this.todosLosHorarios = respuesta;\n }\n this.usuariosDisponiblesPorHora = respuesta;\n this.cantidad = this.usuariosDisponiblesPorHora.length;\n this.usuariosDisponiblesPorHora.map((usuario) => {\n horaAConvertir = new Date(usuario.hora);\n horaString =\n horaAConvertir.getHours().toString() +\n ':' +\n horaAConvertir.getMinutes().toString();\n horaString = this.convertirHora(horaAConvertir);\n let horarioAux = {\n horaString,\n checked: false,\n };\n this.horarios.push(horarioAux);\n });\n },\n (error) => {\n this.mesPrevio = this.calendar.monthView._monthLabel;\n console.error(error);\n }\n );\n } else {\n this.mesPrevio = this.calendar.monthView._monthLabel;\n }\n }\n }\n }\n }\n\n verificarAbogadosHorario() {\n this.seleccionado = true;\n let respuestaConvertida;\n let aux = 0;\n let posicionEncontrada = 0;\n this.horarios.forEach((horario) => {\n if (\n horario.horaString.toString() ==\n this.horarioSeleccionado.horaString.toString()\n ) {\n posicionEncontrada = aux;\n } else {\n aux++;\n }\n });\n respuestaConvertida = new Date(\n this.usuariosDisponiblesPorHora[posicionEncontrada].hora\n );\n localStorage.setItem(\n 'respuestaConvertida',\n JSON.stringify(respuestaConvertida)\n );\n localStorage.setItem('caso', JSON.stringify(this.seleccion.caso));\n this.cantidad =\n this.usuariosDisponiblesPorHora[posicionEncontrada].usuarios.length;\n this.abogadosIds = [];\n this.usuariosDisponiblesPorHora[posicionEncontrada].usuarios.forEach(\n (elemento) => {\n this.abogadosIds.push(parseInt(elemento));\n }\n );\n }\n\n verAbogados() {\n let listaIds = '';\n this.abogadosIds.forEach((id) => {\n listaIds = listaIds + 'ids=' + id + '&';\n });\n\n listaIds = listaIds.slice(0, -1);\n\n this.apiService.getAbogadosDisponiblesAgenda(listaIds).subscribe(\n (abogados) => {\n this.datos.abogados = abogados;\n this.datos.caso = this.seleccion.caso;\n this.datos.titulo = 'Agendar cita';\n this.router.navigateByUrl('/seleccion/previa', { state: this.datos });\n },\n (error) => {\n console.error(error);\n }\n );\n }\n}\n","
\n \n \n \n {{ this.seleccion.titulo }}\n \n
\n \n \n {{ \"resumen.cita\" | translate }}\n \n \n
\n\n
\n \n \n
\n \n \n \n
\n \n {{ nombre }} {{ apellido }}\n {{\n nombreEspecialidad\n }}\n {{\n especialidadParaMostrar\n }}\n \n
\n
\n
\n
\n
\n {{ \"resumen.datos\" | translate }}\n
\n {{ \"resumen.fecha\" | translate }} {{ this.fecha }}\n {{ \"resumen.hora\" | translate }} {{ this.hora }}\n

\n {{ \"resumen.fecha\" | translate }} {{ this.fecha }}\n

\n

\n {{ \"resumen.hora\" | translate }} {{ this.hora }}\n

\n
\n
\n {{ nombre }} {{ apellido }}\n {{ \"resumen.contacto\" | translate }}\n
\n\n \n {{ \"resumen.precio\" | translate }}\n
\n {{ importeMoneda ? importeMoneda : '$' }} {{ importe }}\n\n \n \n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { ApiService } from '../../../../../api/api.service';\nimport { environment } from '../../../../../../environments/environment';\nimport { StorageService } from '../../../../../utils/storage/storage.service';\nimport { Planes } from '../../../../../api/planes';\nimport { FormatDateService } from 'src/app/utils/formatDate/formatDate.service.';\nimport { EspecialidadDelCasoService } from '../../../../../services/especialidad/especialidad-del-caso.service';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { TranslateService } from '@ngx-translate/core';\nimport { MultipagoService } from 'src/app/components/admin/multipago/modules/multipago.service';\nimport { MPVinculacion, PlanDefaultAmount, PlanPlataforma } from 'src/app/components/admin/multipago/modules/multipago.model';\nimport { PlanMultipagoService } from 'src/app/services/plan/plan-multipago.service';\nimport { ThisReceiver } from '@angular/compiler';\nimport { forkJoin, Observable, PartialObserver } from 'rxjs';\n\nenum PlanType {\n Mail = 'Mail',\n Schedule = 'Agenda',\n CallExpress = 'Llamada Express',\n}\n\nclass CostPlan {\n Mail: number;\n Schedule: number;\n CallExpress: number;\n ScheduleMoneda: string;\n CallExpressMoneda: string;\n}\n\n@Component({\n selector: 'app-resumen',\n templateUrl: './resumen.component.html',\n styleUrls: ['./resumen.component.css'],\n})\nexport class ResumenComponent implements OnInit {\n abogado: any;\n nombre: string;\n apellido: string;\n nombreEspecialidad: string;\n tieneFoto = false;\n avatarUrl = '';\n seleccion = {\n fecha: '',\n hora: '',\n abogado: '',\n titulo: '',\n caso: '',\n };\n\n caso: any;\n importe = '';\n importeMoneda = '';\n mostrarFecha = false;\n\n id_caso: number;\n invitadoId: number;\n fecha: any;\n fechaCompletaString: string;\n fechaCompletaDate: Date;\n hora: any;\n\n contratarAbogado = {\n abogadoId: 0,\n mpCallbackFailure: environment.angularUrl + '/pago/fallo',\n mpCallbackPending: environment.angularUrl + '/pago/pendiente',\n mpCallbackSuccess: environment.angularUrl + '/llamada',\n planId: 0,\n };\n\n costPlan: CostPlan;\n\n formatCulture: string = 'full';\n culture: string = 'es-AR';\n formatDateBackend: string = 'yyyy-MM-ddTHH:mm:ss';\n\n especialidadParaMostrar = '';\n mostrar = false;\n\n cacheAgendaPlataformas: PlanPlataforma[] = [];\n cacheLlamadaPlataformas: PlanPlataforma[] = [];\n\n constructor(\n private formatDateService: FormatDateService,\n private storageService: StorageService,\n private router: Router,\n private route: ActivatedRoute,\n private apiService: ApiService,\n private serviceMultipago: MultipagoService, \n private servicePlanMultipago: PlanMultipagoService, \n private _location: Location,\n private especialidadService: EspecialidadDelCasoService,\n private matIconRegistry: MatIconRegistry,\n private domSanitizer: DomSanitizer,\n private _snackBar: MatSnackBar,\n public translate: TranslateService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n this.matIconRegistry.addSvgIcon(\n `perfil`,\n this.domSanitizer.bypassSecurityTrustResourceUrl(\n '../../../../assets/perfil.svg'\n )\n );\n if (this.router.getCurrentNavigation().extras.state) {\n this.caso = this.router.getCurrentNavigation().extras.state.caso;\n this.seleccion.fecha =\n this.router.getCurrentNavigation().extras.state.fecha;\n this.seleccion.hora =\n this.router.getCurrentNavigation().extras.state.horarioSeleccionado;\n this.abogado = this.router.getCurrentNavigation().extras.state.abogado;\n this.seleccion.abogado = this.abogado;\n this.nombre =\n this.router.getCurrentNavigation().extras.state.abogado.nombre;\n this.apellido =\n this.router.getCurrentNavigation().extras.state.abogado.apellido;\n this.nombreEspecialidad =\n this.router.getCurrentNavigation().extras.state.abogado.datosProfesionales[0].especialidadesAbogados[0].nombre;\n this.seleccion.titulo =\n this.router.getCurrentNavigation().extras.state.titulo;\n\n if (\n this.caso &&\n this.caso.especialidad &&\n this.caso.especialidad.nombre\n ) {\n this.especialidadParaMostrar = this.especialidadService.match(\n this.caso.especialidad.nombre,\n this.abogado\n );\n if (this.especialidadParaMostrar.length > 2) {\n this.mostrar = true;\n }\n }\n }\n }\n\n ngOnInit(): void {\n let planId: number;\n var plans: Planes[];\n let observable: Observable[] = [];\n this.costPlan = new CostPlan();\n\n observable.push(this.apiService.getPlanes());\n observable.push(this.servicePlanMultipago.getPlanDefaultAmounts(0, this.caso.jurisdiccion.id_jurisdiccion, [2, 3]));\n\n forkJoin(observable).subscribe({\n next: (result: any[]) => {\n plans = result[0];\n this.setCost(plans);\n\n this.setDefaultCost(result[1]);\n\n if (this.seleccion.titulo === 'Agendar cita') {\n let aux = JSON.parse(localStorage.getItem('respuestaConvertida'));\n this.fechaCompletaDate = new Date(aux);\n this.fechaCompletaString =\n this.formatDateService.convertDateToFormatSpecifc(\n this.formatCulture,\n this.fechaCompletaDate,\n this.culture\n );\n this.hora = this.formatDateService.convertDateToFormatSpecifc(\n 'HH:mm',\n this.fechaCompletaDate,\n this.culture\n );\n this.fecha =\n this.fechaCompletaDate.getDate() +\n '/' +\n (this.fechaCompletaDate.getMonth() + 1);\n this.importe = this.costPlan.Schedule.toString();\n this.importeMoneda = this.costPlan.ScheduleMoneda;\n this.mostrarFecha = true;\n planId = 2;\n } else {\n planId = 3;\n this.importe = this.costPlan.CallExpress.toString();\n this.importeMoneda = this.costPlan.CallExpressMoneda;\n }\n this.cacheAgendaPlataformas = [];\n this.cacheLlamadaPlataformas = [];\n\n let obsPlataformas = this.serviceMultipago.getPlanPlataformasEnabled(planId);\n let obsVinculaciones = this.servicePlanMultipago.getAbogadoVinculacionesById(this.seleccion.abogado[\"id_usuario\"]*1);\n\n forkJoin([obsPlataformas, obsVinculaciones]).subscribe({\n next: (observer: any[]) => {\n let result: PlanPlataforma[] = [];\n let planPlataformas: PlanPlataforma[] = observer[0];\n let vinculaciones: MPVinculacion[] = observer[1];\n let paisId: number = this.apiService.getSessionCountryIdByLocalStorage();\n\n planPlataformas.forEach((planPlataforma: PlanPlataforma) => {\n if (planPlataforma.countryId != paisId)\n return;\n vinculaciones.some((vinculacion: MPVinculacion) => {\n if ((!vinculacion.needLinked || vinculacion.linked) && vinculacion.plataformaId == planPlataforma.plataformaId) {\n result.push(planPlataforma);\n return true;\n }\n });\n });\n\n this.cacheAgendaPlataformas = result;\n }\n });\n },\n error: (error) => {\n console.error(error);\n }\n })\n\n this.getMiPerfil();\n if (\n this.abogado.avatarUrl != null &&\n !this.abogado.avatarUrl.includes(null)\n ) {\n this.tieneFoto = true;\n\n this.avatarUrl = this.abogado.avatarUrl;\n } else {\n this.tieneFoto = false;\n }\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n setDefaultCost(planAmounts: PlanDefaultAmount[]): void {\n planAmounts.forEach((planAmount: PlanDefaultAmount) => {\n switch (planAmount.planId) {\n case 2:\n this.costPlan.Schedule = planAmount.monto;\n this.costPlan.ScheduleMoneda = planAmount.monedaId;\n break;\n case 3:\n this.costPlan.CallExpress = planAmount.monto;\n this.costPlan.CallExpressMoneda = planAmount.monedaId;\n break;\n }\n });\n }\n\n setCost(plans: Planes[]) {\n this.costPlan.Mail = plans.find((x) => x.nombre == PlanType.Mail).costo;\n this.costPlan.Schedule = plans.find(\n (x) => x.nombre == PlanType.Schedule\n ).costo;\n this.costPlan.CallExpress = plans.find(\n (x) => x.nombre == PlanType.CallExpress\n ).costo;\n }\n\n completarDatos() {\n if (!this.abogado) {\n this.abogado = JSON.parse(localStorage.getItem('abogado'));\n }\n if (!this.caso) {\n this.caso = JSON.parse(localStorage.getItem('caso'));\n }\n this.caso.archivosSeleccionados = JSON.parse(\n localStorage.getItem('archivos')\n );\n if (this.abogado) {\n this.caso.profesionalAsignadoId = this.abogado.id_usuario;\n }\n }\n\n getMiPerfil() {\n this.apiService.getPerfil().subscribe(\n (perfil) => {\n this.invitadoId = perfil.id_usuario;\n this.completarDatos();\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n agendarCita() {\n let datos = {\n fecha: this.formatDateService.convertDateToFormatSpecifc(\n this.formatDateBackend,\n this.fechaCompletaDate,\n this.culture\n ),\n invitadoId: this.invitadoId,\n usuarioId: this.caso.profesionalAsignadoId,\n };\n this.apiService.agendarCita(datos).subscribe(\n (respuesta) => {},\n (error) => {\n console.error(error);\n }\n );\n }\n\n aceptarAbogado() {\n this.apiService\n .aceptarAbogado(this.abogado.id_usuario, this.id_caso)\n .subscribe(\n (respuesta) => {},\n (error) => {\n console.error(error);\n }\n );\n }\n\n navegar(destino) {\n this.seleccion.caso = this.caso;\n this.abogado = history.state.abogado;\n this.seleccion.abogado = this.abogado;\n switch (destino) {\n case 1:\n window.history.back();\n break;\n case 2:\n // deprecado\n let abogadoId = this.abogado.id_abogado;\n this.contratarAbogado.abogadoId = abogadoId;\n this.contratarAbogado.abogadoId = this.abogado.id_usuario;\n this.contratarAbogado.mpCallbackFailure =\n environment.angularUrl + '/pago/fallo';\n this.contratarAbogado.mpCallbackPending =\n environment.angularUrl + '/pago/pendiente';\n this.contratarAbogado.mpCallbackSuccess =\n environment.angularUrl + '/llamada';\n if (this.mostrarFecha == true) {\n this.contratarAbogado.mpCallbackSuccess =\n environment.angularUrl + '/agendada';\n this.contratarAbogado.planId = 2;\n } else {\n this.contratarAbogado.mpCallbackSuccess =\n environment.angularUrl + '/llamada';\n this.contratarAbogado.planId = 3;\n }\n\n //COMENTAR ESTA LLAMADA PARA HACER EL BYPASS A MERCADO PAGO\n\n this.apiService.postPago(this.contratarAbogado).subscribe(\n (respuesta) => {\n localStorage.setItem('abogado', JSON.stringify(this.abogado));\n localStorage.setItem(\n 'archivos',\n JSON.stringify(this.caso.archivosSeleccionados)\n );\n localStorage.setItem('caso', JSON.stringify(this.caso));\n window.location.href = respuesta.url;\n },\n (error) => {\n console.error(error);\n this.openSnackBar(\n 'Falló la redirección a Mercado Pago. Por favor intente nuevamente más tarde.'\n );\n }\n );\n\n //DESCOMENTAR LO DE ABAJO PARA HACER EL BYPASS A MERCADO PAGO\n\n // localStorage.setItem('abogado', JSON.stringify(this.abogado));\n // if(this.mostrarFecha == true) {\n // this.router.navigateByUrl(\"/agendada\", { state: this.seleccion});\n // } else {\n // this.router.navigateByUrl(\"/llamada\", { state: this.seleccion});\n // }\n\n break;\n default:\n break;\n }\n }\n\n doMultipago(planPlataforma: PlanPlataforma): void {\n let abogadoId = this.abogado.id_abogado;\n this.contratarAbogado.abogadoId = abogadoId;\n this.contratarAbogado.abogadoId = this.abogado.id_usuario;\n this.contratarAbogado.mpCallbackFailure =\n environment.angularUrl + '/pago/fallo';\n this.contratarAbogado.mpCallbackPending =\n environment.angularUrl + '/pago/pendiente';\n this.contratarAbogado.mpCallbackSuccess =\n environment.angularUrl + '/llamada';\n if (this.mostrarFecha == true) {\n this.contratarAbogado.mpCallbackSuccess =\n environment.angularUrl + '/agendada';\n this.contratarAbogado.planId = 2;\n } else {\n this.contratarAbogado.mpCallbackSuccess =\n environment.angularUrl + '/llamada';\n this.contratarAbogado.planId = 3;\n }\n let caso = JSON.parse(localStorage.getItem('caso-edit'));\n if(caso!=null && caso!=undefined){\n localStorage.setItem('abogado', JSON.stringify(this.abogado));\n localStorage.setItem(\n 'archivos',\n JSON.stringify(this.caso.archivosSeleccionados)\n );\n localStorage.setItem('caso', JSON.stringify(this.caso));\n this.router.navigateByUrl(\"/agendadamod\", { state: this.seleccion});\n }\n else{\n this.servicePlanMultipago.doClientePostPago(planPlataforma, this.contratarAbogado).subscribe(\n (respuesta) => {\n let url: URLSearchParams = new URLSearchParams(respuesta.url);\n let externalReference: string = url.get('external_reference');\n \n localStorage.setItem('externalReference', externalReference);\n localStorage.setItem('abogado', JSON.stringify(this.abogado));\n localStorage.setItem(\n 'archivos',\n JSON.stringify(this.caso.archivosSeleccionados)\n );\n localStorage.setItem('caso', JSON.stringify(this.caso));\n window.location.href = respuesta.url;\n },\n (error) => {\n console.error(error);\n this.openSnackBar(\n 'Falló la redirección a Mercado Pago. Por favor intente nuevamente más tarde.'\n );\n }\n );\n }\n //COMENTAR ESTA LLAMADA PARA HACER EL BYPASS A MERCADO PAGO\n \n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n}\n","
\n \n \n {{tituloHeader}}\n \n\n
\n \n \n {{titulo}}\n \n \n
\n\n
\n \n
\n \n

Tu cita se agendó con éxito

\n
\n

Has seleccionado a {{nombre}} {{apellido}} para tu caso

\n
\n
\n
\n
\n Fecha: {{this.fecha}}\n Hora: {{this.hora}}\n

Fecha: {{this.fecha}}

\n

Hora: {{this.hora}}

\n
\n {{nombre}} {{apellido}} se pondrá en contacto contigo para acordar el\n medio por el cual se realizará la consulta.\n
\n\n\n \n \n\n
\n
\n
\n
","import { Component, OnInit } from '@angular/core';\nimport { Location } from '@angular/common';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { ApiService } from '../../../../../../api/api.service';\nimport { Perfil } from '../../../../../../api/user';\nimport { StorageService } from '../../../../../../utils/storage/storage.service';\n// import { TiposCasoCode } from 'src/app/enums/TiposCasoCode';\nimport { TiposCasoCode } from '../../../../../../enums/TiposCasoCode';\n// import { FormatDateService } from 'src/app/utils/formatDate/formatDate.service.';\nimport { FormatDateService } from '../../../../../../utils/formatDate/formatDate.service.';\nimport { FilesService } from '../../../../../../utils/files.service';\nimport { CurrentTimeService } from '../../../../../../utils/currentTime/current-time.service';\nimport { PlanMultipagoService } from 'src/app/services/plan/plan-multipago.service';\nimport { BaseSnackBar } from 'src/app/components/admin/multipago/modules/multipago.service';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'app-agendada',\n templateUrl: './agendada.component.html',\n styleUrls: ['./agendada.component.css'],\n})\nexport class AgendadaComponent extends BaseSnackBar implements OnInit {\n url = '';\n titulo = '';\n tituloHeader = '';\n nombre = '';\n apellido = '';\n mostrarCita = false;\n mostrarSeleccion = false;\n abogado: any;\n caso: any;\n perfil: Perfil;\n id_caso: number;\n invitadoId: number;\n fecha: any;\n fechaCompletaString: string;\n fechaCompletaDate: Date;\n hora: any;\n citaId: number;\n\n formatCulture: string = 'full';\n culture: string = 'es-AR';\n formatDateBackend: string = 'yyyy-MM-ddTHH:mm:ss';\n\n externalReference: string;\n\n casoAceptado: boolean = false;\n\n constructor(\n private storageService: StorageService,\n private router: Router,\n private route: ActivatedRoute,\n private apiService: ApiService,\n private servicePlanMultipago: PlanMultipagoService,\n private _location: Location,\n private formatDateService: FormatDateService,\n private fileSrv: FilesService,\n private currentTimeSrv: CurrentTimeService,\n private _snackBar: MatSnackBar\n ) {\n super(_snackBar);\n\n this.url =\n this.router.getCurrentNavigation().extractedUrl.root.children.primary.segments[0].path;\n if (\n this.router.getCurrentNavigation().extras.state &&\n this.router.getCurrentNavigation().extras.state.titulo\n ) {\n this.titulo = this.router.getCurrentNavigation().extras.state.titulo;\n }\n if (this.url === 'agendada') {\n this.titulo = 'Cita agendada con éxito';\n this.tituloHeader = 'Agendar cita';\n this.mostrarSeleccion = false;\n this.mostrarCita = true;\n }\n if (this.url === 'agendadamod') {\n this.titulo = 'Cita agendada con éxito';\n this.tituloHeader = 'Agendar cita';\n this.mostrarSeleccion = false;\n this.mostrarCita = true;\n this.casoAceptado = true;\n }\n if (this.url === 'seleccionado') {\n let id_usuario =\n this.router.getCurrentNavigation().extras.state.id_usuario;\n let id_caso = this.router.getCurrentNavigation().extras.state.id_caso;\n\n this.casoAceptado = true;\n this.apiService.aceptarAbogado(id_usuario, id_caso).subscribe(\n (respuesta) => {},\n (error) => {\n console.error(error);\n }\n );\n\n this.titulo = 'Selección de abogado';\n this.tituloHeader = 'Detalle del caso';\n this.nombre = this.router.getCurrentNavigation().extras.state.nombre;\n this.apellido = this.router.getCurrentNavigation().extras.state.apellido;\n this.mostrarSeleccion = true;\n this.mostrarCita = false;\n }\n }\n\n ngOnInit(): void {\n this.route.queryParams.subscribe({\n next: (params) => {\n let externalReference: string =\n localStorage.getItem('externalReference');\n if (!externalReference || externalReference == 'null') {\n if (params?.token && params?.PayerID)\n externalReference = params.token;\n else\n externalReference = params['external_reference'];\n }\n\n if (this.casoAceptado) {\n this.getMiPerfil();\n } else {\n this.servicePlanMultipago\n .doClienteValidarPago(externalReference)\n .subscribe({\n next: () => {\n this.externalReference = externalReference;\n this.getMiPerfil();\n },\n error: (err) => {\n this.doShowErrorSnackBar(err);\n this.router.navigate(['/pago/fallo']);\n },\n });\n }\n },\n });\n }\n\n completarDatos() {\n this.abogado = JSON.parse(localStorage.getItem('abogado'));\n this.caso = JSON.parse(localStorage.getItem('caso'));\n this.fechaCompletaDate = new Date(\n this.storageService.getItem('fechaCompleta')\n );\n this.fechaCompletaString = this.storageService.getItem('fechaCompleta');\n\n let aux = JSON.parse(localStorage.getItem('respuestaConvertida'));\n this.fechaCompletaDate = new Date(aux);\n this.fechaCompletaString =\n this.formatDateService.convertDateToFormatSpecifc(\n this.formatCulture,\n this.fechaCompletaDate,\n this.culture\n );\n this.hora = this.formatDateService.convertDateToFormatSpecifc(\n 'HH:mm',\n this.fechaCompletaDate,\n this.culture\n );\n this.fecha =\n this.fechaCompletaDate.getDate() +\n '/' +\n (this.fechaCompletaDate.getMonth() + 1);\n\n this.caso.archivosSeleccionados = JSON.parse(\n localStorage.getItem('archivos')\n );\n this.caso.profesionalAsignadoId = this.abogado.id_usuario;\n this.nombre = this.abogado.nombre;\n this.apellido = this.abogado.apellido;\n this.hora = this.formatDateService.convertDateToFormatSpecifc(\n 'HH:mm',\n this.fechaCompletaDate,\n this.culture\n );\n this.agendarCita();\n }\n\n getMiPerfil() {\n this.apiService.getPerfil().subscribe(\n (perfil) => {\n this.invitadoId = perfil.id_usuario;\n this.completarDatos();\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n agendarCita() {\n let datos = {\n fecha: this.formatDateService.convertDateToFormatSpecifc(\n this.formatDateBackend,\n this.fechaCompletaDate,\n this.culture\n ),\n invitadoId: this.invitadoId,\n usuarioId: this.caso.profesionalAsignadoId,\n };\n let caso = localStorage.getItem(\"caso-edit\");\n if(caso!=null && caso!=undefined){\n this.actualizarCaso();\n }\n else{\n this.apiService.agendarCita(datos).subscribe(\n (respuesta) => {\n this.citaId = respuesta.id;\n this.crearCaso();\n \n },\n (error) => {\n console.error(error);\n }\n );\n \n }\n\n \n \n }\n\n aceptarAbogado() {\n this.apiService\n .aceptarAbogado(this.abogado.id_usuario, this.id_caso)\n .subscribe(\n (respuesta) => {},\n (error) => {\n console.error(error);\n }\n );\n }\n\n crearCaso() {\n let timeStamp = this.currentTimeSrv.getTimeStamp();\n let timeZone = '';\n this.abogado = JSON.parse(localStorage.getItem('abogado'));\n this.caso = JSON.parse(localStorage.getItem('caso'));\n // let archivos = JSON.parse(localStorage.getItem('archivos'));\n // if(archivos) {\n // for (let a of archivos) {\n // const { file, name } = a;\n // const archivoFinal = this.fileSrv.fromBase64ToFile(file, name);\n // this.caso.archivosSeleccionados.push(archivoFinal);\n // }\n // }\n this.caso.profesionalAsignadoId = this.abogado.id_usuario;\n this.apiService.getCountry().subscribe(\n (res) => {\n timeZone = res.countryCode;\n this.postCaso(timeStamp, timeZone);\n },\n (error) => {\n console.error(error);\n timeZone = this.currentTimeSrv.getTimezoneHours();\n this.postCaso(timeStamp, timeZone);\n }\n );\n }\n\n actualizarCaso() {\n let timeStamp = this.currentTimeSrv.getTimeStamp();\n let timeZone = '';\n this.abogado = JSON.parse(localStorage.getItem('abogado'));\n this.caso = JSON.parse(localStorage.getItem('caso'));\n let caso_edit= JSON.parse(localStorage.getItem('caso-edit'));\n // let archivos = JSON.parse(localStorage.getItem('archivos'));\n // if(archivos) {\n // for (let a of archivos) {\n // const { file, name } = a;\n // const archivoFinal = this.fileSrv.fromBase64ToFile(file, name);\n // this.caso.archivosSeleccionados.push(archivoFinal);\n // }\n // }\n this.caso.profesionalAsignadoId = this.abogado.id_usuario;\n this.apiService.getCountry().subscribe(\n (res) => {\n timeZone = res.countryCode;\n this.putCaso(timeStamp, timeZone,caso_edit);\n },\n (error) => {\n console.error(error);\n timeZone = this.currentTimeSrv.getTimezoneHours();\n this.putCaso(timeStamp, timeZone,caso_edit);\n }\n );\n }\n\n putCaso(timeStamp, timeZone,caso) {\n this.apiService\n .putCasoAgenda(\n caso.id_caso,\n this.caso.categoria.id_categoria,\n this.caso.detalles,\n this.caso.archivosSeleccionados,\n this.caso.localidad.id_localidad,\n this.caso.titulo,\n this.caso.profesionalAsignadoId,\n TiposCasoCode.AGENDA,\n this.citaId,\n timeStamp,\n timeZone\n )\n .subscribe(\n (respuesta) => {\n if (this.externalReference) {\n this.servicePlanMultipago\n .doClienteCasoPago(this.externalReference, respuesta.id_caso)\n .subscribe({\n complete: () => {\n console.log('servicePlanMultipago.doClienteCasoPago');\n },\n });\n }\n\n this.id_caso = respuesta.id_caso;\n this.aceptarAbogado;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n postCaso(timeStamp, timeZone) {\n this.apiService\n .postCasoAgenda(\n this.caso.categoria.id_categoria,\n this.caso.detalles,\n this.caso.archivosSeleccionados,\n this.caso.localidad.id_localidad,\n this.caso.titulo,\n this.caso.profesionalAsignadoId,\n TiposCasoCode.AGENDA,\n this.citaId,\n timeStamp,\n timeZone\n )\n .subscribe(\n (respuesta) => {\n if (this.externalReference) {\n this.servicePlanMultipago\n .doClienteCasoPago(this.externalReference, respuesta.id_caso)\n .subscribe({\n complete: () => {\n console.log('servicePlanMultipago.doClienteCasoPago');\n },\n });\n }\n\n this.id_caso = respuesta.id_caso;\n this.aceptarAbogado;\n },\n (error) => {\n console.error(error);\n }\n );\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { CrearComponent } from '../crear/crear.component';\nimport { CategoriaComponent } from '../categoria/categoria.component';\nimport { TipoServicioComponent } from '../tipo-servicio/tipo-servicio.component';\nimport { RevisarComponent } from '../revisar/revisar.component';\nimport { FinalizadaComponent } from '../finalizada/finalizada.component';\nimport { ActivosComponent } from '../../misCasos/activos/activos.component';\nimport { DetallesComponent } from '../../misCasos/detalles/detalles.component';\nimport { EspecialidadComponent } from '../especialidad/especialidad.component';\nimport { RangoComponent } from '../agenda/rango/rango.component';\nimport { ResumenComponent} from '../resumen/resumen.component';\nimport { AgendadaComponent } from '../agenda/agendada/agendada.component';\n\nimport { AuthGuard } from '../../../../../auth.guard'\nimport { Role } from '../../../../../enums/role';\n\nconst routes: Routes = [\n {\n path: 'crear-nuevo',\n component: CrearComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'edit-caso',\n component: CrearComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'casos-activos/:rolId',\n component: ActivosComponent\n },\n {\n path: 'detalles',\n component: DetallesComponent\n },\n {\n path: 'especialidad-nuevo',\n component: EspecialidadComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'categoria-nuevo',\n component: CategoriaComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'tipo-servicio-nuevo',\n component: TipoServicioComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'revisar-nuevo',\n component: RevisarComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'finalizada-nuevo',\n component: FinalizadaComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'rango',\n component: RangoComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'resumen',\n component: ResumenComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'agendada',\n component: AgendadaComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'agendadamod',\n component: AgendadaComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n {\n path: 'seleccionado',\n component: AgendadaComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Cliente] }\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule]\n})\nexport class ClienteCasosNuevosRoutingModule { }","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from '../../../../../modules/material.module';\n\nimport { CrearComponent } from '../crear/crear.component';\nimport { CategoriaComponent } from '../categoria/categoria.component';\nimport { TipoServicioComponent } from '../tipo-servicio/tipo-servicio.component';\nimport { FinalizadaComponent } from '../finalizada/finalizada.component';\nimport { ClienteCasosNuevosRoutingModule } from './clienteCasosNuevos-routing.module';\nimport { EspecialidadComponent } from '../especialidad/especialidad.component';\nimport { DialogComponent } from '../especialidad/dialog.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { LanguageNavComponent } from 'src/app/components/language-nav/language-nav.component';\n\n@NgModule({\n declarations: [\n CrearComponent,\n CategoriaComponent,\n TipoServicioComponent,\n // RevisarComponent,\n FinalizadaComponent,\n EspecialidadComponent,\n DialogComponent,\n ],\n imports: [\n BrowserModule,\n ReactiveFormsModule,\n ClienteCasosNuevosRoutingModule,\n MaterialModule,\n TranslateModule\n ],\n providers: [],\n bootstrap: []\n})\nexport class ClienteCasosNuevosModule { }\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from '../../../../modules/material.module';\n\nimport { ClienteCasosNuevosModule } from '../nuevo/modules/clienteCasosNuevos.modules';\nimport { TranslateModule } from '@ngx-translate/core';\n//import { ActivosComponent } from '../misCasos/activos/activos.component';\n// import { DialogComponent } from '../nuevo/especialidad/dialog.component';\nimport { DetallesComponent } from '../misCasos/detalles/detalles.component';\n\n\n@NgModule({\n declarations: [\n //ActivosComponent,\n // DialogComponent,\n //DetallesComponent\n ],\n imports: [\n BrowserModule,\n ReactiveFormsModule,\n ClienteCasosNuevosModule,\n MaterialModule,\n TranslateModule\n ],\n // entryComponents:[DialogComponent],\n providers: [],\n bootstrap: []\n})\nexport class ClienteCasosModule { }\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MaterialModule } from '../../../modules/material.module';\nimport { LoginRoutingModule } from '../../login/login-routing.module';\nimport { ClienteRegistroModule } from '../registroYMensajesAsociados/modules/clienteRegistro.modules';\nimport { ClienteCasosModule } from '../casos/modules/clienteCasosNuevos.modules';\n\n@NgModule({\n declarations: [\n ],\n imports: [\n BrowserModule,\n LoginRoutingModule,\n MaterialModule,\n ReactiveFormsModule,\n ClienteRegistroModule,\n ClienteCasosModule\n ],\n providers: [],\n bootstrap: []\n})\nexport class ClienteModule { }\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from '../../modules/material.module';\nimport { LoginRoutingModule } from './login-routing.module';\n\nimport { AbogadoModule } from '../abogado/modules/abogado.modules';\nimport { ClienteModule } from '../cliente/modules/cliente.modules';\nimport { RestablecerComponent } from './restablecer/restablecer.component';\nimport { NuevaFormularioComponent } from './nueva-formulario/nueva-formulario.component';\nimport { RedesComponent } from './redes/redes.component';\nimport { BienvenidaComponent } from './bienvenida/bienvenida.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport {MAT_SNACK_BAR_DEFAULT_OPTIONS} from '@angular/material/snack-bar';\n\n@NgModule({\n declarations: [\n RestablecerComponent,\n NuevaFormularioComponent,\n RedesComponent,\n BienvenidaComponent\n ],\n imports: [\n BrowserModule,\n LoginRoutingModule,\n MaterialModule,\n ReactiveFormsModule,\n ClienteModule,\n FormsModule,\n AbogadoModule,\n TranslateModule,\n ],\n providers: [ {provide: MAT_SNACK_BAR_DEFAULT_OPTIONS, useValue: {duration: 5000}}],\n bootstrap: [],\n})\nexport class LoginModule {}\n","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class AuthorizationInterceptor implements HttpInterceptor {\n\n constructor() {}\n\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\n const userToken = localStorage.getItem('token');\n const modifiedReq = req.clone({ \n headers: req.headers.set('Authorization', `Bearer ${userToken}`),\n });\n return userToken ? next.handle(modifiedReq) : next.handle(req);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { LogOutService } from '../services/logOut/log-out.service';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n constructor(private logOut: LogOutService) { }\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(request).pipe(catchError(err => {\n if ([403].indexOf(err.status) !== -1) {\n this.logOut.expirado();\n }\n return throwError(err)\n }))\n }\n\n}","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor,\n HttpResponse\n} from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\nimport { SpinnerServiceService } from '../../services/spinner-service/spinner-service.service';\n\n@Injectable()\nexport class SpinnerInterceptor implements HttpInterceptor {\n\n constructor(\n private spinnerService: SpinnerServiceService\n ) { }\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n this.spinnerService.updateShowSpinner(true);\n\n return next.handle(request)\n .pipe(catchError((err) => {\n this.spinnerService.updateShowSpinner(false);\n\n return throwError(err);\n }))\n .pipe(map, any>((evt: HttpEvent) => {\n if (evt instanceof HttpResponse) {\n this.spinnerService.updateShowSpinner(false);\n }\n return evt;\n }));\n }\n}\n","\n \n

\n {{ \"admin.title\" | translate }}\n \n

\n
\n

\n {{ \"admin.subTitle\" | translate }}\n \n

\n
\n
\n
\n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n \n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n
\n {{ \"admin.name.label\" | translate }}\n {{ abogado.nombre }}\n {{ \"admin.lastname.label\" | translate }}\n {{ abogado.apellido }}\n {{ \"admin.type.label\" | translate }}\n \n {{ abogado.datosProfesionales.tipoDni }}\n \n {{ \"admin.document.label\" | translate }}\n \n {{ abogado.datosProfesionales.numeroDni }}\n \n {{ \"admin.mail.label\" | translate }}\n {{ abogado.mail }}\n {{ \"admin.pais\" | translate }}\n \n {{ abogado.paisNombre }}\n \n {{ \"admin.jur.label\" | translate }}\n \n {{ abogado.datosProfesionales.localidad.jurisdiccion.nombre }}\n \n {{ \"admin.state.label\" | translate }}\n {{ abogado.provincia }}\n {{ \"admin.city.label\" | translate }}\n {{ abogado.ciudad }}\n {{ \"admin.college.label\" | translate }}\n \n {{ abogado.datosProfesionales.colegio }}\n \n {{ \"admin.tomo.label\" | translate }}\n \n {{ abogado.datosProfesionales.tomo }} \n \n {{ \"admin.folio.label\" | translate }}\n \n {{ abogado.datosProfesionales.folio }} \n \n \n {{ \"admin.otro.label\" | translate }}\n \n {{ abogado.datosProfesionales.otro }}\n \n {{ \"admin.actions.label\" | translate }}\n \n \n \n \n
\n \n {{ \"admin.acept.button\" | translate }}\n \n
\n
\n
\n","import { Component, OnInit, Inject } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { PendienteAbogado } from '../../../api/user';\nimport { ApiService } from '../../../api/api.service';\nimport { LogOutService } from '../../../services/logOut/log-out.service';\nimport { UpdateRangesService } from '../../../services/agenda/update-ranges.service';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-inicio',\n templateUrl: './inicio.component.html',\n styleUrls: ['./inicio.component.css'],\n})\nexport class InicioComponent implements OnInit {\n sinAbogados = false;\n constructor(\n public translate: TranslateService,\n private logOut: LogOutService,\n private _snackBar: MatSnackBar,\n private apiService: ApiService,\n private updateRangesService: UpdateRangesService\n ) {\n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang('es-AR');\n }\n displayedColumns: string[] = [\n 'nombre',\n 'apellido',\n 'tipo',\n 'dni',\n 'correo',\n 'pais',\n 'jurisdiccion',\n 'provinciaResidencia',\n 'ciudadResidencia',\n 'colegio',\n 'tomo',\n 'folio',\n 'otro',\n 'acciones',\n ];\n abogadosData: any;\n cargoLaLista = false;\n id: string;\n\n ngOnInit(): void {\n this.cargarAbogados();\n }\n abogados: PendienteAbogado[];\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n cargarAbogados() {\n this.abogadosData = [];\n this.apiService.getAbogados('P').subscribe(\n (abogados) => {\n this.abogados = abogados;\n abogados.forEach((abogado) => {\n abogado.datosProfesionales.forEach((dato) => {\n let aux = {\n nombre: '',\n apellido: '',\n mail: '',\n ciudad: '',\n provincia: '',\n paisNombre:'',\n datosProfesionales: {\n colegio: '',\n especialidades: [\n {\n id_especialidad: 0,\n nombre: '',\n },\n ],\n folio: '',\n localidad: {\n id_localidad: 0,\n jurisdiccion: {\n id_jurisdiccion: 0,\n nombre: '',\n },\n nombre: '',\n },\n numeroDni: '',\n tipoDni: '',\n tomo: '',\n telefono: '',\n estado: '',\n },\n id_usuario: 0,\n };\n aux.id_usuario = abogado.id_usuario;\n aux.mail = abogado.mail;\n aux.paisNombre = abogado.paisNombre;\n aux.nombre = abogado.nombre;\n aux.apellido = abogado.apellido;\n aux.ciudad = abogado.ciudad;\n aux.provincia = abogado.provincia;\n aux.datosProfesionales = dato;\n this.abogadosData.push(aux);\n });\n });\n this.cargoLaLista = true;\n if (abogados.length == 0) {\n this.sinAbogados = true;\n }\n },\n (error) => {\n console.error(error);\n }\n );\n }\n\n rechazar(dato): void {\n this.cargoLaLista = false;\n let id_datos_profesionales;\n id_datos_profesionales = dato.datosProfesionales.id_datos_profesionales;\n this.apiService.aceptarBajar('B', id_datos_profesionales).subscribe(\n (response) => {\n this.cargarAbogados();\n this.openSnackBar('Se rechazó el abogado.');\n },\n (error) => {\n console.error(error);\n this.openSnackBar(\n 'No fue posible rechazar al abogado. Por favor, vuelva a intentarlo.'\n );\n }\n );\n }\n\n aceptar(dato): void {\n this.cargoLaLista = false;\n let id_datos_profesionales;\n id_datos_profesionales = dato.datosProfesionales.id_datos_profesionales;\n let tags = [dato.datosProfesionales.localidad.jurisdiccion.nombre];\n this.apiService.aceptarBajar('A', id_datos_profesionales).subscribe(\n (response) => {\n //this.updateRangesService.updateTags(dato.id_usuario, tags);\n this.cargarAbogados();\n this.openSnackBar('Se aceptó al abogado');\n },\n (error) => {\n console.error(error);\n this.openSnackBar(\n 'No fue posible aceptar al abogado. Por favor, vuelva a intentarlo.'\n );\n }\n );\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n\n cerrarSesion() {\n this.logOut.cerrarSesion();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { LogOutService } from 'src/app/services/logOut/log-out.service';\n\n@Component({\n selector: 'app-admin',\n templateUrl: './admin.component.html',\n styleUrls: ['./admin.component.css']\n})\nexport class AdminComponent implements OnInit {\n\n constructor(\n public translate: TranslateService,\n private logOut: LogOutService) { }\n\n ngOnInit(): void {\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n cerrarSesion() {\n this.logOut.cerrarSesion();\n }\n\n}\n","\n\n Planes\n {{ getSubTitle() }}\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n IdNombreCostoCosto AnualTipoJurisdiccionesEspecialidadesAgendaLlamadaComision
\n \n \n  \n \n \n \n \n  \n \n \n \n {{ plan.id_plan }}\n \n {{ plan.nombre }}\n \n {{ plan.costo }}\n \n {{ plan.costoAnual }}\n \n {{ plan.planTipoId == 1 ? 'Cliente' : 'Abogado' }}\n \n {{ plan.jurisdicciones }}\n \n {{ plan.especialidades }}\n \n \n \n \n \n {{ plan.cantidadLegalify }}\n
\n\n
\n
\n
\n
\n \n \n Id\n \n \n \n
\n
\n \n \n Nombre\n \n \n \n
\n
\n \n \n Tipo\n \n \n Abogado\n Cliente\n \n \n
\n
\n \n \n Jurisdicciones\n \n \n \n
\n
\n \n \n Especialidades\n \n \n \n
\n
\n \n Agenda\n \n
\n
\n \n Llamada\n \n
\n
\n \n \n Comision\n \n \n \n
\n
\n \n \n Costo\n \n \n \n
\n
\n \n \n Costo Anual\n \n \n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n
\n","
\n \n \n \n {{ \"admin.administrador\" | translate }}\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n \n \n \n \n \n
\n","import { Component, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ApiService } from 'src/app/api/api.service';\nimport { Planes } from 'src/app/api/planes';\n\nconst CMS_STATUS_SAVE: number = 1;\nconst CMS_STATUS_DELETE: number = 2;\n\n@Component({\n selector: 'app-plan-list',\n templateUrl: './plan-list.component.html',\n styleUrls: ['./plan-list.component.css']\n})\nexport class PlanListComponent implements OnInit {\n\n CMS_STATUS_SAVE = CMS_STATUS_SAVE;\n CMS_STATUS_DELETE = CMS_STATUS_DELETE;\n\n statusCommand: number = 0;\n statusPlanId: number = 0;\n\n plan: Planes;\n cachePlanes: Planes[];\n\n formPlan: FormGroup = new FormGroup({\n id_plan: new FormControl(0, []),\n nombre: new FormControl('', [Validators.required]),\n planTipoId: new FormControl(1, [Validators.required]),\n jurisdicciones: new FormControl(0, [Validators.required]),\n especialidades: new FormControl(0, [Validators.required]),\n agenda: new FormControl(false, [Validators.required]),\n llamada: new FormControl(false, [Validators.required]),\n cantidadLegalify: new FormControl(0, [Validators.required]),\n costo: new FormControl(0, [Validators.required]),\n costoAnual: new FormControl(0, [Validators.required]),\n });\n\n constructor(\n private serviceApi: ApiService, \n private _snackBar: MatSnackBar,\n ) { }\n\n ngOnInit(): void {\n this.doPlanLoad();\n }\n\n getSubTitle(): string {\n return this.plan ? \"Editar\" : \"Lista\";\n }\n\n doPlanLoad(): void {\n this.statusCommand = 0;\n this.statusPlanId = null;\n this.plan = null;\n this.serviceApi.getPlanesAll().subscribe({\n next: (planes: Planes[]) => {\n this.cachePlanes = planes;\n console.log(\"Planes...\");\n console.log(planes);\n }\n });\n }\n\n doPlanNew(): void {\n let plan: Planes = {\n id_plan: 0,\n nombre: \"\",\n descripcion: '',\n estado: '1',\n planTipoId: 1,\n jurisdicciones: 1,\n especialidades: 1,\n agenda: false,\n llamada: false,\n cantidadLegalify: 0,\n costo: 0,\n costoAnual: 0,\n cantidadEspecialidades: 0,\n cantidadJurisdicciones: 0,\n visible: true,\n planVencido: false,\n planActivo: true,\n };\n\n this.doPlanSelect(plan);\n }\n\n doPlanSelect(plan: Planes): void {\n this.statusCommand = 0;\n this.statusPlanId = null;\n this.plan = plan;\n if (plan) {\n this.formPlan.patchValue({\n id_plan: plan.id_plan,\n nombre: plan.nombre,\n planTipoId: plan.planTipoId,\n jurisdicciones: plan.jurisdicciones,\n especialidades: plan.especialidades,\n agenda: plan.agenda,\n llamada: plan.llamada,\n cantidadLegalify: plan.cantidadLegalify,\n costo: plan.costo,\n costoAnual: plan.costoAnual,\n });\n }\n }\n\n doSave(): void {\n let formPlan: Planes = this.formPlan.getRawValue();\n let plan: Planes = {} as Planes;\n plan = Object.assign(plan, {\n id_plan: formPlan.id_plan,\n nombre: formPlan.nombre,\n planTipoId: formPlan.planTipoId,\n jurisdicciones: formPlan.jurisdicciones,\n especialidades: formPlan.especialidades,\n agenda: formPlan.agenda,\n llamada: formPlan.llamada,\n cantidadLegalify: formPlan.cantidadLegalify,\n costo: formPlan.costo,\n costoAnual: formPlan.costoAnual,\n });\n\n this.serviceApi.doPlanesSave(plan).subscribe({\n next: (result: Planes) => {\n this.doPlanLoad();\n },\n error: (err: any) => {\n if (err.error && err.error.message) {\n this.openSnackBar(\n err.error.message\n );\n }\n console.log(err);\n }\n });\n }\n\n doDelete(planId: number): void {\n this.serviceApi.doPlanesDelete(planId).subscribe({\n next: (plan: Planes) => {\n this.doPlanLoad();\n },\n error: (err: any) => {\n if (err.error && err.error.message) {\n this.openSnackBar(\n err.error.message\n );\n }\n console.log(err);\n }\n })\n }\n\n openSnackBar(message: string) {\n this._snackBar.open(message, '', { duration: 5000 });\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { InicioComponent } from './inicio.component';\nimport { AuthGuard } from '../../../auth.guard';\nimport { Role } from '../../../enums/role';\nimport { PaisesComponent } from '../paises/paises.component';\nimport { EntidadesComponent } from '../entidades/entidades.component';\nimport { CertificacionComponent } from '../certificacion/certificacion.component';\nimport { AdminComponent } from '../admin.component';\nimport { PlanListComponent } from '../plan/plan-list.component';\n\nconst routes: Routes = [\n {\n path: 'admin',\n component: AdminComponent,\n children: [{\n path: '',\n component: InicioComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Admin] },\n }, {\n path: 'plan',\n component: PlanListComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Admin] },\n }, {\n path: 'multipago',\n loadChildren: () => import('../multipago/modules/multipago.module').then(module => module.MultipagoModule),\n canLoad: [AuthGuard],\n data: { roles: [Role.Admin] }\n }]\n },\n\n { path: 'paises', component: PaisesComponent },\n { path: 'entidades', component: EntidadesComponent },\n { path: 'certificacion', component: CertificacionComponent },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n})\nexport class InicioRoutingModule {}\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Data } from '@angular/router';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { DataObject } from 'src/app/api/reporte';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DataService {\n private url = environment.apiUrl + '/';\n headers = new HttpHeaders({\n 'Content-Type': 'application/json',\n })\n constructor( private http: HttpClient ) {}\n\n crearReporte(){\n return this.http.get(\n this.url +\n `api/reportes/general`,\n {headers: this.headers }\n );\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DataService } from 'src/app/services/data/data.service';\nimport { LogOutService } from 'src/app/services/logOut/log-out.service';\n\n@Component({\n selector: 'app-data',\n templateUrl: './datos.component.html',\n styleUrls: ['./datos.component.css']\n})\nexport class DataComponent implements OnInit {\n\n constructor(private logOut: LogOutService, public translate: TranslateService, private dataService: DataService) { \n translate.addLangs(['es-AR', 'it-IT','en-US']);\n translate.setDefaultLang(sessionStorage.getItem('language'));\n }\n\n ngOnInit(): void {\n }\n\n switchLang(lang: string) {\n this.translate.use(lang);\n }\n\n cerrarSesion() {\n this.logOut.cerrarSesion();\n }\n\n public base64ToBlob(b64Data, sliceSize=512) {\n let byteCharacters = atob(b64Data);\n let byteArrays = [];\n for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n let slice = byteCharacters.slice(offset, offset + sliceSize);\n \n let byteNumbers = new Array(slice.length);\n for (var i = 0; i < slice.length; i++) {\n byteNumbers[i] = slice.charCodeAt(i);\n }\n let byteArray = new Uint8Array(byteNumbers)\n byteArrays.push(byteArray);\n }\n return new Blob(byteArrays, {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});\n }\n\n generateExcel(){\n this.dataService.crearReporte().subscribe( (res) => {\n let buf = this.base64ToBlob(res.base64Excel);\n const url = window.URL.createObjectURL(buf);\n const link = document.createElement('a');\n link.href = url;\n let str = 'reporte' + new Date().getDate() + \"/\" + ( new Date().getMonth() + 1 ) + \"/\" + new Date().getFullYear() + \".xlsx\" \n link.setAttribute('download', str);\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }, err => {\n console.log(\"Error en el reporte\", err)\n })\n }\n}\n","
\n \n \n {{ \"paises.admin\" | translate }}\n\n
\n \n
\n \n
\n\n \n
\n
\n \n

\n {{ \"data.title\" | translate }}\n

\n \n
\n
\n","import { Component, NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { InicioComponent } from '../inicio/inicio.component';\nimport { AuthGuard } from '../../../auth.guard';\nimport { Role } from '../../../enums/role';\nimport { PaisesComponent } from '../paises/paises.component';\nimport { NavbarAdminComponent } from '../navbar-admin/navbar-admin.component';\nimport { DataComponent } from '../datos/datos.component';\nimport { CertificacionComponent } from '../certificacion/certificacion.component';\n\nconst routes: Routes = [\n {\n path: 'admin',\n component: InicioComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Admin] },\n },\n\n {\n path: 'paises',\n component: PaisesComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Admin] },\n },\n {\n path: 'data-admin',\n component: DataComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Admin] },\n },\n {\n path: 'certificacion',\n component: CertificacionComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Admin] },\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n})\nexport class navbarAdminRouting {}\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { NavbarAdminComponent } from './navbar-admin.component';\nimport { CommonModule } from '@angular/common';\nimport { navbarAdminRouting } from './navbar-admin-routing.module';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatMenuModule } from '@angular/material/menu';\n\n@NgModule({\n declarations: [NavbarAdminComponent],\n imports: [\n BrowserModule,\n ReactiveFormsModule,\n CommonModule,\n MatMenuModule,\n navbarAdminRouting,\n TranslateModule,\n ],\n exports: [NavbarAdminComponent],\n providers: [],\n bootstrap: [],\n})\nexport class NavbarAdminmodule {}\n","import { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { InicioComponent } from './inicio.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { InicioRoutingModule } from './inicio-routing.module';\nimport { MaterialModule } from 'src/app/modules/material.module';\nimport { NavbarAdminmodule } from '../navbar-admin/navbar-admin.module';\nimport { AdminComponent } from '../admin.component';\nimport { PlanListComponent } from '../plan/plan-list.component';\nimport { CommonModule } from '@angular/common';\nimport { EspecialidadesComponent } from '../multipago/especialidades/especialidades.component';\nimport { ModalComponent } from '../multipago/especialidades/modal.component';\n\n@NgModule({\n declarations: [ InicioComponent, AdminComponent, PlanListComponent, EspecialidadesComponent, ModalComponent ],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n InicioRoutingModule,\n MaterialModule,\n NavbarAdminmodule,\n ],\n exports: [],\n providers: [],\n bootstrap: [],\n})\nexport class InicioModule {}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { InicioComponent } from '../inicio/inicio.component';\nimport { AuthGuard } from '../../../auth.guard';\nimport { Role } from '../../../enums/role';\nimport { PaisesComponent } from '../paises/paises.component';\nimport { NavbarAdminComponent } from '../navbar-admin/navbar-admin.component';\nimport { DataComponent } from '../datos/datos.component';\nimport { CertificacionComponent } from '../certificacion/certificacion.component';\n\nconst routes: Routes = [\n {\n path: 'admin',\n component: InicioComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Admin] },\n },\n { path: 'navbar-admin', component: NavbarAdminComponent },\n { path: 'paises', component: PaisesComponent },\n {\n path: 'data-admin',\n component: DataComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Admin] },\n },\n { path: 'certificacion', component: CertificacionComponent },\n];\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n})\nexport class PaisesRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MaterialModule } from '../../../modules/material.module';\nimport { PaisesComponent } from './paises.component';\nimport { NavbarAdminComponent } from '../navbar-admin/navbar-admin.component';\nimport { PaisesRoutingModule } from './paises-routing.module';\nimport { InicioComponent } from '../inicio/inicio.component';\nimport { InicioModule } from '../inicio/inicio.module';\nimport { NavbarAdminmodule } from '../navbar-admin/navbar-admin.module';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormsModule } from '@angular/forms';\n\n\n@NgModule({\n declarations: [PaisesComponent],\n imports: [\n BrowserModule,\n MaterialModule,\n ReactiveFormsModule,\n PaisesRoutingModule,\n NavbarAdminmodule,\n MatExpansionModule,\n FormsModule,\n TranslateModule,\n ],\n exports: [],\n providers: [],\n bootstrap: [],\n})\nexport class PaisesModule {}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { InicioComponent } from '../inicio/inicio.component';\nimport { AuthGuard } from '../../../auth.guard';\nimport { Role } from '../../../enums/role';\nimport { EntidadesComponent } from '../entidades/entidades.component';\nimport { NavbarAdminComponent } from '../navbar-admin/navbar-admin.component';\nimport { CertificacionComponent } from '../certificacion/certificacion.component';\n\nconst routes: Routes = [\n {\n path: 'admin',\n component: InicioComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Admin] },\n },\n { path: 'navbar-admin', component: NavbarAdminComponent },\n { path: 'entidades', component: EntidadesComponent },\n { path: 'certificacion', component: CertificacionComponent },\n];\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n})\nexport class EntidadesRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MaterialModule } from '../../../modules/material.module';\nimport { EntidadesComponent } from './entidades.component';\nimport { NavbarAdminComponent } from '../navbar-admin/navbar-admin.component';\nimport { EntidadesRoutingModule } from './entidades-routing.module';\nimport { InicioComponent } from '../inicio/inicio.component';\nimport { InicioModule } from '../inicio/inicio.module';\nimport { NavbarAdminmodule } from '../navbar-admin/navbar-admin.module';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n declarations: [EntidadesComponent],\n imports: [\n BrowserModule,\n MaterialModule,\n ReactiveFormsModule,\n EntidadesRoutingModule,\n NavbarAdminmodule,\n MatExpansionModule,\n TranslateModule,\n ],\n exports: [],\n providers: [],\n bootstrap: [],\n})\nexport class EntidadesModule {}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { InicioComponent } from '../inicio/inicio.component';\nimport { AuthGuard } from '../../../auth.guard';\nimport { Role } from '../../../enums/role';\nimport { EntidadesComponent } from '../entidades/entidades.component';\nimport { CertificacionComponent } from '../certificacion/certificacion.component';\nimport { NavbarAdminComponent } from '../navbar-admin/navbar-admin.component';\n\nconst routes: Routes = [\n {\n path: 'admin',\n component: InicioComponent,\n canActivate: [AuthGuard],\n data: { roles: [Role.Admin] },\n },\n { path: 'navbar-admin', component: NavbarAdminComponent },\n { path: 'entidades', component: EntidadesComponent },\n { path: 'certificacion', component: CertificacionComponent },\n];\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n})\nexport class CertificacionRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MaterialModule } from '../../../modules/material.module';\nimport { CertificacionComponent } from './certificacion.component';\nimport { CertificacionRoutingModule } from './certificacion-routing.module';\nimport { NavbarAdminmodule } from '../navbar-admin/navbar-admin.module';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@NgModule({\n declarations: [CertificacionComponent],\n imports: [\n BrowserModule,\n MaterialModule,\n ReactiveFormsModule,\n CertificacionRoutingModule,\n NavbarAdminmodule,\n MatExpansionModule,\n TranslateModule,\n ],\n exports: [],\n providers: [],\n bootstrap: [],\n})\nexport class CertificacionModule {}\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { ReactiveFormsModule } from '@angular/forms';\n\nimport { MaterialModule } from '../../../modules/material.module';\nimport { NavbarAdminmodule } from '../navbar-admin/navbar-admin.module';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { DataComponent } from './datos.component';\n\n@NgModule({\n declarations: [DataComponent],\n imports: [\n BrowserModule,\n MaterialModule,\n ReactiveFormsModule,\n NavbarAdminmodule,\n MatExpansionModule,\n TranslateModule,\n ],\n exports: [],\n providers: [],\n bootstrap: [],\n})\nexport class DatosModule {}\n","import { NgModule } from '@angular/core';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { AppRoutingModule } from './app-routing.module';\nimport {\n HttpClientModule,\n HTTP_INTERCEPTORS,\n HttpClient,\n} from '@angular/common/http';\nimport { AppComponent } from './app.component';\nimport { MaterialModule } from './modules/material.module';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { FormsModule } from '@angular/forms';\n\nimport { LoginComponent } from './components/login/login.component';\nimport { LoginModule } from './components/login/login.module';\n\nimport { AuthorizationInterceptor } from './interceptors/authorization.interceptor';\nimport { ErrorInterceptor } from './interceptors/error.interceptor';\n\nimport { CuentaValidadaClienteComponent } from './components/cliente/registroYMensajesAsociados/cuenta-validada-cliente/cuenta-validada-cliente.component';\nimport { PerfilComponent } from './components/cliente/perfil/perfil.component';\nimport { PerfilAbogadoComponent } from './components/abogado/perfil-abogado/perfil-abogado.component';\nimport { DialogComponent } from './components/abogado/perfil-abogado/dialog.component';\n\nimport { NavbarAbogadoComponent } from './components/abogado/navbar-abogado/navbar-abogado.component';\n\nimport { OportunidadesComponent } from './components/abogado/casos/oportunidades/oportunidades.component';\nimport { ActivosComponent } from './components/cliente/casos/misCasos/activos/activos.component';\nimport { NavbarClienteComponent } from './components/cliente/navbar-cliente/navbar-cliente.component';\nimport { VistaPreviaComponent } from './components/abogado/vista-previa/vista-previa.component';\nimport { RangoComponent } from './components/cliente/casos/nuevo/agenda/rango/rango.component';\nimport { PreviaComponent } from './components/abogado/seleccion/previa/previa.component';\nimport { DatosComponent } from './components/abogado/seleccion/datos/datos.component';\nimport { ResumenComponent } from './components/cliente/casos/nuevo/resumen/resumen.component';\nimport { AgendadaComponent } from './components/cliente/casos/nuevo/agenda/agendada/agendada.component';\nimport { OpinionesComponent } from './components/abogado/opiniones/opiniones.component';\nimport { CalificarComponent } from './components/calificar/calificar.component';\nimport { ArchivosComponent } from './components/archivos/archivos.component';\nimport { RevisarComponent } from './components/cliente/casos/nuevo/revisar/revisar.component';\nimport { DetallesComponent } from './components/cliente/casos/misCasos/detalles/detalles.component';\nimport { SecurePipe } from './pipes/secure.pipe';\nimport { PlanComponent } from './components/abogado/plan/plan.component';\nimport { AgregarComponent } from './components/abogado/agregar/agregar.component';\nimport { VinculacionComponent } from './components/mercado/vinculacion/vinculacion.component';\nimport { PagoExitosoComponent } from './components/mercado/pago-exitoso/pago-exitoso.component';\nimport { PagoFalloComponent } from './components/mercado/pago-fallo/pago-fallo.component';\nimport { PagoPendienteComponent } from './components/mercado/pago-pendiente/pago-pendiente.component';\nimport { DatePipe } from '@angular/common';\nimport { DialogVincularComponent } from './components/abogado/perfil-abogado/dialogvincular.component';\nimport { EntFormularioComponent } from './components/company/formulario/formulario.component';\nimport { CertFormularioComponent } from './components/certificacion/formulario/formulario.component';\nimport { CertAvisoComponent } from './components/certificacion/aviso/aviso.component';\nimport { DetalleComponent } from './components/abogado/plan/detalle/detalle.component';\nimport { MensajeValidarComponent } from './components/login/mensaje-validar/mensaje-validar.component';\nimport { MensajeEsperaComponent } from './components/abogado/agregar/mensaje-espera/mensaje-espera.component';\nimport { CuentaValidadaAbogadoComponent } from './components/abogado/registroYMensajesAsociados/cuenta-validada-abogado/cuenta-validada-abogado.component';\nimport { DialogValidarComponent } from './components/login/dialog-vincular/dialogvalidar.component';\nimport { MensajeReenvioComponent } from './components/login/mensaje-reenvio/mensaje-reenvio.component';\nimport { DialogCalificarComponent } from './components/calificar/dialog/dialog.component';\nimport { SpinnerInterceptor } from './interceptors/spinner/spinner.interceptor';\nimport { InicioModule } from './components/admin/inicio/inicio.module';\nimport { TranslateLoader, TranslateModule } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { PaisesModule } from './components/admin/paises/paises.module';\nimport { EntidadesModule } from './components/admin/entidades/entidades.module';\nimport { CertificacionModule } from './components/admin/certificacion/certificacion.module';\nimport { CancelarComponent } from './components/abogado/plan/cancelar/cancelar/cancelar.component';\nimport { ExitoComponent } from './components/abogado/plan/exito/exito.component';\nimport { PopupDowngradeComponent } from './components/abogado/plan/popup-downgrade/popup-downgrade.component';\nimport { PopupFacturacionComponent } from './components/abogado/plan/popup-facturacion/popup-facturacion.component';\nimport { PlanEnPerfilComponent } from './components/abogado/plan-en-perfil/plan-en-perfil.component';\nimport { ExternalComponent } from './components/cliente/registroYMensajesAsociados/external/external.component';\nimport { PopupBajaComponent } from './components/abogado/plan/popup-baja/popup-baja.component';\nimport { LanguageNavComponent } from './components/language-nav/language-nav.component';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TermsComponent } from './components/terms/terms.component';\nimport { DatosModule } from './components/admin/datos/datos.module';\nimport { MultipagoModule } from './components/admin/multipago/modules/multipago.module';\nimport { VinculacionesComponent } from './components/abogado/vinculaciones/vinculaciones.component';\nimport { AbogadoComponent } from './components/abogado/abogado.component';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatListModule } from '@angular/material/list';\nimport { PopupDialogComponent } from './components/cliente/casos/nuevo/crear/popup-dialog/popup-dialog.component';\nimport { ServiceWorkerModule } from '@angular/service-worker';\nimport { environment } from '../environments/environment';\nimport { LogoComponent } from './components/company/logo/logo.component';\n\n@NgModule({\n declarations: [\n AppComponent,\n LoginComponent,\n CuentaValidadaClienteComponent,\n PerfilComponent,\n PerfilAbogadoComponent,\n NavbarAbogadoComponent,\n OportunidadesComponent,\n ActivosComponent,\n NavbarClienteComponent,\n VistaPreviaComponent,\n RangoComponent,\n PreviaComponent,\n DatosComponent,\n ResumenComponent,\n AgendadaComponent,\n OpinionesComponent,\n CalificarComponent,\n ArchivosComponent,\n RevisarComponent,\n DetallesComponent,\n DialogComponent,\n SecurePipe,\n PlanComponent,\n AgregarComponent,\n VinculacionComponent,\n AbogadoComponent,\n VinculacionesComponent,\n PagoExitosoComponent,\n PagoFalloComponent,\n PagoPendienteComponent,\n DialogVincularComponent,\n DetalleComponent,\n MensajeValidarComponent,\n MensajeEsperaComponent,\n CuentaValidadaAbogadoComponent,\n DialogValidarComponent,\n EntFormularioComponent,\n CertFormularioComponent,\n CertAvisoComponent,\n MensajeReenvioComponent,\n DialogCalificarComponent,\n CancelarComponent,\n ExitoComponent,\n PopupDowngradeComponent,\n PopupBajaComponent,\n PopupFacturacionComponent,\n PlanEnPerfilComponent,\n ExternalComponent,\n LanguageNavComponent,\n TermsComponent,\n PopupDialogComponent,\n LogoComponent,\n ],\n imports: [\n ReactiveFormsModule,\n BrowserModule,\n AppRoutingModule,\n BrowserAnimationsModule,\n MaterialModule,\n LoginModule,\n MatTooltipModule,\n HttpClientModule,\n FormsModule,\n MatListModule,\n MatFormFieldModule,\n InicioModule,\n PaisesModule,\n DatosModule,\n EntidadesModule,\n CertificacionModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: httpTranslateLoader,\n deps: [HttpClient],\n },\n }),\n ServiceWorkerModule.register('ngsw-worker.js', {\n enabled: true,\n // Register the ServiceWorker as soon as the application is stable\n // or after 30 seconds (whichever comes first).\n registrationStrategy: 'registerWhenStable:30000'\n }),\n ],\n exports: [NavbarAbogadoComponent, ArchivosComponent],\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: AuthorizationInterceptor,\n multi: true,\n },\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: SpinnerInterceptor, multi: true },\n DatePipe,\n ],\n bootstrap: [AppComponent],\n})\nexport class AppModule {}\n\nexport function httpTranslateLoader(http: HttpClient) {\n return new TranslateHttpLoader(http);\n}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"],"x_google_ignoreList":[]}