{"version":3,"sources":["webpack:///src/app/modules/public-pharmacy/models/query-request.ts","webpack:///src/app/modules/public-pharmacy/components/pharmacy-filter/pharmacy-filter.component.ts","webpack:///src/app/modules/public-pharmacy/components/pharmacy-filter/pharmacy-filter.component.html","webpack:///src/app/modules/public-pharmacy/pages/pharmacy-list/pharmacy-list.component.html","webpack:///src/app/modules/public-pharmacy/services/pharmacy.service.ts","webpack:///src/app/modules/public-pharmacy/pages/pharmacy-list/pharmacy-list.component.ts","webpack:///src/app/modules/public-pharmacy/pages/pharmacy-list/pharmacy-list.component.scss","webpack:///src/app/modules/public-pharmacy/public-pharmacy-routing.module.ts","webpack:///src/app/modules/public-pharmacy/public-pharmacy.module.ts"],"names":["QueryRequest","fantasyName","uf","city","neighborhood","page","limit","this","onClickFilter","states","event","preventDefault","document","getElementById","click","filtro","emit","selector","template","API_URL","apiRoot","http","query","params","Object","keys","forEach","k","set","String","trim","get","providedIn","pharmacyService","paginationData","filter","searchPharmacies","data$","search","getFilter","pageIndex","address","isEmpty","cep","routes","path","component","PublicPharmacyRoutingModule","imports","forChild","exports","PublicPharmacyModule","declarations"],"mappings":"oOAAO,MAAMA,EACX,YACSC,EACAC,EACAC,EACAC,EACAC,EACAC,GALA,KAAAL,cACA,KAAAC,KACA,KAAAC,OACA,KAAAC,eACA,KAAAC,OACA,KAAAC,QAEPC,KAAKF,KAAO,EACZE,KAAKD,MAAQ,G,ICOJ,EAAuB,M,cAGxB,KAAAE,cAAgB,IAAI,IAI9B,KAAAC,OAAwB,IAGxB,iBAAiBC,GACfA,EAAMC,iBACSC,SAASC,eAAe,mBAChCC,QAGT,WACEP,KAAKQ,OAAS,IAAIf,EAGpB,SACEO,KAAKQ,OAAOV,KAAO,EACnBE,KAAKC,cAAcQ,KAAKT,KAAKQ,QAG/B,QACER,KAAKQ,OAAS,IAAIf,EAClBO,KAAKC,cAAcQ,KAAKT,KAAKQ,U,uCAxB9B,M,qBAEA,KAAS,MAAC,qB,wBAIV,IAAY,MAAC,yBAA0B,CAAC,cAT9B,EAAuB,aAJnC,YAAU,CACTE,SAAU,sBACVC,SCfa,kqDDiBF,GEjBE,I,YCMf,MAAMC,EAAU,G,UAAG,EAAYC,kB,IAKlB,EAAe,MAC1B,YAAoBC,GAAA,KAAAA,OAEpB,OAAOC,GACL,IAAIC,EAAS,IAAI,IAQjB,OANAC,OAAOC,KAAKH,GAAOI,QAAQC,IACrBL,EAAMK,KACRJ,EAASA,EAAOK,IAAID,EAAGE,OAAOP,EAAMK,IAAIG,WAIrCvB,KAAKc,KAAKU,IAAS,GAAGZ,WAAkB,CAAEI,a,4BAvB5C,MAWI,EAAe,aAH3B,YAAW,CACVS,WAAY,S,iCAGc,OADf,G,6BCCA,EAAqB,MAKhC,YAAoBC,GAAA,KAAAA,kBAHpB,KAAAC,eAAiB,CAAE7B,KAAM,EAAGC,MAAO,GAKnC,WACEC,KAAK4B,OAAS,IAAInC,EAClBO,KAAK6B,iBAAiB7B,KAAK4B,QAG7B,SAASA,GACP5B,KAAK2B,eAAiB,CAAE7B,KAAM,EAAGC,MAAO,GACxCC,KAAK6B,iBAAiBD,GAGxB,iBAAiBA,GACf5B,KAAK4B,OAASA,EACd5B,KAAK8B,MAAQ9B,KAAK0B,gBAAgBK,OAAO/B,KAAKgC,aAGhD,iBAAiBC,GACfjC,KAAK2B,eAAe7B,KAAOmC,EAC3BjC,KAAK6B,iBAAiB7B,KAAK4B,QAG7B,YACE,MAAO,IACF5B,KAAK4B,OACR9B,KAAME,KAAK2B,eAAe7B,KAC1BC,MAAOC,KAAK2B,eAAe5B,OAI/B,WAAWmC,GACT,QAAKA,KAKF,IAAEC,QAAQD,EAAQE,MAClB,IAAED,QAAQD,EAAQtC,OAClB,IAAEuC,QAAQD,EAAQrC,eAClB,IAAEsC,QAAQD,EAAQvC,O,4BArDhB,IASI,EAAqB,aALjC,YAAU,CACTe,SAAU,oBACVC,SFTa,g6F,QGAA,8H,iCDiBwB,KAL1B,G,gBERb,MAAM0B,EAAiB,CAAC,CAAEC,KAAM,GAAIC,UAAW,I,IAMlCC,EAA2B,QAA3BA,EAA2B,aAJvC,YAAS,CACRC,QAAS,CAAC,IAAaC,SAASL,IAChCM,QAAS,CAAC,QAECH,G,ICIAI,EAAoB,QAApBA,EAAoB,aAJhC,YAAS,CACRC,aAAc,CAAC,EAAuB,GACtCJ,QAAS,CAAC,IAAcD,EAA6B,IAAc,QAExDI","file":"x","sourcesContent":["export class QueryRequest {\n constructor(\n public fantasyName?: string,\n public uf?: string,\n public city?: string,\n public neighborhood?: string,\n public page?: number,\n public limit?: number\n ) {\n this.page = 1;\n this.limit = 7;\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n OnInit,\n Output,\n ViewChild\n} from '@angular/core';\nimport { BrazilianStates } from '@app/shared/data/Brazilian-states';\nimport { BrazilState } from '@app/shared/models';\nimport { QueryRequest } from '../../models/query-request';\n\n@Component({\n selector: 'app-pharmacy-filter',\n templateUrl: './pharmacy-filter.component.html'\n})\nexport class PharmacyFilterComponent implements OnInit {\n filtro: QueryRequest;\n\n @Output() onClickFilter = new EventEmitter<QueryRequest>();\n\n @ViewChild('buttonPesquisar') defaultButton: ElementRef;\n\n states: BrazilState[] = BrazilianStates;\n\n @HostListener('document:keydown.enter', ['$event'])\n onKeydownHandler(event: KeyboardEvent) {\n event.preventDefault();\n const button = document.getElementById('buttonPesquisar') as HTMLButtonElement;\n button.click();\n }\n\n ngOnInit(): void {\n this.filtro = new QueryRequest();\n }\n\n search() {\n this.filtro.page = 1;\n this.onClickFilter.emit(this.filtro);\n }\n\n clear() {\n this.filtro = new QueryRequest();\n this.onClickFilter.emit(this.filtro);\n }\n}\n","export default \"<div\\n class=\\\"row mt-3 mb-3 align-items-end\\\"\\n theme\\n *ngIf=\\\"filtro\\\"\\n style=\\\"max-width: 1500px; margin: 0 auto;\\\"\\n>\\n <div class=\\\"col-md-4\\\">\\n <nz-form-item>\\n <nz-form-label nzFor=\\\"nome\\\">Nome </nz-form-label>\\n <input nz-input type=\\\"text\\\" name=\\\"nome\\\" [(ngModel)]=\\\"filtro.fantasyName\\\" />\\n </nz-form-item>\\n </div>\\n <div class=\\\"col-md-1\\\">\\n <nz-form-item style=\\\"margin-top: -1px;\\\">\\n <nz-form-label nzFor=\\\"uf\\\" style=\\\"display: block; float: left;\\\">UF</nz-form-label>\\n <nz-select name=\\\"uf\\\" style=\\\"width: 100%;\\\" [(ngModel)]=\\\"filtro.uf\\\" [nzAllowClear]=\\\"true\\\">\\n <nz-option\\n [nzValue]=\\\"state.sigla\\\"\\n [nzLabel]=\\\"state.sigla\\\"\\n *ngFor=\\\"let state of states\\\"\\n ></nz-option>\\n </nz-select>\\n </nz-form-item>\\n </div>\\n <div class=\\\"col-md-2\\\">\\n <nz-form-item>\\n <nz-form-label nzFor=\\\"nome\\\">Cidade</nz-form-label>\\n <input nz-input type=\\\"text\\\" name=\\\"cidade\\\" [(ngModel)]=\\\"filtro.city\\\" />\\n </nz-form-item>\\n </div>\\n <div class=\\\"col-md-2\\\">\\n <nz-form-item>\\n <nz-form-label nzFor=\\\"nome\\\">Bairro</nz-form-label>\\n <input nz-input type=\\\"text\\\" name=\\\"bairro\\\" [(ngModel)]=\\\"filtro.neighborhood\\\" />\\n </nz-form-item>\\n </div>\\n <div class=\\\"col-md-3\\\">\\n <nz-form-item>\\n <nz-form-control>\\n <button nz-button type=\\\"button\\\" nzType=\\\"primary\\\" (click)=\\\"search()\\\" id=\\\"buttonPesquisar\\\">\\n <i nz-icon nzType=\\\"search\\\"></i>\\n Buscar\\n </button>\\n\\n <button nz-button type=\\\"button\\\" nzType=\\\"default\\\" (click)=\\\"clear()\\\" style=\\\"margin-left: 8px;\\\">\\n Limpar\\n </button>\\n </nz-form-control>\\n </nz-form-item>\\n </div>\\n</div>\\n\";","export default \"<header\\n style=\\\"height: 80px; padding: 8px; display: flex; align-items: center; justify-content: center; background-color: #66CC9A;\\\"\\n>\\n <img\\n src=\\\"assets/icons/location-dot-solid.svg\\\"\\n alt=\\\"Icone de localização\\\"\\n height=\\\"40\\\"\\n width=\\\"40\\\"\\n style=\\\"margin-right: 1rem;\\\"\\n />\\n <h3>\\n Encontre a farmácia cadastrada na Receita Digital mais perto de você!\\n </h3>\\n</header>\\n\\n<div *ngIf=\\\"filter\\\">\\n <app-pharmacy-filter (onClickFilter)=\\\"onSearch($event)\\\"></app-pharmacy-filter>\\n <hr />\\n <div style=\\\"overflow: auto; height: calc(100vh - 292px)\\\">\\n <div style=\\\"max-width: 1500px; margin: 0 auto;\\\" *ngIf=\\\"data$ | withLoading | async as dataValue\\\">\\n <div *ngIf=\\\"dataValue.value as data\\\">\\n <ng-template [ngIf]=\\\"data.pharmacies.length > 0\\\">\\n <nz-table\\n #listingTable\\n nzFrontPagination=\\\"false\\\"\\n [nzTotal]=\\\"data?.totalDocs\\\"\\n [nzData]=\\\"data?.pharmacies\\\"\\n [nzPageIndex]=\\\"paginationData.page\\\"\\n [nzPageSize]=\\\"paginationData.limit\\\"\\n nzSize=\\\"default\\\"\\n (nzPageIndexChange)=\\\"pageIndexChanged($event)\\\"\\n style=\\\"overflow-x: auto;\\\"\\n >\\n <thead>\\n <tr>\\n <th>Nome</th>\\n <th>Endereço</th>\\n <th>Telefone</th>\\n </tr>\\n </thead>\\n <tbody>\\n <ng-template ngFor let-pharmacy let-i=\\\"index\\\" [ngForOf]=\\\"listingTable.data\\\">\\n <tr>\\n <td>{{ pharmacy.fantasyName }}</td>\\n <td style=\\\"font-weight: 800\\\" *ngIf=\\\"hasAddress(pharmacy?.address); else templateEmpty\\\">\\n <div>\\n {{ pharmacy?.address?.street }} {{ pharmacy?.address?.number }}\\n {{ pharmacy?.address?.complement }}, {{ pharmacy?.address?.neighborhood }}\\n </div>\\n <div>\\n {{ pharmacy?.address?.city }}, {{ pharmacy?.address?.uf }} - CEP:\\n {{ pharmacy?.address?.cep | formattedCep }}\\n </div>\\n </td>\\n <ng-template #templateEmpty>\\n <td style=\\\"font-weight: 800; color: rgba(255, 0, 0, 0.336);\\\">\\n <span>Não possui endereço cadastrado!</span>\\n </td>\\n </ng-template>\\n <td>{{ pharmacy.telephone | formattedTel }}</td>\\n </tr>\\n </ng-template>\\n </tbody>\\n </nz-table>\\n </ng-template>\\n <ng-template [ngIf]=\\\"data.pharmacies.length === 0\\\">\\n <div class=\\\"align-center\\\">\\n <h3>Não existe farmacias cadastradas</h3>\\n </div>\\n </ng-template>\\n </div>\\n <ngx-loading [show]=\\\"dataValue.loading\\\" [config]=\\\"{ backdropBorderRadius: '3px' }\\\"></ngx-loading>\\n </div>\\n </div>\\n</div>\\n\";","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '@env/environment';\nimport { Observable } from 'rxjs';\nimport { QueryRequest } from '../models/query-request';\n\nconst API_URL = `${environment.apiRoot}pharmacy`;\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PharmacyService {\n constructor(private http: HttpClient) {}\n\n search(query: QueryRequest): Observable<any> {\n let params = new HttpParams();\n\n Object.keys(query).forEach(k => {\n if (query[k]) {\n params = params.set(k, String(query[k]).trim());\n }\n });\n\n return this.http.get<any>(`${API_URL}/search`, { params });\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { QueryRequest } from '../../models/query-request';\nimport { PharmacyService } from '../../services/pharmacy.service';\nimport { Address } from '@app/shared/models';\nimport _ from 'lodash';\n\n@Component({\n selector: 'app-pharmacy-list',\n templateUrl: './pharmacy-list.component.html',\n styleUrls: ['./pharmacy-list.component.scss']\n})\nexport class PharmacyListComponent implements OnInit {\n filter: QueryRequest;\n paginationData = { page: 1, limit: 7 };\n data$: Observable<any[]>;\n\n constructor(private pharmacyService: PharmacyService) {}\n\n ngOnInit(): void {\n this.filter = new QueryRequest();\n this.searchPharmacies(this.filter);\n }\n\n onSearch(filter: QueryRequest) {\n this.paginationData = { page: 1, limit: 7 };\n this.searchPharmacies(filter);\n }\n\n searchPharmacies(filter: QueryRequest) {\n this.filter = filter;\n this.data$ = this.pharmacyService.search(this.getFilter());\n }\n\n pageIndexChanged(pageIndex: any) {\n this.paginationData.page = pageIndex;\n this.searchPharmacies(this.filter);\n }\n\n getFilter() {\n return {\n ...this.filter,\n page: this.paginationData.page,\n limit: this.paginationData.limit\n };\n }\n\n hasAddress(address: Address) {\n if (!address) {\n return false;\n }\n\n return (\n !_.isEmpty(address.cep) ||\n !_.isEmpty(address.city) ||\n !_.isEmpty(address.neighborhood) ||\n !_.isEmpty(address.uf)\n );\n }\n}\n","export default \".align-center {\\n display: flex;\\n height: calc(100vh - 292px);\\n align-items: center;\\n justify-content: center;\\n}\";","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { PharmacyListComponent } from './pages/pharmacy-list/pharmacy-list.component';\n\nconst routes: Routes = [{ path: '', component: PharmacyListComponent }];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule]\n})\nexport class PublicPharmacyRoutingModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { SharedModule } from '@app/shared';\nimport { PipesModule } from '@app/shared/pipes';\nimport { PharmacyFilterComponent } from './components/pharmacy-filter/pharmacy-filter.component';\nimport { PharmacyListComponent } from './pages/pharmacy-list/pharmacy-list.component';\nimport { PublicPharmacyRoutingModule } from './public-pharmacy-routing.module';\nimport { NzIconModule } from 'ng-zorro-antd';\n\n@NgModule({\n declarations: [PharmacyListComponent, PharmacyFilterComponent],\n imports: [CommonModule, PublicPharmacyRoutingModule, SharedModule, PipesModule]\n})\nexport class PublicPharmacyModule {}\n"]}