{"version":3,"file":"8706.419faa8a9127e972.js","mappings":"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","names":["FormHelper","testCpf","control","controlname","controls","cpf0","soma","cpf","n","get","_a","value","g","c","_b","undefined","strCPF","replace","length","l","_c","setErrors","invalidCpf","p","_d","i","parseInt","substring","resto","u","_e","C","_f","k","Z","_g","b","_h","testDoc","testPasswordSame","password","repeatPassword","notSame","testFullName","name","invalidName","parts","split","sobrenome","testEmailSame","email","repeatEmail","factory","LoginRepository","constructor","httpClient","this","environment","loginCostumer","loginForm","headers","HttpHeaders","set","token","post","apiUrl","loginProducer","i0","LoginService","loginRepository","RegisterRepository","registerCostumer","registerForm","generateValidationCode","params","captcha","checkValidationCode","checkAuthIntegration","type","referencialId","url","RegisterService","registerRepository","SpinnerComponent","ngOnInit","selectors","ctx_r50","oxw","ctx_r54","routes","path","component","searchCep","formBuilder","formHelper","registerService","alertService","router","route","modalService","pdvService","authService","recaptchaV3Service","loginService","myProfileService","soccerTeamService","store","Subject","pipe","select","PdvSelectors","map","company","O","A","Q","images","logosite","list","teams","getCompany","getSoccerTeams","step0Form","group","Validators","validators","step1Form","phone","step2Form","genre","birth","soccerTeamId","step3Form","cep","step4Form","address","number","district","city","state","complement","country","goStep","y","snapshot","queryParams","redirect","redirecToCheckout","redirectTo","doc","setValue","loadingCompany","load","subscribe","res","companyId","id","t","soccerTeams","start","activateFrontCamera","step","constraints","video","facingMode","mediaStream","navigator","mediaDevices","getUserMedia","document","querySelector","srcObject","message","error","audio","then","stream","catch","err","hasNoCameraAccess","cameraError","ngOnDestroy","changeDocument","setValidators","removeValidators","openModal","template","modalRef","show","class","ignoreBackdropClick","backdrop","keyboard","waitTimer","setInterval","clearInterval","selectedStep","step0","step1","step2","step3","step4","forEach","index","nativeElement","style","display","validateStep0Form","invalid","errors","toast","icon","title","text","validateStep1Form","required","pattern","validateStep2Form","minlength","validateStep3Form","validateStep4Form","sendValidationCode","resend","loading","timer","bind","validationCodeFields","needSMSValidation","smsValidated","smsOnly","needPhoneValidation","phoneValidated","whatsOnly","needEmailValidation","emailValidated","emailOnly","execute","catchError","generateCodeErrors","msg","of","re","setTimeout","codeValidation","waitTimer2","code","validationCode","takeUntil","unsubscribe$","validationCodeError","E","hide","getCep","blockCep","s","f","v","status","disable","R","focus","getCep2","logradouro","bairro","localidade","uf","erro","w","enable","P","cookie","defineFormValues","registerCustomerErrorMessages","doLogin","birthDate","addressPostalCode","addressStreet","addressNumber","addressDistrict","addressCity","addressState","toUpperCase","addressComplement","addressCountry","fcmToken","rememberMe","saveCustomer","redirectToHomeOrCheckout","navigate","getTracks","track","stop","goToLogin","goToHome","removeSpace","eve","input","srcElement","join","checkAuthIntegrationCpf","toPromise","internalAuthInfo","info","externalAuthInfo","customer","phoneFormatted","N","slice","customerPhone","customerPhoneFormatted","phonec","gender","postalCode","street","_j","D","_k","console","log","RegisterComponent","ctx","RegisterRoutingModule","RouterModule","maskConfig","validation","RegisterModule","CommonModule","NgSelectModule","NgxMaskModule","FormsModule","ReactiveFormsModule","SpinnerModule","ModalModule","NgxSkeletonLoaderModule","dueTime","intervalOrScheduler","scheduler","asyncScheduler","intervalDuration","isScheduler","Observable","subscriber","due","isValidDate","now","schedule","closed","next","complete","duration","durationSelector","operate","source","hasValue","lastValue","durationSubscriber","isComplete","endDuration","unsubscribe","cleanupDuration","createOperatorSubscriber","innerFrom","audit","resolved","nextHandle","activeHandles","handle","Immediate","setImmediate","cb","Promise","resolve","findAndClearHandle","clearImmediate","immediateProvider","args","delegate","asapScheduler","AsyncScheduler","flush","action","_active","flushId","_scheduled","actions","shift","delay","AsyncAction","work","super","requestAsyncId","push","recycleAsyncId"],"sourceRoot":"webpack:///","sources":["./src/app/helpers/form.helper.ts","./src/app/repositories/login.repository.ts","./src/app/services/login.service.ts","./src/app/repositories/register.repository.ts","./src/app/services/register.service.ts","./src/app/views/components/spinner/spinner.component.ts","./src/app/views/components/spinner/spinner.component.html","./src/app/views/pages/register/register.component.html","./src/app/views/pages/register/register-routing.module.ts","./src/app/views/pages/register/register.component.ts","./src/app/views/pages/register/register.module.ts","./node_modules/rxjs/dist/esm/internal/observable/timer.js","./node_modules/rxjs/dist/esm/internal/operators/auditTime.js","./node_modules/rxjs/dist/esm/internal/operators/audit.js","./node_modules/rxjs/dist/esm/internal/util/Immediate.js","./node_modules/rxjs/dist/esm/internal/scheduler/immediateProvider.js","./node_modules/rxjs/dist/esm/internal/scheduler/asap.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/dist/esm/internal/scheduler/AsapAction.js"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\n\n/*\n este arquivo contém funções para validação de formulário com validações customizadas\n*/\n\n@Injectable({\n 'providedIn': 'root'\n})\n\nexport class FormHelper {\n\n /*\n função que irá testar se o CPF é valido\n */\n testCpf(control: AbstractControl) {\n let controlname = \"cpf\"\n\n if ((control as any).controls.cpf0 != null) {\n controlname = \"cpf0\"\n }\n\n let soma = 0;\n\n let cpf = control.get(controlname)?.value || control?.get('identificationNumber')?.value;\n\n // verifica se a variável cpf é igual a \"undefined\", exibindo uma msg de erro\n if (cpf === undefined) {\n return false;\n }\n\n // esta função retira os caracteres . e - da string do cpf, deixando apenas os números\n let strCPF = cpf.replace('.', '').replace('.', '').replace('-', '');\n // testa as sequencias que possuem todos os dígitos iguais e, se o cpf não tem 11 dígitos, retorna falso e exibe uma msg de erro\n if (strCPF === '00000000000' || strCPF === '11111111111' || strCPF === '22222222222' || strCPF === '33333333333' ||\n strCPF === '44444444444' || strCPF === '55555555555' || strCPF === '66666666666' || strCPF === '77777777777' || strCPF === '88888888888' ||\n strCPF === '99999999999' || strCPF.length !== 11) {\n control.get(controlname)?.setErrors({ invalidCpf: true });\n control.get(\"identificationNumber\")?.setErrors({ invalidCpf: true });\n }\n\n // os seis blocos seguintes de funções vão realizar a validação do CPF propriamente dito, conferindo se o DV bate. Caso alguma das funções não consiga verificar\n // o DV corretamente, mostrará uma mensagem de erro ao usuário e retornará falso, para que o usário posso digitar novamente um número para ser testado\n\n // multiplica cada digito por numeros de 1 a 9, soma-os e multiplica-os por 10. Depois, divide o resultado encontrado por 11 para encontrar o resto\n for (let i = 1; i <= 9; i++) {\n soma = soma + parseInt(strCPF.substring(i - 1, i)) * (11 - i);\n }\n\n let resto = (soma * 10) % 11;\n if ((resto === 10) || (resto === 11)) {\n resto = 0;\n }\n\n if (resto !== parseInt(strCPF.substring(9, 10))) {\n control.get(controlname)?.setErrors({ invalidCpf: true });\n control.get(\"identificationNumber\")?.setErrors({ invalidCpf: true });\n }\n\n soma = 0;\n for (let k = 1; k <= 10; k++) {\n soma = soma + parseInt(strCPF.substring(k - 1, k)) * (12 - k)\n }\n\n resto = (soma * 10) % 11;\n if ((resto === 10) || (resto === 11)) {\n resto = 0;\n }\n\n if (resto !== parseInt(strCPF.substring(10, 11))) {\n control.get(controlname)?.setErrors({ invalidCpf: true });\n control.get(\"identificationNumber\")?.setErrors({ invalidCpf: true });\n }\n\n return null;\n }\n\n\n\n testDoc(control: AbstractControl) {\n let controlname = \"doc\"\n\n let soma = 0;\n\n let cpf = control.get(controlname)?.value || control?.get('identificationNumber')?.value;\n\n // verifica se a variável cpf é igual a \"undefined\", exibindo uma msg de erro\n if (cpf === undefined) {\n return false;\n }\n\n // esta função retira os caracteres . e - da string do cpf, deixando apenas os números\n let strCPF = cpf.replace('.', '').replace('.', '').replace('-', '');\n // testa as sequencias que possuem todos os dígitos iguais e, se o cpf não tem 11 dígitos, retorna falso e exibe uma msg de erro\n if (strCPF === '00000000000' || strCPF === '11111111111' || strCPF === '22222222222' || strCPF === '33333333333' ||\n strCPF === '44444444444' || strCPF === '55555555555' || strCPF === '66666666666' || strCPF === '77777777777' || strCPF === '88888888888' ||\n strCPF === '99999999999' || strCPF.length !== 11) {\n control.get(controlname)?.setErrors({ invalidCpf: true });\n control.get(\"identificationNumber\")?.setErrors({ invalidCpf: true });\n }\n\n // os seis blocos seguintes de funções vão realizar a validação do CPF propriamente dito, conferindo se o DV bate. Caso alguma das funções não consiga verificar\n // o DV corretamente, mostrará uma mensagem de erro ao usuário e retornará falso, para que o usário posso digitar novamente um número para ser testado\n\n // multiplica cada digito por numeros de 1 a 9, soma-os e multiplica-os por 10. Depois, divide o resultado encontrado por 11 para encontrar o resto\n for (let i = 1; i <= 9; i++) {\n soma = soma + parseInt(strCPF.substring(i - 1, i)) * (11 - i);\n }\n\n let resto = (soma * 10) % 11;\n if ((resto === 10) || (resto === 11)) {\n resto = 0;\n }\n\n if (resto !== parseInt(strCPF.substring(9, 10))) {\n control.get(controlname)?.setErrors({ invalidCpf: true });\n control.get(\"identificationNumber\")?.setErrors({ invalidCpf: true });\n }\n\n soma = 0;\n for (let k = 1; k <= 10; k++) {\n soma = soma + parseInt(strCPF.substring(k - 1, k)) * (12 - k)\n }\n\n resto = (soma * 10) % 11;\n if ((resto === 10) || (resto === 11)) {\n resto = 0;\n }\n\n if (resto !== parseInt(strCPF.substring(10, 11))) {\n control.get(controlname)?.setErrors({ invalidCpf: true });\n control.get(\"identificationNumber\")?.setErrors({ invalidCpf: true });\n }\n\n return null;\n }\n\n /*\n verifica se a senha e o campo repetir senha conferem\n */\n testPasswordSame(control: AbstractControl) {\n if (control.value.password !== control.value.repeatPassword) {\n control.get(\"repeatPassword\")?.setErrors({ notSame: true });\n }\n\n return null;\n }\n\n\n /*\n verifica se o nome é completo\n */\n testFullName(control: AbstractControl) {\n let name = control.get(\"name\")?.value;\n\n if (name == null) {\n control.get(\"name\")?.setErrors({ invalidName: true });\n }\n\n let parts = name.split(' ');\n\n if (parts.length < 2) {\n control.get(\"name\")?.setErrors({ invalidName: true });\n }\n\n let sobrenome = parts[1];\n\n if (sobrenome == undefined) {\n control.get(\"name\")?.setErrors({ invalidName: true });\n }\n\n if (sobrenome != null && sobrenome.length < 2) {\n control.get(\"name\")?.setErrors({ invalidName: true });\n }\n\n\n return null;\n }\n\n\n /*\n verifica se os campos email e confirmar email são iguais\n */\n testEmailSame(control: AbstractControl) {\n if (control.value.email !== control.value.repeatEmail) {\n control.get(\"repeatEmail\")?.setErrors({ notSame: true });\n }\n\n return null;\n }\n\n\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 { LoginModel } from '../models/login.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoginRepository {\n\n private apiUrl: string = environment.apiUrl;\n\n constructor(\n private httpClient: HttpClient\n ) { }\n\n public loginCostumer(loginForm: LoginModel): Observable {\n let headers = new HttpHeaders();\n headers = headers.set('token-recaptcha', loginForm.token);\n return this.httpClient.post(`${this.apiUrl}/customer/login`, loginForm, {headers: headers});\n }\n\n public loginProducer(loginForm: LoginModel): Observable {\n let headers = new HttpHeaders();\n headers = headers.set('token-recaptcha', loginForm.token);\n headers = headers.set('x-login-producer','')\n return this.httpClient.post(`${this.apiUrl}/user/login`, loginForm, {headers: headers});\n }\n\n}\n","import { formatDate } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { LoginModel } from '../models/login.model';\nimport { LoginRepository } from '../repositories/login.repository';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoginService {\n\n constructor(\n private loginRepository: LoginRepository\n ) { }\n\n public loginCostumer(loginForm: LoginModel): Observable {\n return this.loginRepository.loginCostumer(loginForm);\n }\n\n public loginProducer(loginForm: any): Observable {\n return this.loginRepository.loginProducer(loginForm);\n }\n\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 { RegisterModel } from '../models/register.model';\nimport { AuthIntegrationType } from '../config/enums/auth-integration-type.enum';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RegisterRepository {\n\n private apiUrl: string = environment.apiUrl;\n\n constructor(\n private httpClient: HttpClient\n ) { }\n\n public registerCostumer(registerForm: RegisterModel): Observable {\n return this.httpClient.post(`${this.apiUrl}/customer/create`, registerForm);\n }\n\n public generateValidationCode(params: any, captcha:string): Observable {\n let headers = new HttpHeaders();\n headers = headers.set('token-recaptcha', captcha);\n\n return this.httpClient.post(`${this.apiUrl}/customer/create/generatecode-v1`, params, {headers: headers});\n }\n\n public checkValidationCode(params: any) {\n return this.httpClient.post(`${this.apiUrl}/customer/create/validatecode`, params);\n }\n\n public checkAuthIntegration(cpf: string, type: AuthIntegrationType , referencialId?: string) {\n let url = `${this.apiUrl}/auth-integration/cpf/${cpf}?type=${type}`;\n if(referencialId) {\n url += `&referencialId=${referencialId}`;\n }\n return this.httpClient.get(url);\n }\n\n}\n","import { formatDate } from '@angular/common';\nimport { Injectable } from '@angular/core';\nimport { map, Observable } from 'rxjs';\nimport { RegisterModel } from '../models/register.model';\nimport { RegisterRepository } from '../repositories/register.repository';\nimport { AuthIntegrationType } from '../config/enums/auth-integration-type.enum';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RegisterService {\n\n constructor(\n private registerRepository: RegisterRepository\n ) { }\n\n public registerCostumer(registerForm: RegisterModel): Observable {\n return this.registerRepository.registerCostumer(registerForm);\n }\n\n generateValidationCode(params: any, captcha: string) {\n return this.registerRepository.generateValidationCode(params, captcha);\n }\n\n checkValidationCode(params: any) {\n return this.registerRepository.checkValidationCode(params);\n }\n\n checkAuthIntegration(cpf: string) {\n const type = environment.authIntegration.type;\n const referencialId = environment.authIntegration.referencialId;\n return this.registerRepository.checkAuthIntegration(cpf, type, referencialId);\n }\n\n}\n","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'app-spinner',\n templateUrl: './spinner.component.html',\n styleUrls: ['./spinner.component.scss']\n})\nexport class SpinnerComponent implements OnInit {\n\n constructor() { }\n\n // tipo do spinner\n @Input() spinnerType: string = 'grow';\n\n // tamanho do spinner\n @Input() spinnerWidth!: string;\n\n ngOnInit(): void {\n }\n\n}\n","
\n Loading...\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 Brasileiro\n Estrangeiro\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

(mínimo: 6 caracteres)

\n
\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n\n \n \n {{item.name}}\n \n \n
\n

{{ item.name }}

\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
\n
\n \n \n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n\n
\n
\n Já possui uma conta? Acessar\n
\n
\n
\n\n\n\n\n\n\n\n
\n

Validar Telefone

\n

Validar WhatsApp

\n

Validar Email

\n
\n
\n
\n
\n
\n
Digite o código sms que você recebeu no seu telefone.\n
\n
Digite o código de confirmação\n que você recebeu no seu whatsapp.
\n
Enviamos o\n código de confirmação para o email informado. Por favor, verifique também na caixa de entrada,\n lixo eletrônico ou spam! 😉
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n \n
","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { RegisterComponent } from './register.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: RegisterComponent\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class RegisterRoutingModule { }\n","import { Component, OnInit, ViewChild, ElementRef, TemplateRef } from '@angular/core';\nimport { SearchCepService } from '../../../services/search-cep.service';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { FormHelper } from '../../../helpers/form.helper';\nimport { RegisterService } from '../../../services/register.service';\nimport { of, Subject, Subscription } from 'rxjs';\nimport { catchError, map, takeUntil } from 'rxjs/operators';\nimport { AlertService } from '../../../services/alert.service';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\nimport { ReCaptchaV3Service } from 'ng-recaptcha';\nimport { LoginService } from '../../../services/login.service';\nimport { PdvService } from 'src/app/services/pdv.service';\nimport { AuthService } from '../../../services/auth.service';\nimport { MyProfileService } from 'src/app/services/my-profile.service';\nimport { select, Store } from '@ngrx/store';\nimport { PdvSelectors } from 'src/app/store/pdv/selectors';\nimport { environment } from 'src/environments/environment';\nimport { SoccerTeamService } from 'src/app/services/soccer-team.service';\n\n@Component({\n selector: 'app-register',\n templateUrl: './register.component.html',\n styleUrls: ['./register.component.scss']\n})\nexport class RegisterComponent implements OnInit {\n\n // FormGrops de cada passo\n public step0Form!: FormGroup;\n public step1Form!: FormGroup;\n public step2Form!: FormGroup;\n public step3Form!: FormGroup;\n public step4Form!: FormGroup;\n\n // se cada passo é válido ou não\n public step0FormInvalid: boolean = true;\n public step1FormInvalid: boolean = true;\n public step2FormInvalid: boolean = true;\n public step3FormInvalid: boolean = true;\n public step4FormInvalid: boolean = true;\n\n // se cada passos foi enviado ou não\n public step0Submitted: boolean = false;\n public step1Submitted: boolean = false;\n public step2Submitted: boolean = false;\n public step3Submitted: boolean = false;\n public step4Submitted: boolean = false;\n\n public loadingCompany: boolean = false;\n \n public companyId: string = \"\"\n public doc: string = \"cpf\";\n\n // campo número para dar foco quando o cep for preenchido\n @ViewChild('number') number!: ElementRef;\n\n // cada passo do formulário\n @ViewChild('step0', { static: true }) step0!: ElementRef;\n @ViewChild('step1', { static: true }) step1!: ElementRef;\n @ViewChild('step2', { static: true }) step2!: ElementRef;\n @ViewChild('step3', { static: true }) step3!: ElementRef;\n @ViewChild('step4', { static: true }) step4!: ElementRef;\n\n @ViewChild('codeValidation', { static: true }) codeValidation!: TemplateRef;\n\n\n // mensagem que será exibida caso o cep seja inválido ou tenha ocorrido um erro\n public invalidCEPMessage: string = '';\n\n // variável que vai conter os valores de todos os formulários\n public registerForm!: any;\n\n // aguardando dados da api\n public loading: boolean = false;\n\n // erros ao registrar usuário\n public registerCustomerErrorMessages!: any;\n\n public needEmailValidation: boolean = false;\n\n public needPhoneValidation: boolean = false;\n\n public needSMSValidation: boolean = false;\n\n public emailValidated: boolean = false;\n\n public phoneValidated: boolean = false;\n\n public smsValidated: boolean = false;\n\n public validationCode: string = '';\n\n public waitTimer: number = 0;\n\n public waitTimer2: number = 0;\n\n public validationCodeError: boolean = false;\n\n public generateCodeErrors: string = '';\n\n public blockCep: boolean = false;\n\n public unsubscribe$ = new Subject();\n\n public modalRef?: BsModalRef;\n\n public timer: number = 90;\n\n private redirecToCheckout: boolean = false;\n\n private redirectTo: string = '';\n\n //facial\n mediaStream!: MediaStream;\n cameraError!: string;\n public sendSelfie: boolean = false\n public hasNoCameraAccess: boolean = false;\n public token: string|undefined\n public facialUserId: string = \"\"\n public customerHasFacial: boolean = false\n\n private subscription!: Subscription;\n public step: number = 0;\n public photo: string = '';\n public sent: boolean = false;\n public showFacialRekognition: boolean = true;\n public tookPicture: boolean = false;\n public loading1: boolean = false;\n public errorMessage: string = '';\n public loading2: boolean = false;\n public loading3: boolean = false;\n public loading4: boolean = false;\n public sent2: boolean = false;\n public sendFacialFail: boolean = false\n public hideResendPicture: boolean = false\n public soccerTeams: any = [];\n public askFavoriteTeam: boolean = environment.askFavoriteTeam;\n\n public orders: any = [];\n public tickets: any = [];\n\n logo$ = this.store.pipe(\n select(PdvSelectors.selectCompany),\n map((company) => company?.images?.logosite ?? '')\n );\n\n teams$ = this.soccerTeamService.list().pipe(\n map((teams) => teams.teams)\n );\n\n constructor(private searchCep: SearchCepService,\n private formBuilder: FormBuilder,\n private formHelper: FormHelper,\n private registerService: RegisterService,\n private alertService: AlertService,\n private router: Router,\n private route: ActivatedRoute,\n private modalService: BsModalService,\n private pdvService: PdvService,\n private authService: AuthService,\n private recaptchaV3Service: ReCaptchaV3Service,\n private loginService: LoginService,\n private myProfileService: MyProfileService,\n private soccerTeamService: SoccerTeamService,\n private store: Store,\n ) { }\n\n ngOnInit(): void {\n this.getCompany();\n this.getSoccerTeams();\n\n this.step0Form = this.formBuilder.group({\n 'cpf0': ['', Validators.required],\n }, {\n validators: [this.formHelper.testCpf]\n });\n\n // formulário passo 1\n this.step1Form = this.formBuilder.group({\n 'name': ['', Validators.required],\n 'cpf': ['', Validators.required],\n 'email': ['', [Validators.required, Validators.email]],\n 'repeatEmail': ['', [Validators.required, Validators.email]],\n 'phone': ['', [Validators.required, Validators.pattern('^\\\\([1-9]{2}\\\\) (?:[2-8]|9[1-9])[0-9]{3}\\\\-[0-9]{4}$')]]\n }, {\n validators: [this.formHelper.testCpf, this.formHelper.testEmailSame as any, this.formHelper.testFullName as any]\n });\n\n \n // formulário passo 2\n this.step2Form = this.formBuilder.group({\n 'password': ['', [Validators.required, Validators.minLength(6)]],\n 'repeatPassword': ['', Validators.required],\n 'genre': [null],\n 'birth': ['', Validators.required],\n 'soccerTeamId': [null]\n }, {\n validators: [this.formHelper.testPasswordSame]\n });\n\n // formulário passo 3\n this.step3Form = this.formBuilder.group({\n 'cep': ['', Validators.required]\n });\n\n // formulário passo 4\n this.step4Form = this.formBuilder.group({\n 'address': ['', Validators.required],\n 'number': ['', Validators.required],\n 'district': ['', Validators.required],\n 'city': ['', Validators.required],\n 'state': ['', Validators.required],\n 'complement': [''],\n 'country': ['BRA', Validators.required]\n });\n\n // desabilita os passos do formulaŕios e mostra o 1 por padrão\n if (environment.authIntegration) {\n this.goStep(0);\n } else {\n this.goStep(1);\n }\n\n\n // if (this.activatedRoute.snapshot.queryParams['redirect']) {\n // if (this.activatedRoute.snapshot.queryParams['redirect'] == 'checkout') {\n // this.redirectToCheckoutPage = true;\n // }else{\n // this.redirectTo = this.activatedRoute.snapshot.queryParams['redirect'];\n // }\n // }\n\n // verifica sem tem query param redirect=checkout, se tiver, define redirecToCheckout como verdadeiro\n if (this.route.snapshot.queryParams['redirect']) {\n if (this.route.snapshot.queryParams['redirect'] == 'checkout') {\n this.redirecToCheckout = true;\n }\n else{\n this.redirectTo = this.route.snapshot.queryParams['redirect'];\n }\n }\n\n\n\n if(this.route.snapshot.queryParams['doc']) {\n this.step0Form.controls['cpf0'].setValue(this.route.snapshot.queryParams['doc']);\n }\n }\n\n getCompany() {\n this.loadingCompany = true\n \n this.pdvService.load().subscribe((res) => {\n this.loadingCompany = false\n this.companyId = res.company.id \n })\n }\n\n async getSoccerTeams() {\n const res = await this.soccerTeamService.list() as any;\n this.soccerTeams = res.teams;\n }\n \n start() {\n this.activateFrontCamera();\n this.step = 2;\n }\n\n async activateFrontCamera() {\n try {\n const constraints = { video: { facingMode: 'user' } };\n this.mediaStream = await navigator.mediaDevices.getUserMedia(constraints);\n const videoElement = document.querySelector('video');\n videoElement!.srcObject = this.mediaStream;\n } catch (error: any) {\n let constraints={audio:false,video:true};\n navigator.mediaDevices.getUserMedia(constraints)\n .then((stream)=>{})\n .catch((err)=>\n {\n if(err.name==\"NotAllowedError\"){this.hasNoCameraAccess = true}\n });\n\n this.cameraError =\n 'Não foi possível acessar a câmera frontal: ' + error.message;\n }\n }\n\n ngOnDestroy(): void {\n }\n\n changeDocument(document) {\n this.doc = document\n if (this.doc == \"cpf\") { \n this.step1Form.controls[\"cpf\"].setValue(\"\")\n this.step1Form.setValidators([this.formHelper.testCpf as any, this.formHelper.testFullName, this.formHelper.testEmailSame])\n } else {\n this.step1Form.controls[\"cpf\"].setValue(\"\")\n this.step1Form.removeValidators(this.formHelper.testCpf as any)\n this.step1Form.setValidators([this.formHelper.testFullName, this.formHelper.testEmailSame])\n }\n }\n\n openModal(template: TemplateRef) {\n this.modalRef = this.modalService.show(template, {\n class: 'modal-dialog-centered',\n ignoreBackdropClick: true,\n backdrop: 'static',\n keyboard: false\n });\n this.waitTimer = 25\n const id = setInterval(() => {\n if(this.waitTimer > 0) {\n this.waitTimer--;\n }\n if (this.waitTimer == 0) {\n clearInterval(id);\n }\n }, 1000);\n }\n\n /*\n mostra ou esconde o passo de acordo com o passo atual\n */\n goStep(selectedStep: number): void {\n const steps = [this.step0, this.step1, this.step2, this.step3, this.step4];\n steps.forEach((step, index) => {\n step.nativeElement.style.display = (index === selectedStep) ? 'block' : 'none';\n });\n }\n validateStep0Form(): void { \n if (this.step0Form.invalid == true) {\n if (this.step0Form.controls['cpf0'].errors) {\n if (this.step0Form.controls['cpf0'].errors['invalidCpf']) {\n this.alertService.toast({ icon: 'error', title: 'CPF', text: 'Cpf é inválido' })\n }\n }\n }\n }\n\n\n /*\n checa os campos do passo 1 e exibe mensagem de erro se houver\n */\n validateStep1Form(): void {\n \n if (this.step1Form.invalid == true) {\n if (this.step1Form.controls['phone'].errors) {\n if (this.step1Form.controls['phone'].errors['required']) {\n this.alertService.toast({ icon: 'error', title: 'Telefone', text: 'Telefone é obrigatório' })\n }\n if (this.step1Form.controls['phone'].errors['pattern']) {\n this.alertService.toast({ icon: 'error', title: 'Telefone', text: 'Telefone tem que ser válido' })\n }\n }\n\n if (this.step1Form.controls['repeatEmail'].errors) {\n if (this.step1Form.controls['repeatEmail'].errors['required']) {\n this.alertService.toast({ icon: 'error', title: 'Email', text: 'Confirmar email é obrigatório' })\n }\n\n if (this.step1Form.controls['repeatEmail'].errors['email']) {\n this.alertService.toast({ icon: 'error', title: 'Email', text: 'Email tem que ser válido' })\n }\n\n if (this.step1Form.controls['repeatEmail'].errors['notSame'] == true) {\n this.alertService.toast({ icon: 'error', title: 'Email', text: 'Email não confere' })\n }\n }\n\n if (this.step1Form.controls['email'].errors) {\n if (this.step1Form.controls['email'].errors['required']) {\n this.alertService.toast({ icon: 'error', title: 'Email', text: 'Email é obrigatório' })\n }\n\n if (this.step1Form.controls['email'].errors['email'] == true) {\n this.alertService.toast({ icon: 'error', title: 'Email', text: 'Email tem que ser válido' })\n }\n }\n\n if (this.step1Form.controls['cpf'].errors) {\n if (this.step1Form.controls['cpf'].errors['invalidCpf']) {\n this.alertService.toast({ icon: 'error', title: 'CPF', text: 'Cpf é inválido' })\n }\n }\n\n if (this.step1Form.controls['name'].errors) {\n this.alertService.toast({ icon: 'error', title: 'Nome', text: 'Nome completo é obrigatório' })\n }\n }\n\n }\n\n /*\n checa os campos do passo 3 e exibe mensagem de erro se houver\n */\n validateStep2Form(): void {\n if (this.step2Form.invalid == true) {\n if (this.step2Form.controls['birth'].errors) {\n if (this.step2Form.controls['birth'].errors['required']) {\n this.alertService.toast({ icon: 'error', title: 'Data de nascimento', text: 'Data de nascimento é obrigatório' })\n }\n if (this.step2Form.controls['birth'].errors['pattern']) {\n this.alertService.toast({ icon: 'error', title: 'Data de nascimento', text: 'Data de nascimento tem que ser válida' })\n }\n }\n\n if (this.step2Form.controls['genre'].errors) {\n if (this.step2Form.controls['genre'].errors['required']) {\n this.alertService.toast({ icon: 'error', title: 'Erro', text: 'Gênero é obrigatório' })\n }\n }\n\n if (this.step2Form.controls['repeatPassword'].errors) {\n if (this.step2Form.controls['repeatPassword'].errors['required'] == true) {\n this.alertService.toast({ icon: 'error', title: 'Repetir senha', text: 'Confimar a senha é obrigatório' })\n }\n if (this.step2Form.controls['repeatPassword'].errors['notSame'] == true) {\n this.alertService.toast({ icon: 'error', title: 'Repetir senha', text: 'Senhas tem que ser iguais' })\n }\n }\n\n if (this.step2Form.controls['password'].errors) {\n if (this.step2Form.controls['password'].errors['required']) {\n this.alertService.toast({ icon: 'error', title: 'Senha', text: 'Senha é obrigatório' })\n }\n if (this.step2Form.controls['password'].errors['minlength']) {\n this.alertService.toast({ icon: 'error', title: 'Senha', text: 'Senha tem que ter no mínimo 6 caracteres' })\n }\n }\n }\n }\n\n /*\n checa os campos do passo 4 e exibe mensagem de erro se houver\n */\n validateStep3Form(): void {\n if (this.step3Form.invalid == true) {\n if (this.step3Form.controls['cep'].errors) {\n if (this.step3Form.controls['cep'].errors['required']) {\n this.alertService.toast({ icon: 'error', title: 'CEP', text: 'Cep é obrigatório' })\n }\n }\n }\n }\n\n /*\n checa os campos do passo 4 e exibe mensagem de erro se houver\n */\n validateStep4Form(): void {\n if (this.step4Form.invalid == true) {\n if (this.step4Form.controls['address'].errors) {\n if (this.step4Form.controls['address'].errors['required']) {\n this.alertService.toast({ icon: 'error', title: 'Endereço', text: 'Rua é obrigatório' })\n }\n }\n\n if (this.step4Form.controls['number'].errors) {\n if (this.step4Form.controls['number'].errors['required']) {\n this.alertService.toast({ icon: 'error', title: 'Número', text: 'Número é obrigatório' })\n }\n }\n\n if (this.step4Form.controls['city'].errors) {\n if (this.step4Form.controls['city'].errors['required']) {\n this.alertService.toast({ icon: 'error', title: 'Cidade', text: 'Cidade é obrigatório' })\n }\n }\n\n if (this.step4Form.controls['state'].errors) {\n if (this.step4Form.controls['state'].errors['required']) {\n this.alertService.toast({ icon: 'error', title: 'Estado', text: 'Estado é obrigatório' })\n }\n }\n\n if (this.step4Form.controls['country'].errors) {\n if (this.step4Form.controls['country'].errors['required']) {\n this.alertService.toast({ icon: 'error', title: 'País', text: 'País é obrigatório' })\n }\n }\n }\n }\n\n /*\n envia o código de validação\n */\n sendValidationCode(resend?: boolean): void {\n if (this.step1Form.invalid == false) {\n this.loading = true;\n\n this.waitTimer = 0;\n\n let timer = setInterval(function (this: any) {\n if (this.waitTimer <= 0) {\n this.waitTimer = 0\n clearInterval(timer)\n } else {\n this.waitTimer -= 1\n }\n\n }.bind(this), 1000)\n\n let validationCodeFields: any = {\n doc: this.step1Form.controls['cpf'].value,\n name: this.step1Form.controls['name'].value,\n email: this.step1Form.controls['email'].value,\n phone: this.step1Form.controls['phone'].value\n }\n\n if (resend) {\n if (this.needSMSValidation && !this.smsValidated) {\n validationCodeFields.smsOnly = true;\n } else if (this.needPhoneValidation && !this.phoneValidated) {\n validationCodeFields.whatsOnly = true;\n } else if (this.needEmailValidation && !this.emailValidated) {\n validationCodeFields.emailOnly = true;\n }\n }\n\n this.recaptchaV3Service.execute('submitSearch').subscribe((token) => {\n this.registerService.generateValidationCode(validationCodeFields, token).pipe(\n catchError((errors: any) => {\n this.loading = false;\n this.generateCodeErrors = errors.error.errors[0].msg;\n this.alertService.toast({ icon: 'error', title: 'Erro', text: this.generateCodeErrors });\n return of(errors);\n })\n ).subscribe((re: any) => {\n setTimeout(() => {\n this.loading = false;\n }, 311);\n\n if (re.error != null && re.error.errors != null && re.error.errors.length >= 0) {\n this.loading = false\n return\n }\n\n if (!resend && (re.needPhoneValidation || re.needEmailValidation || re.needSMSValidation)) {\n this.needEmailValidation = re.needEmailValidation;\n this.needPhoneValidation = re.needPhoneValidation;\n this.needSMSValidation = re.needSMSValidation;\n\n this.emailValidated = !re.needEmailValidation;\n this.phoneValidated = !re.needPhoneValidation;\n this.smsValidated = !re.needSMSValidation;\n if (this.needEmailValidation != false || this.needPhoneValidation != false || this.needSMSValidation != false) {\n if (this.step1Form.controls['email'].value !== this.step1Form.controls['repeatEmail'].value) {\n this.alertService.toast({ icon: 'error', title: 'Email', text: 'Email não confere' })\n } else {\n this.openModal(this.codeValidation);\n this.loading = false\n }\n }\n }\n if (this.needEmailValidation == false && this.needPhoneValidation == false && this.needSMSValidation == false) {\n this.loading = false\n this.waitTimer = 0;\n this.waitTimer2 = 0;\n this.goStep(2)\n }\n\n });\n });\n }\n }\n\n /*\n checa se código de validação é válido\n */\n checkValidationCode(): void {\n this.loading = true;\n\n let type: string = '';\n let value: string = '';\n\n this.waitTimer2 = 25;\n\n let timer = setInterval(function (this: any) {\n if (this.waitTimer2 <= 0) {\n this.waitTimer2 = 0\n clearInterval(timer)\n } else {\n this.waitTimer2 -= 1\n }\n\n }.bind(this), 1000)\n\n if (this.needSMSValidation && !this.smsValidated) {\n type = 'sms';\n value = this.step1Form.value.phone;\n } else if (this.needPhoneValidation && !this.phoneValidated) {\n type = 'whatsapp';\n value = this.step1Form.value.phone;\n }\n else if (this.needEmailValidation && !this.emailValidated) {\n type = 'email';\n value = this.step1Form.value.email;\n }\n\n let validationCode = {\n code: this.validationCode,\n type: type,\n value: value\n }\n\n this.registerService.checkValidationCode(validationCode).pipe(\n takeUntil(this.unsubscribe$),\n catchError((error: any) => {\n this.loading = false;\n this.validationCodeError = true;\n this.alertService.toast({ icon: 'error', title: 'Erro', text: 'Código inválido. Insira o código enviado para ' + this.step1Form.controls['email'].value });\n return of(error);\n })).subscribe((re: any) => {\n if (re == 'Código validado!') {\n this.loading = false;\n this.validationCode = '';\n\n if (type == 'sms') {\n this.smsValidated = true;\n } else if (type == 'whatsapp') {\n this.phoneValidated = true;\n } else if (type == 'email') {\n this.emailValidated = true;\n }\n\n if (this.smsValidated && this.phoneValidated && this.emailValidated) {\n this.modalRef?.hide();\n this.loading = false\n this.waitTimer = 0;\n this.waitTimer2 = 0;\n this.goStep(2);\n }\n }\n });\n }\n\n /*\n busca endereço pelo CEP\n */\n getCep() {\n this.blockCep = true;\n let cep = this.step3Form.controls['cep'].value;\n // busca endereço pelo cep\n if (cep.length >= 8) {\n this.searchCep.getCep(cep).pipe(catchError((error: any) => {\n return of(error);\n })).subscribe((re: any) => {\n // define valor dos campos com o resultado da busca\n this.step4Form.get('address')?.setValue(re.address);\n this.step4Form.get('district')?.setValue(re.district);\n this.step4Form.get('city')?.setValue(re.city);\n this.step4Form.get('state')?.setValue(re.state);\n\n // se busca tiver sido feita com sucesso, e todos os campos estiverem certos, vai ao próximo slide e dá focus no campo número\n if (re.status !== 404 && re.status !== 400 && re.city !== null && cep.length >= 8 && re != null && re.message !== \"Timeout has occurred\") {\n this.goStep(4);\n this.blockCep = false;\n this.step4Form.get('city')?.disable()\n this.step4Form.get('state')?.disable()\n setTimeout(() => {\n this.number.nativeElement.focus();\n }, 301)\n }\n\n // se cep for inválido ou tiver erro\n if (re.status == 404 || re.status == 400 || re.status == null || re.status == 500 || re == null || re == undefined) {\n this.blockCep = true;\n this.getCep2(cep);\n }\n if (re.error != null) {\n this.blockCep = true;\n this.getCep2(cep);\n }\n });\n }\n }\n\n /*\n busca cep utilizando outro serviço caso o primeiro falhe\n */\n getCep2(cep: string) {\n this.blockCep = true;\n this.searchCep.getCep2(cep).subscribe((re: any) => {\n // define valor dos campos com o resultado da busca\n this.step4Form.get('address')?.setValue(re.logradouro);\n this.step4Form.get('district')?.setValue(re.bairro);\n this.step4Form.get('city')?.setValue(re.localidade);\n this.step4Form.get('state')?.setValue(re.uf);\n this.step4Form.get('city')?.disable()\n this.step4Form.get('state')?.disable()\n // se busca tiver sido feita com sucesso, dá focus no campo número\n if (re.erro == undefined && re.erro !== true && re.localidade !== null && cep.length >= 8) {\n this.blockCep = false;\n this.goStep(4);\n setTimeout(() => {\n this.number.nativeElement.focus();\n }, 301)\n } else {\n this.step4Form.get('city')?.enable()\n this.step4Form.get('state')?.enable()\n this.blockCep = false;\n this.alertService.toast({ icon: 'error', title: 'Erro', text: 'CEP não encontrado. Digite o estado (UF) e cidade nanualmente' });\n }\n });\n }\n\n /*\n chama serviço para registar usuário\n */\n registerCostumer() {\n this.loading = true;\n if (this.step1Form.invalid == false &&\n this.step2Form.invalid == false &&\n this.step3Form.invalid == false &&\n this.step4Form.invalid == false) {\n \n //pega o token do firebase caso seja pelo app, senão vem como vazio/não definido\n let token = document.cookie.replace(/(?:(?:^|.*;\\s*)token\\s*\\=\\s*([^;]*).*$)|^.*$/, \"$1\") != null ? document.cookie.replace(/(?:(?:^|.*;\\s*)token\\s*\\=\\s*([^;]*).*$)|^.*$/, \"$1\") : undefined\n \n this.defineFormValues(token)\n this.registerService.registerCostumer(this.registerForm).pipe(\n takeUntil(this.unsubscribe$),\n catchError((error: any) => {\n this.registerCustomerErrorMessages = error.error.errors[0].msg;\n this.alertService.toast({ icon: 'error', title: 'Erro', text: this.registerCustomerErrorMessages });\n this.loading = false;\n return of(error);\n })\n ).subscribe((re: any) => {\n if (re.id) { \n this.alertService.toast({ icon: 'success', title: 'Cadastro Realizado', text: 'Você será redirecionado.' });\n this.doLogin(token)\n this.loading = false;\n }else{\n this.alertService.toast({ icon: 'error', title: 'Erro', text: 'Não foi possível realizar o cadastro' });\n this.loading = false;\n }\n });\n }else{\n if (this.step1Form.invalid == true){\n this.alertService.toast({ icon: 'error', title: 'Erro no passo 1', text: 'Volte para o passo 1 e corrija os erros' });\n }\n if (this.step2Form.invalid == true){\n this.alertService.toast({ icon: 'error', title: 'Erro no passo 2', text: 'Volte para o passo 2 e corrija os erros' });\n }\n if (this.step3Form.invalid == true){\n this.alertService.toast({ icon: 'error', title: 'Erro no passo 3', text: 'Volte para o passo 3 e corrija os erros' });\n }\n if (this.step4Form.invalid == true){\n this.alertService.toast({ icon: 'error', title: 'Erro no passo 4', text: 'Volte para o passo 4 e corrija os erros' });\n }\n this.loading = false\n }\n }\n\n defineFormValues(token: string|undefined){ \n this.registerForm = {\n name: this.step1Form.controls['name'].value,\n doc: this.step1Form.controls['cpf'].value,\n email: this.step1Form.controls['email'].value,\n phone: this.step1Form.controls['phone'].value,\n password: this.step2Form.controls['password'].value,\n genre: this.step2Form.controls['genre'].value,\n birthDate: this.step2Form.controls['birth'].value,\n addressPostalCode: this.step3Form.controls['cep'].value,\n addressStreet: this.step4Form.controls['address'].value,\n addressNumber: this.step4Form.controls['number'].value,\n addressDistrict: this.step4Form.controls['district'].value,\n addressCity: this.step4Form.controls['city'].value,\n addressState: this.step4Form.controls['state'].value.toUpperCase(),\n addressComplement: this.step4Form.controls['complement'].value,\n addressCountry: this.step4Form.controls['country'].value,\n soccerTeamId: this.step2Form.controls['soccerTeamId'].value,\n fcmToken: token\n } \n }\n\n doLogin(fcmToken: string|undefined){\n this.recaptchaV3Service.execute('submitSearch').subscribe((token) => {\n // salva os valores do formulário em uma variável de acordo com o LoginModel\n let loginForm = {\n email: this.step1Form.controls['email'].value,\n password: this.step2Form.controls['password'].value,\n rememberMe: false,\n token: token,\n fcmToken: fcmToken\n }\n\n // chama serviço para fazer login\n this.loginService.loginCostumer(loginForm).pipe(\n catchError((error: any) => {\n this.loading = false;\n return of(error);\n }),\n takeUntil(this.unsubscribe$)\n ).subscribe((res: any) => {\n if (res.doc) {\n this.alertService.toast({ icon: 'success', title: 'Sucesso', text: 'Usuário logado' })\n this.authService.saveCustomer(res) \n this.loading = false;\n this.redirectToHomeOrCheckout()\n }\n });\n });\n }\n\n redirectToHomeOrCheckout(){\n if (this.redirecToCheckout == true) { \n this.router.navigate(['/payment-method'])\n }\n else if (this.redirectTo) {\n this.router.navigate([this.redirectTo])\n }\n else {\n if (this.mediaStream) {\n this.mediaStream.getTracks().forEach((track) => track.stop());\n }\n this.router.navigate(['/'])\n }\n }\n\n goToLogin(){\n this.router.navigate(['/auth/login']);\n }\n \n goToHome(){\n if (this.mediaStream) {\n this.mediaStream.getTracks().forEach((track) => track.stop());\n }\n this.router.navigate(['/']);\n }\n\n removeSpace(eve: any, input: string) {\n if (input == 'email') {\n this.step1Form.get('email')?.setValue(eve.srcElement.value.split(' ').join(''));\n } else {\n this.step1Form.get('repeatEmail')?.setValue(eve.srcElement.value.split(' ').join(''));\n }\n }\n\n async checkAuthIntegrationCpf() {\n this.loading = true; \n try {\n const re: any = await this.registerService.checkAuthIntegration(this.step0Form.controls['cpf0'].value).toPromise();\n this.loading = false;\n\n if (!re.internalAuthInfo) {\n this.goStep(1);\n }\n \n if (re.internalAuthInfo && re.internalAuthInfo.email) {\n this.alertService.toast({ icon: 'error', title: 'Erro', text: 'CPF já cadastrado em nossa plataforma' });\n this.router.navigate(['/auth/login'], { queryParams: { doc: this.step0Form.controls['cpf0'].value } });\n return;\n }\n\n const info = re.externalAuthInfo;\n const customer = re.internalAuthInfo;\n \n const phone = info.phone?.replace(/\\D/g, '');\n const phoneFormatted = `(${phone?.slice(0, 2)}) ${phone?.slice(2, 7)}-${phone?.slice(7)}`;\n\n const customerPhone = customer.phone?.replace(/\\D/g, '');\n const customerPhoneFormatted = `(${customerPhone?.slice(0, 2)}) ${customerPhone?.slice(2, 7)}-${customerPhone?.slice(7)}`;\n\n let phonec = \"\"\n if (info.phone != null) {\n phonec = phoneFormatted || customerPhoneFormatted\n } \n\n this.step1Form.setValue({\n name: info.name || customer.name || '',\n cpf: info.cpf || customer.doc || '',\n email: info.email || customer.email || '',\n phone: phonec,\n repeatEmail: info.email || customer.email || ''\n });\n\n if(info.cpf){\n this.step1Form.controls['cpf'].disable();\n }\n\n this.step2Form.setValue({\n genre: info.gender || '',\n password: '',\n repeatPassword: '',\n birth: info.birthDate || '',\n soccerTeamId: null\n });\n\n this.step3Form.setValue({\n cep: info.address?.postalCode?.replace(/\\D/g, '') || '',\n });\n\n this.step4Form.setValue({\n complement: info.address?.complement || '',\n address: info.address?.street || '',\n number: info.address?.number || '',\n district: info.address?.district || '',\n city: info.address?.city || '',\n state: info.address?.state || '',\n country: 'BRA'\n });\n } catch (error) {\n console.log('errorOnCheckDigitalIntegrationCpf', error);\n this.loading = false;\n }\n\n this.goStep(1);\n }\n\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxMaskModule, IConfig } from 'ngx-mask'\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgSelectModule } from '@ng-select/ng-select';\nconst maskConfig: Partial = {\n validation: false,\n};\nimport { SpinnerModule } from '../../components/spinner/spinner.module';\n\nimport { RegisterComponent } from './register.component';\nimport { RegisterRoutingModule } from './register-routing.module';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { NgxSkeletonLoaderModule } from 'ngx-skeleton-loader';\n\n@NgModule({\n declarations: [\n RegisterComponent\n ],\n imports: [\n CommonModule,\n NgSelectModule,\n RegisterRoutingModule,\n NgxMaskModule.forRoot(maskConfig),\n FormsModule,\n ReactiveFormsModule,\n SpinnerModule,\n ModalModule.forRoot(),\n NgxSkeletonLoaderModule,\n ]\n})\nexport class RegisterModule { }\n","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime = 0, intervalOrScheduler, scheduler = asyncScheduler) {\n let intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable((subscriber) => {\n let due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n let n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler = asyncScheduler) {\n return audit(() => timer(duration, scheduler));\n}\n","import { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function audit(durationSelector) {\n return operate((source, subscriber) => {\n let hasValue = false;\n let lastValue = null;\n let durationSubscriber = null;\n let isComplete = false;\n const endDuration = () => {\n durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();\n durationSubscriber = null;\n if (hasValue) {\n hasValue = false;\n const value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n isComplete && subscriber.complete();\n };\n const cleanupDuration = () => {\n durationSubscriber = null;\n isComplete && subscriber.complete();\n };\n source.subscribe(createOperatorSubscriber(subscriber, (value) => {\n hasValue = true;\n lastValue = value;\n if (!durationSubscriber) {\n innerFrom(durationSelector(value)).subscribe((durationSubscriber = createOperatorSubscriber(subscriber, endDuration, cleanupDuration)));\n }\n }, () => {\n isComplete = true;\n (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete();\n }));\n });\n}\n","let nextHandle = 1;\nlet resolved;\nconst activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport const Immediate = {\n setImmediate(cb) {\n const handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(() => findAndClearHandle(handle) && cb());\n return handle;\n },\n clearImmediate(handle) {\n findAndClearHandle(handle);\n },\n};\nexport const TestTools = {\n pending() {\n return Object.keys(activeHandles).length;\n }\n};\n","import { Immediate } from '../util/Immediate';\nconst { setImmediate, clearImmediate } = Immediate;\nexport const immediateProvider = {\n setImmediate(...args) {\n const { delegate } = immediateProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate)(...args);\n },\n clearImmediate(handle) {\n const { delegate } = immediateProvider;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport const asapScheduler = new AsapScheduler(AsapAction);\nexport const asap = asapScheduler;\n","import { AsyncScheduler } from './AsyncScheduler';\nexport class AsapScheduler extends AsyncScheduler {\n flush(action) {\n this._active = true;\n const flushId = this._scheduled;\n this._scheduled = undefined;\n const { actions } = this;\n let error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n }\n}\n","import { AsyncAction } from './AsyncAction';\nimport { immediateProvider } from './immediateProvider';\nexport class AsapAction extends AsyncAction {\n constructor(scheduler, work) {\n super(scheduler, work);\n this.scheduler = scheduler;\n this.work = work;\n }\n requestAsyncId(scheduler, id, delay = 0) {\n if (delay !== null && delay > 0) {\n return super.requestAsyncId(scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n }\n recycleAsyncId(scheduler, id, delay = 0) {\n var _a;\n if (delay != null ? delay > 0 : this.delay > 0) {\n return super.recycleAsyncId(scheduler, id, delay);\n }\n const { actions } = scheduler;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n immediateProvider.clearImmediate(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n }\n}\n"]}