{"version":3,"sources":["webpack:///src/app/modules/pharmacist/modal-add-pharmacist/modal-add-pharmacist.component.ts","webpack:///src/app/modules/pharmacist/modal-add-pharmacist/modal-add-pharmacist.component.html","webpack:///src/app/modules/pharmacist/modal-add-pharmacist/modal-add-pharmacist.component.scss","webpack:///src/app/modules/pharmacist/modal-search/modal-search.component.html","webpack:///src/app/core/services/validation.util.ts","webpack:///src/app/modules/pharmacist/modal-search/modal-search.component.ts","webpack:///src/app/modules/pharmacist/modal-search/modal-search.component.scss","webpack:///src/app/modules/pharmacist/pharmacist-list/pharmacist-list.component.html","webpack:///src/app/modules/pharmacist/pharmacist-list/pharmacist-list.component.ts","webpack:///src/app/modules/pharmacist/pharmacist-list/pharmacist-list.component.scss","webpack:///src/app/modules/pharmacy/pharmacy.guard.ts","webpack:///src/app/modules/pharmacist/pharmacist-routing.module.ts","webpack:///src/app/modules/pharmacist/pharmacist.module.ts"],"names":["modalRef","fb","notification","pharmacistService","cepService","userService","loading","message","states","updateListPharmacistEvent","this","form","group","name","required","nomeValidator","cpf","crf","number","uf","identity","cellphone","telephone","email","emailConfirmation","emailContact","dateOfBirth","sex","address","city","complement","street","neighborhood","cep","cepValidator","membership","mothersName","control","validators","emailMatch","consultedPatient","patchForm","disableInputs","emailForm","get","valueChanges","pipe","map","value","toLowerCase","setValue","emitEvent","filter","_","valid","debounceTime","environment","switchMap","checkEmailExists","catchError","err","of","subscribe","res","status","setErrors","exists","invalid","disable","enable","markFormGroup","pendency","undefined","pharmacist","getRawValue","pharmacy","_id","save","toPromise","notify","hide","emit","error","console","log","nascimento","controls","format","nome","genero","mae","event","target","length","replace","data","consult","erro","patchValue","logradouro","bairro","localidade","a","nativeAsync","selector","template","isValid","providedIn","router","pharmacyService","bigboostService","pharmacists","openModalAddPharmacistEvent","updateListPatientEvent","loadingSpinnerEvent","isValidCpf","hasPharmacist","getPharmacyByCpf","addPharmacist","consultCpf","pharmacistId","erroCodigo","Object","values","includes","getPharmacistsByPharmacyId","authService","modalService","nzModalService","createdAt","pageSize","paginationData","skip","totalRecord","orderBy","sortOrder","scrollConfig","x","y","getUserData","getPharmacists","getPharmacyByUserId","user","pageIndex","params","key","initialState","userType","modal","show","backdrop","keyboard","content","showModalAddPharmacist","class","confirm","nzTitle","nzContent","nzOnOk","async","removePharmacist","limit","getFilter","navigate","PharmacyGuard","route","state","routes","path","component","canActivate","redirectTo","PharmacistRoutingModule","imports","forChild","exports","PharmacistModule","declarations","forRoot"],"mappings":"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","file":"x","sourcesContent":["import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { ValidationService } from '@app/core/services/validation.service';\nimport { CepService } from '@app/modules/entry/services/cep.service';\nimport { UserService } from '@app/modules/user/user.service';\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\nimport { BrazilState } from '@app/shared/models';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { markFormGroup } from '@app/utils/markFormGroup';\nimport { environment } from '@env/environment';\nimport moment from 'moment';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { of } from 'rxjs/internal/observable/of';\nimport { catchError, debounceTime, filter, map, switchMap } from 'rxjs/operators';\nimport { PharmacistService } from '../services/pharmacist.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-modal-add-pharmacist',\n  templateUrl: './modal-add-pharmacist.component.html',\n  styleUrls: ['./modal-add-pharmacist.component.scss']\n})\nexport class ModalAddPharmacistComponent implements OnInit {\n  loading = false;\n  consultedPatient: any;\n  message = '';\n  pharmacy: any;\n  states: BrazilState[] = BrazilianStates;\n\n  @Output() updateListPharmacistEvent = new EventEmitter<any>();\n\n  form: FormGroup;\n\n  constructor(\n    public modalRef: BsModalRef,\n    private fb: FormBuilder,\n    private notification: AppToastService,\n    private pharmacistService: PharmacistService,\n    private cepService: CepService,\n    private userService: UserService\n  ) {\n    this.form = this.fb.group(\n      {\n        name: ['', [Validators.required, ValidationService.nomeValidator]],\n        cpf: ['', Validators.required],\n        crf: this.fb.group({\n          number: ['', Validators.required],\n          uf: ['', Validators.required]\n        }),\n        identity: ['', Validators.required],\n        cellphone: ['', Validators.required],\n        telephone: [''],\n        email: ['', [Validators.required, Validators.email]],\n        emailConfirmation: ['', [Validators.required, Validators.email]],\n        emailContact: ['', [Validators.required, Validators.email]],\n        dateOfBirth: [null, Validators.required],\n        sex: ['', Validators.required],\n        address: this.fb.group({\n          uf: [null, Validators.required],\n          city: ['', Validators.required],\n          complement: [''],\n          number: ['', Validators.required],\n          street: ['', Validators.required],\n          neighborhood: ['', Validators.required],\n          cep: ['', [Validators.required, ValidationService.cepValidator]]\n        }),\n        membership: this.fb.group({\n          mothersName: this.fb.control('', Validators.required)\n        })\n      },\n      { validators: [ValidationService.emailMatch] }\n    );\n  }\n\n  ngOnInit() {\n    if (this.consultedPatient) {\n      this.patchForm();\n      this.disableInputs();\n    }\n\n    const emailForm = this.form.get('email');\n    emailForm.valueChanges\n      .pipe(\n        map(email => {\n          const value = email && email.toLowerCase();\n          emailForm.setValue(value, { emitEvent: false });\n          return value;\n        }),\n        filter(_ => emailForm.valid),\n        debounceTime(environment.debounceTime),\n        switchMap(email => this.userService.checkEmailExists(email).pipe(catchError(err => of(err))))\n      )\n      .subscribe(res => {\n        if (res.status === 200) {\n          emailForm.setErrors({ exists: true });\n        } else if (res.status === 404) {\n          emailForm.setErrors(null);\n        } else if (res.status === 400) {\n          emailForm.setErrors({ invalid: true });\n        }\n      });\n\n    this.form.get('emailConfirmation').valueChanges.subscribe(email => {\n      this.form.get('emailConfirmation').setValue(email.toLowerCase(), { emitEvent: false });\n    });\n\n    this.form.get('emailContact').valueChanges.subscribe(email => {\n      this.form.get('emailContact').setValue(email.toLowerCase(), { emitEvent: false });\n    });\n  }\n\n  checkRepeatEmail(value: boolean) {\n    if (value) {\n      this.form.get('emailContact').setValue(this.form.get('email').value);\n      this.form.get('emailContact').disable();\n    } else {\n      this.form.get('emailContact').enable();\n    }\n  }\n\n  @nativeAsync\n  async submitForm() {\n    markFormGroup(this.form);\n    this.form.value.pendency = this.consultedPatient.status === -1 ? this.consultedPatient : undefined;\n    try {\n      if (this.form.valid) {\n        this.loading = true;\n        const pharmacist = this.form.getRawValue();\n        pharmacist.pharmacy = this.pharmacy._id;\n        await this.pharmacistService.save(pharmacist).toPromise();\n        this.loading = false;\n        this.notification.notify('success', 'Sucesso', 'Farmacêutico cadastrado com sucesso!');\n        this.modalRef.hide();\n        this.updateListPharmacistEvent.emit(null);\n      }\n    } catch (error) {\n      this.message = error.error.message;\n      console.log(error);\n      this.loading = false;\n    }\n  }\n\n  private patchForm() {\n    if (this.consultedPatient.nascimento) {\n      const nascimento = moment(this.consultedPatient.nascimento, 'DD/MM/YYYY');\n      this.form.controls['dateOfBirth'].setValue(nascimento.format('YYYY-MM-DD'));\n    }\n\n    this.form.controls['name'].setValue(this.consultedPatient.nome || '');\n    this.form.controls['cpf'].setValue(this.consultedPatient.cpf);\n    this.form.controls['sex'].setValue(this.consultedPatient.genero || '');\n    this.form.get('membership.mothersName').setValue(this.consultedPatient.mae || '');\n  }\n\n  private disableInputs() {\n    this.form.get('cpf').disable();\n    this.form.get('dateOfBirth').disable();\n    this.form.get('sex').disable();\n    this.form.get('membership.mothersName').disable();\n  }\n  @nativeAsync\n  async onKey(event: any) {\n    if (event.target.value.length === 10) {\n      const cep = event.target.value.replace(/[^\\d]+/g, '');\n      const data = await this.cepService.consult(cep);\n      if (!data.erro) {\n        this.form.controls['address'].patchValue({\n          uf: data.uf,\n          street: data.logradouro,\n          neighborhood: data.bairro,\n          city: data.localidade,\n          number: null,\n          cep: data.cep\n        });\n      }\n    }\n  }\n}\n","export default \"<div theme>\\n  <div class=\\\"modal-header\\\">\\n    <h4 class=\\\"modal-title pull-left text-white\\\">Novo farmacêutico</h4>\\n    <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"modalRef.hide()\\\">\\n      <span aria-hidden=\\\"true\\\">&times;</span>\\n    </button>\\n  </div>\\n  <div class=\\\"modal-body\\\">\\n    <div *ngIf=\\\"consultedPatient.status === -1 || consultedPatient.erroCodigo >= 1000\\\">\\n      <nz-alert nzType=\\\"warning\\\" [nzMessage]=\\\"consultedPatient.erro\\\"></nz-alert>\\n      <br />\\n    </div>\\n    <div *ngIf=\\\"message.length > 0\\\">\\n      <nz-alert nzType=\\\"error\\\" [nzMessage]=\\\"message\\\"></nz-alert>\\n      <br />\\n    </div>\\n    <form nz-form [formGroup]=\\\"form\\\">\\n      <div class=\\\"row justify-content-between\\\">\\n        <div class=\\\"col-md-6\\\">\\n          <div class=\\\"row\\\">\\n            <div class=\\\"col-md-12\\\">\\n              <nz-form-item *ngIf=\\\"form.get('name') as name\\\">\\n                <nz-form-label nzFor=\\\"nome\\\">Nome<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    nz-input\\n                    placeholder=\\\"ex: João Gilberto\\\"\\n                    formControlName=\\\"name\\\"\\n                    id=\\\"name\\\"\\n                    maxlength=\\\"128\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"name.dirty && name.errors\\\">\\n                    <ng-container *ngIf=\\\"name.hasError('required')\\\">\\n                      Campo obrigatório, por favor digite o seu nome e sobrenome.\\n                    </ng-container>\\n                    <ng-container *ngIf=\\\"!name.hasError('required') && name.hasError('nome')\\\">\\n                      Por favor digite o seu nome e sobrenome.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n            <div class=\\\"col-md-6\\\">\\n              <nz-form-item *ngIf=\\\"form.get('cpf') as cpf\\\">\\n                <nz-form-label nzFor=\\\"cpf\\\">CPF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    nz-input\\n                    id=\\\"cpf\\\"\\n                    placeholder=\\\"000.000.000-00\\\"\\n                    mask=\\\"000.000.000-00\\\"\\n                    formControlName=\\\"cpf\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"cpf.dirty && cpf.errors\\\">\\n                    <ng-container *ngIf=\\\"cpf.hasError('required')\\\">\\n                      Campo obrigatório, por favor digite seu CPF.\\n                    </ng-container>\\n                    <ng-container *ngIf=\\\"!cpf.hasError('required') && cpf.hasError('cpf')\\\">\\n                      CPF inválido, por favor digite um CPF válido.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n            <div class=\\\"col-md-6\\\">\\n              <nz-form-item *ngIf=\\\"form.get('identity') as identity\\\">\\n                <nz-form-label nzFor=\\\"identity\\\"\\n                  >Identidade<span class=\\\"mandatory\\\"> *</span>\\n                </nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    nz-input\\n                    type=\\\"text\\\"\\n                    placeholder=\\\"ex: 18.040.818-5\\\"\\n                    formControlName=\\\"identity\\\"\\n                    id=\\\"identity\\\"\\n                    maxlength=\\\"12\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"identity.dirty && identity.errors\\\">\\n                    <ng-container *ngIf=\\\"identity.hasError('required')\\\">\\n                      Campo obrigatório, por favor digite um documento de identidade.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md-6\\\">\\n              <nz-form-item *ngIf=\\\"form.get('dateOfBirth') as dateOfBirth\\\">\\n                <nz-form-label nzFor=\\\"dateOfBirth\\\"\\n                  >Data de nascimento<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n                >\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    nz-input\\n                    id=\\\"dateOfBirth\\\"\\n                    type=\\\"date\\\"\\n                    formControlName=\\\"dateOfBirth\\\"\\n                    placeholder=\\\"DD/MM/AAAA\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n\\n                  <nz-form-explain *ngIf=\\\"dateOfBirth.dirty && dateOfBirth.errors\\\">\\n                    <ng-container *ngIf=\\\"dateOfBirth.hasError('required')\\\">\\n                      Campo obrigatório, por favor digite sua data de nascimento.\\n                    </ng-container>\\n                    <ng-container\\n                      *ngIf=\\\"!dateOfBirth.hasError('required') && dateOfBirth.hasError('dateOfBirth')\\\"\\n                    >\\n                      Data inválida.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md-6\\\">\\n              <nz-form-item *ngIf=\\\"form.get('sex') as sex\\\">\\n                <nz-form-label nzFor=\\\"sex\\\">Sexo<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <select formControlName=\\\"sex\\\" id=\\\"sex\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n                    <option value=\\\"M\\\">Masculino</option>\\n                    <option value=\\\"F\\\">Feminino</option>\\n                  </select>\\n                  <nz-form-explain *ngIf=\\\"sex.dirty && sex.errors\\\">\\n                    <ng-container *ngIf=\\\"sex.hasError('required')\\\">\\n                      Campo obrigatório, por favor selecione o sexo.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md-12\\\" [formGroup]=\\\"form.get('membership')\\\">\\n              <nz-form-item *ngIf=\\\"form.get('membership.mothersName') as mothersName\\\">\\n                <nz-form-label nzFor=\\\"mothersName\\\"\\n                  >Nome da mãe<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n                >\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    nz-input\\n                    placeholder=\\\"Digite o nome da mãe\\\"\\n                    formControlName=\\\"mothersName\\\"\\n                    id=\\\"mothersName\\\"\\n                    maxlength=\\\"128\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"mothersName.dirty && mothersName.errors\\\">\\n                    <ng-container *ngIf=\\\"mothersName.hasError('required')\\\">\\n                      Campo obrigatório, por favor digite o nome da mãe.\\n                    </ng-container>\\n                    <ng-container\\n                      *ngIf=\\\"\\n                        !mothersName.hasError('required') &&\\n                        mothersName.hasError('membership.mothersName')\\n                      \\\"\\n                    >\\n                      Nome inválido.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-6\\\" [formGroup]=\\\"form.get('crf')\\\">\\n              <nz-form-item *ngIf=\\\"form.get('crf.number') as crfNumber\\\">\\n                <nz-form-label nzFor=\\\"crf-number\\\">CRF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    formControlName=\\\"number\\\"\\n                    id=\\\"crf-number\\\"\\n                    nz-input\\n                    placeholder=\\\"Digite o CRF\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"crfNumber.dirty && crfNumber.errors\\\">\\n                    <ng-container *ngIf=\\\"crfNumber.hasError('required')\\\">\\n                      Por favor digite o número do CRF.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n            <div class=\\\"col-6\\\" [formGroup]=\\\"form.get('crf')\\\">\\n              <nz-form-item *ngIf=\\\"form.get('crf.uf') as crfUf\\\">\\n                <nz-form-label>UF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <select formControlName=\\\"uf\\\" id=\\\"crf-uf\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n                    <option *ngFor=\\\"let state of states\\\" [value]=\\\"state?.sigla\\\">{{\\n                      state?.sigla\\n                    }}</option>\\n                  </select>\\n                  <nz-form-explain *ngIf=\\\"crfUf.dirty && crfUf.errors\\\">\\n                    <ng-container *ngIf=\\\"crfUf.hasError('required')\\\">\\n                      Por favor selecione a UF.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n          </div>\\n        </div>\\n        <div class=\\\"col-md-5\\\">\\n          <div class=\\\"row\\\">\\n            <div class=\\\"col-md-12\\\">\\n              <nz-form-item *ngIf=\\\"form.get('cellphone') as cellphone\\\">\\n                <nz-form-label nzFor=\\\"cellphone\\\"\\n                  >Telefone 1<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n                >\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    nz-input\\n                    placeholder=\\\"(21) 92222-2222\\\"\\n                    formControlName=\\\"cellphone\\\"\\n                    id=\\\"cellphone\\\"\\n                    [mask]=\\\"cellphone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"cellphone.dirty && cellphone.errors\\\">\\n                    <ng-container *ngIf=\\\"cellphone.hasError('mandatoryContact')\\\">\\n                      É necessário preencher ao menos um número pessoal.\\n                    </ng-container>\\n                    <ng-container\\n                      *ngIf=\\\"!cellphone.hasError('mandatoryContact') && cellphone.hasError('telefone')\\\"\\n                    >\\n                      Telefone inválido, por favor digite um número válido.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md-12\\\">\\n              <nz-form-item *ngIf=\\\"form.get('telephone') as telephone\\\">\\n                <nz-form-label nzFor=\\\"telephone\\\">Telefone 2</nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    nz-input\\n                    id=\\\"telephone\\\"\\n                    formControlName=\\\"telephone\\\"\\n                    placeholder=\\\"(21) 2222-2222\\\"\\n                    [mask]=\\\"telephone.value.length <= 10 ? '(00) 0000-00009' : '(00) 00000-0000'\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"telephone.dirty && telephone.errors\\\">\\n                    <ng-container *ngIf=\\\"telephone.hasError('mandatoryContact')\\\">\\n                      É necessário preencher ao menos um número pessoal.\\n                    </ng-container>\\n                    <ng-container\\n                      *ngIf=\\\"!telephone.hasError('mandatoryContact') && telephone.hasError('telefone')\\\"\\n                    >\\n                      Telefone inválido, por favor digite um número válido.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md-12\\\">\\n              <nz-form-item *ngIf=\\\"form.get('email') as email\\\">\\n                <nz-form-label nzFor=\\\"email\\\"\\n                  >E-mail de login<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n                >\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    nz-input\\n                    id=\\\"email\\\"\\n                    type=\\\"email\\\"\\n                    placeholder=\\\"usuário@email.com\\\"\\n                    formControlName=\\\"email\\\"\\n                    style=\\\"text-transform: lowercase;\\\"\\n                    (keydown.space)=\\\"$event.preventDefault()\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"email.dirty && email.errors\\\">\\n                    <ng-container *ngIf=\\\"email.hasError('exists'); else required\\\">\\n                      E-mail já existe, por favor escolha outro e-mail.\\n                    </ng-container>\\n                    <ng-template #required>\\n                      <ng-container *ngIf=\\\"email.hasError('required') && email.dirty; else invalid\\\">\\n                        <span class=\\\"error\\\">Campo obrigatório, por favor digite seu e-mail.</span>\\n                      </ng-container>\\n                    </ng-template>\\n                    <ng-template #invalid>\\n                      <ng-container *ngIf=\\\"email.invalid && email.value\\\">\\n                        <span class=\\\"error\\\">E-mail inválido, por favor digite um e-mail válido.</span>\\n                      </ng-container>\\n                    </ng-template>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md-12\\\">\\n              <nz-form-item *ngIf=\\\"form.get('emailConfirmation') as emailConf\\\">\\n                <nz-form-label nzFor=\\\"emailConfirmation\\\"\\n                  >Confirmação de e-mail<span class=\\\"mandatory\\\"> *</span>\\n                </nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    nz-input\\n                    id=\\\"emailConfirmation\\\"\\n                    onpaste=\\\"false\\\"\\n                    type=\\\"email\\\"\\n                    placeholder=\\\"usuário@email.com\\\"\\n                    formControlName=\\\"emailConfirmation\\\"\\n                    style=\\\"text-transform: lowercase;\\\"\\n                    (keydown.space)=\\\"$event.preventDefault()\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"emailConf.dirty && emailConf.errors\\\" class=\\\"error\\\">\\n                    <ng-container\\n                      *ngIf=\\\"emailConf.hasError('required') || !emailConf.value; else notMatch\\\"\\n                    >\\n                      Campo obrigatório, por favor digite seu e-mail.\\n                    </ng-container>\\n\\n                    <ng-template #notMatch>\\n                      <ng-container *ngIf=\\\"emailConf.hasError('emailMatch'); else invalid\\\">\\n                        Os endereços de e-mail não correspondem\\n                      </ng-container>\\n                    </ng-template>\\n\\n                    <ng-template #invalid>\\n                      <ng-container *ngIf=\\\"emailConf.invalid && !emailConf.hasError('emailMatch')\\\">\\n                        E-mail inválido, por favor digite um e-mail válido.\\n                      </ng-container>\\n                    </ng-template>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md-12\\\">\\n              <nz-form-item *ngIf=\\\"form.get('emailContact') as emailContact\\\">\\n                <div class=\\\"row\\\">\\n                  <div class=\\\"col-6\\\">\\n                    <nz-form-label nzFor=\\\"name\\\" style=\\\"margin-left:0px;\\\">\\n                      E-mail de contato<span class=\\\"mandatory\\\"> *</span>\\n                    </nz-form-label>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <label\\n                      #repeatName\\n                      nz-checkbox\\n                      (nzCheckedChange)=\\\"checkRepeatEmail($event)\\\"\\n                      style=\\\"font-size: 13px;margin-right: -11px;\\\"\\n                      >Repetir e-mail de login</label\\n                    >\\n                  </div>\\n                </div>\\n                <nz-form-control nzHasFeedback>\\n                  <nz-input-group>\\n                    <input\\n                      id=\\\"emailContact\\\"\\n                      type=\\\"text\\\"\\n                      nz-input\\n                      formControlName=\\\"emailContact\\\"\\n                      placeholder=\\\"usuário@email.com\\\"\\n                      style=\\\"text-transform: lowercase;\\\"\\n                      (keydown.space)=\\\"$event.preventDefault()\\\"\\n                      autocomplete=\\\"disabled\\\"\\n                    />\\n                  </nz-input-group>\\n                  <nz-form-explain *ngIf=\\\"emailContact.dirty && emailContact.errors\\\">\\n                    <ng-container *ngIf=\\\"emailContact.errors\\\">\\n                      E-mail inválido, por favor digite um e-mail válido.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n          </div>\\n        </div>\\n        <nz-divider nzOrientation=\\\"left\\\" nzText=\\\"Endereço\\\"></nz-divider>\\n        <div class=\\\"col-md-12\\\">\\n          <div class=\\\"row\\\" [formGroup]=\\\"form.get('address')\\\">\\n            <div class=\\\"col-md-3\\\">\\n              <nz-form-item *ngIf=\\\"form.get('address.cep') as cep\\\">\\n                <nz-form-label nzFor=\\\"cep\\\">CEP<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    (keyup)=\\\"onKey($event)\\\"\\n                    mask=\\\"00.000-000\\\"\\n                    formControlName=\\\"cep\\\"\\n                    id=\\\"cep\\\"\\n                    nz-input\\n                    placeholder=\\\"22770-210\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"cep.dirty && cep.errors\\\">\\n                    <ng-container *ngIf=\\\"cep.hasError('required')\\\">\\n                      Campo obrigatório, por favor digite seu CEP.\\n                    </ng-container>\\n                    <ng-container *ngIf=\\\"!cep.hasError('required') && cep.hasError('address.cep')\\\">\\n                      CEP inválido, por favor digite um CEP válido.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md-6\\\">\\n              <nz-form-item *ngIf=\\\"form.get('address.street') as street\\\">\\n                <nz-form-label nzFor=\\\"logradouro\\\"\\n                  >Logradouro<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n                >\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    nz-input\\n                    id=\\\"street\\\"\\n                    formControlName=\\\"street\\\"\\n                    placeholder=\\\"Digite o logradouro\\\"\\n                    maxlength=\\\"128\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"street.dirty && street.errors\\\">\\n                    <ng-container *ngIf=\\\"street.hasError('required')\\\">\\n                      Campo obrigatório, por favor digite o logradouro.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md-3\\\">\\n              <nz-form-item *ngIf=\\\"form.get('address.number') as number\\\">\\n                <nz-form-label nzFor=\\\"number\\\">Número<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    nz-input\\n                    id=\\\"number\\\"\\n                    formControlName=\\\"number\\\"\\n                    placeholder=\\\"Digite o número\\\"\\n                    maxlength=\\\"10\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"number.dirty && number.errors\\\">\\n                    <ng-container *ngIf=\\\"number.hasError('required')\\\">\\n                      Campo obrigatório, por favor digite o número.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md-3\\\">\\n              <nz-form-item>\\n                <nz-form-label nzFor=\\\"complement\\\">Complemento</nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    formControlName=\\\"complement\\\"\\n                    id=\\\"complement\\\"\\n                    nz-input\\n                    placeholder=\\\"Digite o complemento\\\"\\n                    maxlength=\\\"128\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md-3\\\">\\n              <nz-form-item *ngIf=\\\"form.get('address.neighborhood') as neighborhood\\\">\\n                <nz-form-label nzFor=\\\"neighborhood\\\"\\n                  >Bairro<span class=\\\"mandatory\\\"> *</span></nz-form-label\\n                >\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    formControlName=\\\"neighborhood\\\"\\n                    id=\\\"neighborhood\\\"\\n                    nz-input\\n                    placeholder=\\\"Digite o bairro\\\"\\n                    maxlength=\\\"128\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"neighborhood.dirty && neighborhood.errors\\\">\\n                    <ng-container *ngIf=\\\"neighborhood.hasError('required')\\\">\\n                      Campo obrigatório, por favor digite o bairro.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md-4\\\">\\n              <nz-form-item *ngIf=\\\"form.get('address.city') as city\\\">\\n                <nz-form-label nzFor=\\\"city\\\">Cidade<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <input\\n                    formControlName=\\\"city\\\"\\n                    id=\\\"city\\\"\\n                    nz-input\\n                    placeholder=\\\"Digite a cidade\\\"\\n                    maxlength=\\\"64\\\"\\n                    autocomplete=\\\"disabled\\\"\\n                  />\\n                  <nz-form-explain *ngIf=\\\"city.dirty && city.errors\\\">\\n                    <ng-container *ngIf=\\\"city.hasError('required')\\\">\\n                      Campo obrigatório, por favor digite a cidade.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n\\n            <div class=\\\"col-md-2\\\">\\n              <nz-form-item *ngIf=\\\"form.get('address.uf') as uf\\\">\\n                <nz-form-label nzFor=\\\"uf\\\">UF<span class=\\\"mandatory\\\"> *</span></nz-form-label>\\n                <nz-form-control nzHasFeedback>\\n                  <select formControlName=\\\"uf\\\" id=\\\"uf\\\" nz-input nzPlaceHolder=\\\"Selecione\\\">\\n                    <option *ngFor=\\\"let state of states\\\" [value]=\\\"state?.sigla\\\">{{\\n                      state?.sigla\\n                    }}</option>\\n                  </select>\\n                  <nz-form-explain *ngIf=\\\"uf.dirty && uf.errors\\\">\\n                    <ng-container *ngIf=\\\"uf.hasError('required')\\\">\\n                      Campo obrigatório, por favor selecione o UF.\\n                    </ng-container>\\n                  </nz-form-explain>\\n                </nz-form-control>\\n              </nz-form-item>\\n            </div>\\n          </div>\\n        </div>\\n      </div>\\n    </form>\\n  </div>\\n  <div class=\\\"modal-footer\\\">\\n    <button class=\\\"ok-btn\\\" nz-button class=\\\"btn-default\\\" (click)=\\\"modalRef.hide()\\\">\\n      Cancelar\\n    </button>\\n    <button class=\\\"ok-btn\\\" nz-button class=\\\"btn-primary\\\" (click)=\\\"submitForm()\\\">\\n      Salvar <i class=\\\"fa\\\"></i>\\n    </button>\\n  </div>\\n</div>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","export default \".modal-body {\\n  padding: 40px;\\n}\\n.modal-body input {\\n  border-radius: 10px;\\n}\\n.modal-body .btn-save {\\n  float: right;\\n  padding-top: 7px;\\n  padding-bottom: 7px;\\n  margin-top: 13px;\\n  margin-bottom: 5px;\\n}\\n.modal-body i {\\n  font-size: 24px;\\n}\\n.modal-body .mandatory {\\n  color: red;\\n}\\n.modal-body .error {\\n  color: red;\\n}\\n.modal-body input::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n::ng-deep .ant-select-selection {\\n  height: 100%;\\n}\\n.modal-header {\\n  background-color: #4cbca3;\\n  margin: 0;\\n  font-family: \\\"probold\\\";\\n}\\n.modal-footer {\\n  margin: 0;\\n}\\n.date-picker {\\n  background-color: red;\\n}\\ninput::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\ninput::-webkit-input-placeholder {\\n  color: #bdc2c7;\\n}\\n.mandatory {\\n  color: red;\\n}\\n.scroll {\\n  overflow-y: auto;\\n  height: 620px;\\n  overflow-x: hidden;\\n}\\n.container {\\n  width: 90% !important;\\n}\";","export default \"<div class=\\\"modal-header\\\">\\n  <h4 class=\\\"modal-title pull-left text-white\\\">Buscar farmacêutico</h4>\\n  <button type=\\\"button\\\" class=\\\"close pull-right\\\" aria-label=\\\"Close\\\" (click)=\\\"modalRef.hide()\\\">\\n    <span aria-hidden=\\\"true\\\">&times;</span>\\n  </button>\\n</div>\\n<form (submit)=\\\"search(param.value)\\\">\\n  <div class=\\\"modal-body\\\">\\n    <p>Digite abaixo o CPF do farmacêutico.</p>\\n    <input nz-input #param mask=\\\"000.000.000-00\\\" theme />\\n    <label>\\n      <i class=\\\"fa fa-arrow-right\\\" (click)=\\\"search(param.value)\\\"></i>\\n    </label>\\n  </div>\\n</form>\\n\";","import { Injectable } from '@angular/core';\nimport { CoreModule } from '@app/core';\nimport { isValid } from '@fnando/cpf';\n\n@Injectable({\n  providedIn: CoreModule\n})\nexport class ValidationUtil {\n  constructor() {}\n\n  static isValidCpf(cpf: string): boolean {\n    return isValid(cpf);\n  }\n}\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ValidationUtil } from '@app/core/services/validation.util';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\n\nimport { PharmacistService } from '@app/modules/pharmacist/services/pharmacist.service';\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\n\nimport { CpfCnpjApiErrors } from '@app/shared/models/cpf-cnpj-api-errors.enum';\nimport { AppToastService } from '@app/shared/services/app-toast.service';\nimport { BigboostService } from '@app/shared/services/bigboost.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\n\n@Component({\n  selector: 'app-modal-search',\n  templateUrl: './modal-search.component.html',\n  styleUrls: ['./modal-search.component.scss']\n})\nexport class ModalSearchComponent implements OnInit {\n  constructor(\n    private router: Router,\n    public modalRef: BsModalRef,\n    private notification: AppToastService,\n    private pharmacistService: PharmacistService,\n    private pharmacyService: PharmacyService,\n    private bigboostService: BigboostService\n  ) {}\n\n  pharmacists = [];\n  pharmacy: any;\n\n  @Output() openModalAddPharmacistEvent = new EventEmitter<any>();\n  @Output() updateListPatientEvent = new EventEmitter<string>();\n  @Output() loadingSpinnerEvent = new EventEmitter<boolean>();\n\n  ngOnInit() {}\n\n  @nativeAsync\n  async search(cpf: string) {\n    cpf = cpf.replace(/\\D+/g, '');\n    try {\n      if (ValidationUtil.isValidCpf(cpf)) {\n        this.loadingSpinnerEvent.emit(true);\n        if (await this.hasPharmacist(cpf)) {\n          this.modalRef.hide();\n          this.notification.notify(\n            'warning',\n            'Aviso',\n            'O farmacêutico informado já existe na sua lista de farmacêuticos'\n          );\n        } else {\n          const pharmacist = await this.pharmacistService.getPharmacyByCpf(cpf).toPromise();\n\n          if (pharmacist) {\n            await this.addPharmacist(pharmacist._id);\n            this.updateListPatientEvent.emit(null);\n          } else {\n            const consult = await this.consultCpf(cpf);\n            if (consult !== null && consult !== undefined) {\n              this.openModalAddPharmacistEvent.emit(consult);\n            }\n          }\n          this.modalRef.hide();\n        }\n      } else {\n        this.notification.notify('warning', 'Aviso', 'CPF inválido');\n      }\n    } catch (error) {\n      this.loadingSpinnerEvent.emit(false);\n    }\n  }\n  @nativeAsync\n  async addPharmacist(pharmacistId: string) {\n    await this.pharmacyService.addPharmacist(this.pharmacy._id, pharmacistId).toPromise();\n  }\n  @nativeAsync\n  async consultCpf(cpf: string) {\n    try {\n      this.loadingSpinnerEvent.emit(true);\n      const consult = await this.bigboostService.consultCpf(cpf).toPromise();\n\n      this.loadingSpinnerEvent.emit(false);\n      if (consult.status === 1) {\n        return consult;\n      }\n      if (consult.status === -1 || consult.erroCodigo >= 1000) {\n        consult.erro =\n          'A importação de dados do CPF está com instabilidade, preencha manualmente ou tente novamente mais tarde.';\n        return consult;\n      }\n      if (consult.status === 0 && consult.erroCodigo && consult.erroCodigo < 1000) {\n        if (Object.values(CpfCnpjApiErrors).includes(consult.erroCodigo)) {\n          this.notification.notify('warning', 'Aviso', consult.erro);\n          return null;\n        }\n      }\n      return null;\n    } catch (error) {\n      this.loadingSpinnerEvent.emit(false);\n    }\n  }\n  @nativeAsync\n  async hasPharmacist(cpf: string) {\n    const result = await this.pharmacistService\n      .getPharmacistsByPharmacyId(this.pharmacy._id, { cpf })\n      .toPromise();\n    return result.pharmacists.length > 0;\n  }\n}\n","export default \".modal-header {\\n  background-color: #4cbca3;\\n  width: 500px;\\n  font-family: \\\"probold\\\";\\n}\\n\\n.modal-body {\\n  width: 100%;\\n  margin-top: 10px;\\n  padding: 0px;\\n  display: flex;\\n  align-items: center;\\n  flex-direction: column;\\n  justify-content: center;\\n}\\n\\n.modal-body input {\\n  width: 265px;\\n  height: 35px;\\n}\\n\\n.modal-body label {\\n  display: flex;\\n  align-items: center;\\n  justify-content: center;\\n  position: relative;\\n  z-index: 1;\\n  right: -118px;\\n  top: -28px;\\n  font-size: 15px;\\n  margin: 0px;\\n  width: 30px;\\n}\\n\\n.modal-body label i {\\n  cursor: pointer;\\n}\\n\\np {\\n  color: #363636;\\n  font-size: 20px;\\n  font-family: \\\"prolight\\\";\\n  text-align: center;\\n}\";","export default \"<app-alternative-navbar title=\\\"Farmacêuticos\\\" titleIcon=\\\"fas fa-history\\\"></app-alternative-navbar>\\n<app-sidebar-menu></app-sidebar-menu>\\n\\n<div class=\\\"container\\\">\\n  <div>\\n    <br />\\n    <h2 class=\\\"title\\\">\\n      Histórico de Farmacêuticos\\n    </h2>\\n    <br />\\n  </div>\\n\\n  <div>\\n    <form nz-form>\\n      <div class=\\\"row\\\">\\n        <div class=\\\"col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"createdAt\\\">Data de criação:</nz-form-label>\\n            <nz-form-control>\\n              <input\\n                nz-input\\n                type=\\\"date\\\"\\n                placeholder=\\\"Data de criação\\\"\\n                [(ngModel)]=\\\"filter.createdAt\\\"\\n                name=\\\"createdAt\\\"\\n                theme\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-md-3\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"patient\\\">Nome:</nz-form-label>\\n            <nz-form-control>\\n              <input nz-input type=\\\"text\\\" [(ngModel)]=\\\"filter.name\\\" name=\\\"name\\\" theme />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-sm-2\\\">\\n          <nz-form-item>\\n            <nz-form-label nzFor=\\\"cpf\\\">CPF:</nz-form-label>\\n            <nz-form-control>\\n              <input\\n                nz-input\\n                type=\\\"text\\\"\\n                placeholder=\\\"ex: 000.000.000-00\\\"\\n                mask=\\\"000.000.000-00\\\"\\n                [(ngModel)]=\\\"filter.cpf\\\"\\n                name=\\\"cpf\\\"\\n                theme\\n              />\\n            </nz-form-control>\\n          </nz-form-item>\\n        </div>\\n        <div class=\\\"col-sm-3 buttons\\\" style=\\\"padding-top: 29px\\\">\\n          <button nz-button type=\\\"button\\\" nzType=\\\"primary\\\" (click)=\\\"filterData()\\\">\\n            <i nz-icon nzType=\\\"search\\\"></i>\\n            Buscar\\n          </button>\\n          <button nz-button type=\\\"button\\\" nzType=\\\"primary\\\" (click)=\\\"showModalSearch()\\\">\\n            <i nz-icon nzType=\\\"plus\\\"> </i>\\n            Novo farmacêutico\\n          </button>\\n        </div>\\n      </div>\\n    </form>\\n  </div>\\n\\n  <div class=\\\"table\\\">\\n    <nz-table\\n      #nzTable\\n      [nzData]=\\\"data?.pharmacists\\\"\\n      [nzLoading]=\\\"loading\\\"\\n      nzFrontPagination=\\\"false\\\"\\n      [nzTotal]=\\\"data?.totalRecord\\\"\\n      [nzPageSize]=\\\"pageSize\\\"\\n      (nzPageIndexChange)=\\\"pageIndexChanged($event)\\\"\\n    >\\n      <thead (nzSortChange)=\\\"onSortChange($event)\\\">\\n        <tr>\\n          <th nzShowSort nzSortKey=\\\"createdAt\\\">Data de criação</th>\\n          <th>Nome do farmacêutico</th>\\n          <th>CPF do farmacêutico</th>\\n          <th>E-mail</th>\\n          <th></th>\\n        </tr>\\n      </thead>\\n      <tbody>\\n        <tr *ngFor=\\\"let pharmacist of nzTable.data\\\">\\n          <td>{{ pharmacist.createdAt | date: 'dd/MM/yyyy, HH:mm' }}</td>\\n          <td>{{ pharmacist.name }}</td>\\n          <td>{{ pharmacist.cpf }}</td>\\n          <td>{{ pharmacist.user.email }}</td>\\n          <td class=\\\"actions-btn\\\">\\n            <a title=\\\"Desvincular farmacêutico\\\" (click)=\\\"showModalRemovePharmacist(pharmacist._id)\\\">\\n              <i class=\\\"fa fa-trash-solid\\\"></i>\\n            </a>\\n          </td>\\n        </tr>\\n      </tbody>\\n    </nz-table>\\n  </div>\\n</div>\\n<ngx-loading [show]=\\\"loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n\";","import { Component, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\nimport { ModalAddPharmacistComponent } from '@app/modules/pharmacist/modal-add-pharmacist/modal-add-pharmacist.component';\nimport { ModalSearchComponent } from '@app/modules/pharmacist/modal-search/modal-search.component';\nimport { PharmacistService } from '@app/modules/pharmacist/services/pharmacist.service';\nimport { PharmacyService } from '@app/modules/pharmacy/services/pharmacy.service';\nimport { nativeAsync } from '@app/shared/decorators/nativeAsync';\nimport { Pharmacy } from '@app/shared/models';\nimport { User } from '@app/shared/models/decodedLoginToken';\nimport { NzModalService } from 'ng-zorro-antd/modal';\nimport { BsModalService } from 'ngx-bootstrap/modal';\n\n@Component({\n  selector: 'app-pharmacist-list',\n  templateUrl: './pharmacist-list.component.html',\n  styleUrls: ['./pharmacist-list.component.scss']\n})\nexport class PharmacistListComponent implements OnInit {\n  loading: boolean;\n  filter = { createdAt: '', name: '', cpf: '', email: '' };\n  pageSize = 7;\n  paginationData = { skip: 0, totalRecord: 0, orderBy: 'createdAt', sortOrder: -1 };\n  scrollConfig = { x: '830px', y: '583px' };\n\n  pharmacy: Pharmacy;\n  data: any;\n\n  constructor(\n    private router: Router,\n    private pharmacistService: PharmacistService,\n    private pharmacyService: PharmacyService,\n    private authService: AuthService,\n    private modalService: BsModalService,\n    private nzModalService: NzModalService\n  ) {}\n\n  @nativeAsync\n  async ngOnInit() {\n    await this.getUserData();\n    await this.getPharmacists();\n  }\n\n  @nativeAsync\n  async getUserData() {\n    this.loading = true;\n    this.pharmacy = await this.pharmacyService.getPharmacyByUserId(this.user._id).toPromise();\n    this.loading = false;\n  }\n\n  get user(): User {\n    return this.authService.user();\n  }\n\n  @nativeAsync\n  async pageIndexChanged(pageIndex: any) {\n    this.paginationData.skip = this.pageSize * (pageIndex - 1);\n    await this.getPharmacists();\n  }\n\n  @nativeAsync\n  async onSortChange(params) {\n    this.paginationData.orderBy = params.key;\n    this.paginationData.sortOrder = params.value === 'descend' ? -1 : 1;\n    await this.getPharmacists();\n  }\n\n  showModalSearch() {\n    const initialState = {\n      pharmacists: this.data.pharmacists,\n      userType: this.user.userType,\n      pharmacy: this.pharmacy\n    };\n    const modal = this.modalService.show(ModalSearchComponent, {\n      initialState,\n      backdrop: 'static',\n      keyboard: false\n    });\n    modal.content.updateListPatientEvent.subscribe(cpf => {\n      this.paginationData.skip = 0;\n      this.getPharmacists();\n    });\n    modal.content.openModalAddPharmacistEvent.subscribe(consult => this.showModalAddPharmacist(consult));\n    modal.content.loadingSpinnerEvent.subscribe(loading => (this.loading = loading));\n  }\n\n  showModalAddPharmacist(consultedPatient) {\n    const initialState = {\n      pharmacy: this.pharmacy,\n      consultedPatient\n    };\n    const modal = this.modalService.show(ModalAddPharmacistComponent, {\n      class: 'modal-lg',\n      initialState,\n      backdrop: 'static',\n      keyboard: false\n    });\n    modal.content.updateListPharmacistEvent.subscribe(cpf => {\n      this.paginationData.skip = 0;\n      this.getPharmacists();\n    });\n  }\n  @nativeAsync\n  async showModalRemovePharmacist(pharmacistId) {\n    this.nzModalService.confirm({\n      nzTitle: 'Alerta',\n      nzContent: 'Tem certeza que deseja remover este farmacêutico da sua lista',\n      nzOnOk: async () => {\n        await this.pharmacyService.removePharmacist(this.pharmacy._id, pharmacistId).toPromise();\n        this.paginationData.skip = 0;\n        this.getPharmacists();\n      }\n    });\n  }\n\n  filterData() {\n    this.filter.cpf = this.filter.cpf === undefined ? '' : this.filter.cpf.replace(/[^0-9]+/gi, '');\n    this.paginationData.skip = 0;\n    this.getPharmacists();\n  }\n\n  getFilter() {\n    return {\n      ...this.filter,\n      skip: this.paginationData.skip,\n      limit: this.pageSize,\n      orderBy: this.paginationData.orderBy,\n      sortOrder: this.paginationData.sortOrder\n    };\n  }\n  @nativeAsync\n  async getPharmacists() {\n    try {\n      this.loading = true;\n      this.data = await this.pharmacistService\n        .getPharmacistsByPharmacyId(this.pharmacy._id, this.getFilter())\n        .toPromise();\n      this.loading = false;\n    } catch (error) {\n      this.loading = false;\n    }\n  }\n\n  navigateToNew() {\n    this.router.navigate(['pharmacist/new']);\n  }\n}\n","export default \".buttons {\\n  display: flex;\\n  flex-direction: row;\\n}\\n.buttons button {\\n  margin-left: 5px;\\n}\\n.table {\\n  padding-top: 20px;\\n}\";","import { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, RouterStateSnapshot } from '@angular/router';\nimport { AuthService } from '@app/core/services/auth.service';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PharmacyGuard implements CanActivate {\n  constructor(private authService: AuthService) {}\n  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n    return this.authService.user().userType === 'pharmacy';\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\nimport { PharmacistListComponent } from './pharmacist-list/pharmacist-list.component';\nimport { PharmacyGuard } from '@app/modules/pharmacy/pharmacy.guard';\n\nconst routes: Routes = [\n  {\n    path: 'list',\n    component: PharmacistListComponent,\n    canActivate: [PharmacyGuard]\n  },\n\n  { path: '',\n    redirectTo: 'list' }\n];\n\n@NgModule({\n  imports: [RouterModule.forChild(routes)],\n\n  exports: [RouterModule]\n})\nexport class PharmacistRoutingModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedModule } from '@app/shared';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { NgxLoadingModule } from 'ngx-loading';\nimport { NgxMaskModule } from 'ngx-mask';\nimport { ModalAddPharmacistComponent } from './modal-add-pharmacist/modal-add-pharmacist.component';\nimport { ModalSearchComponent } from './modal-search/modal-search.component';\nimport { PharmacistListComponent } from './pharmacist-list/pharmacist-list.component';\nimport { PharmacistRoutingModule } from './pharmacist-routing.module';\n\n@NgModule({\n  declarations: [PharmacistListComponent, ModalSearchComponent, ModalAddPharmacistComponent],\n  imports: [\n    SharedModule,\n    PharmacistRoutingModule,\n    CommonModule,\n    NgxMaskModule.forRoot(),\n    NgxLoadingModule.forRoot({}),\n    ModalModule.forRoot()\n  ]\n})\nexport class PharmacistModule {}\n"]}