Changeset ee137aa
- Timestamp:
- 08/07/20 10:59:56 (4 years ago)
- Branches:
- master
- Children:
- 63d885e
- Parents:
- c73269d
- Location:
- Farmatiko/ClientApp
- Files:
-
- 23 added
- 7 deleted
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
Farmatiko/ClientApp/angular.json
rc73269d ree137aa 54 54 "builder": "@angular-devkit/build-angular:dev-server", 55 55 "options": { 56 "browserTarget": "Farmatiko:build" 56 "browserTarget": "Farmatiko:build", 57 "port": 80 57 58 }, 58 59 "configurations": { -
Farmatiko/ClientApp/src/app/admin/admin.component.css
rc73269d ree137aa 11 11 width: 30vh; 12 12 } 13 14 h2 { 15 text-align: center; 16 padding: 50px; 17 } -
Farmatiko/ClientApp/src/app/admin/admin.component.html
rc73269d ree137aa 22 22 <div class="wrapper"> 23 23 <div> 24 <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf=" true">24 <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="requests"> 25 25 <thead> 26 26 <tr> … … 31 31 </thead> 32 32 <tbody> 33 <tr *ngFor="let head of heads">34 <td>{{ head.Name}} | {{head.Email}}</td>35 <td> {{head.Pharmacy[0].name}}</td>36 <td><a (click)=" Approve()">Approve</a> | <a (click)="Reject()">Reject</a></td>33 <tr *ngFor="let request of requests"> 34 <td>{{request.PharmacyHead.Name}} | {{request.PharmacyHead.Email}}</td> 35 <td><a (click)="openPharmacyDialog(request.Pharmacy)">{{request.Pharmacy.name}}</a></td> 36 <td><a (click)="approveRequest(request)">Approve</a> | <a (click)="rejectRequest(request)">Reject</a></td> 37 37 </tr> 38 38 </tbody> … … 44 44 <div class="wrapper"> 45 45 <div> 46 <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf=" true">46 <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="heads"> 47 47 <thead> 48 48 <tr> … … 53 53 <tbody> 54 54 <tr *ngFor="let head of heads"> 55 <td> {{head.Name}}| {{head.Email}}</td>56 <td><a (click)=" Del(head)">Delete</a> | <a (click)="ChangeDialog(head)">Change</a></td>55 <td><a (click)="openPharmacyHeadDialog(head)">{{head.Name}}</a> | {{head.Email}}</td> 56 <td><a (click)="deletePharmacyHead(head)">Delete</a> | <a (click)="openEditPharmacyHeadDialog(head)">Change</a></td> 57 57 </tr> 58 58 </tbody> … … 62 62 </mat-tab> 63 63 <mat-tab label="Create new account"> 64 <div class="createform"> 64 <h2 *ngIf="!this.head">Loading form...</h2> 65 <div class="createform" *ngIf="this.head"> 65 66 <mat-form-field appearance="fill"> 66 67 <mat-label>Name</mat-label> 67 <input matInput [(ngModel)]=" head.Name">68 <input matInput [(ngModel)]="this.head.Name"> 68 69 </mat-form-field><br> 69 70 <mat-form-field appearance="fill"> 70 71 <mat-label>Email</mat-label> 71 <input matInput [(ngModel)]=" head.Email">72 <input matInput [(ngModel)]="this.head.Email"> 72 73 </mat-form-field><br> 73 74 <mat-form-field appearance="fill"> 74 75 <mat-label>Password</mat-label> 75 <input matInput [(ngModel)]=" head.Passwd">76 <input matInput [(ngModel)]="this.head.Passwd"> 76 77 </mat-form-field><br> 77 78 <button onclick="createHead()" mat-raised-button color="primary">Create</button> … … 79 80 </mat-tab> 80 81 </mat-tab-group> 81 82 <div class="status">{{status}}</div> -
Farmatiko/ClientApp/src/app/admin/admin.component.ts
rc73269d ree137aa 1 import { Component, OnInit, Inject, Output, EventEmitter } from '@angular/core'; 2 import { Pharmacy } from '../models/Pharmacy'; 3 import { HttpClient } from '@angular/common/http'; 1 import { Component, OnInit } from '@angular/core'; 4 2 import { MatDialog } from '@angular/material/dialog'; 5 3 import { MatSnackBar, MatSnackBarRef, SimpleSnackBar } from '@angular/material/snack-bar'; 6 import { Router, RouterModule } from '@angular/router'; 7 import { PharmacyHead } from '../models/PharmacyHead'; 8 import { FormControl } from '@angular/forms'; 4 import { Router } from '@angular/router'; 5 import { IPharmacyHead, IPharmacyHeadRequest, IPharmacy } from '../shared/interfaces'; 6 import { DataService } from '../shared/data.service'; 7 import { EditPharmacyHeadDialogComponent } from '../dialogs/edit-pharmacy-head-dialog/edit-pharmacy-head-dialog.component'; 8 import { PharmacyDialogComponent } from '../dialogs/pharmacy-dialog/pharmacy-dialog.component'; 9 import { PharmacyHeadDialogComponent } from '../nav-menu/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component'; 9 10 10 11 … … 15 16 }) 16 17 export class AdminComponent implements OnInit { 17 public heads: PharmacyHead[];18 public head: PharmacyHead;19 public status: string;18 public heads: IPharmacyHead[] = []; 19 public requests: IPharmacyHeadRequest[] = []; 20 public head: IPharmacyHead; 20 21 21 constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string, private dialog: MatDialog, private _snackBar: MatSnackBar, private router: Router) { 22 http.get<PharmacyHead[]>(baseUrl + 'PharmacyHead/Get?').subscribe(result => { 23 this.heads = result; 24 console.log(this.heads); 25 }, error => console.error(error)); 22 constructor(private dataService: DataService, private dialog: MatDialog, private snackBar: MatSnackBar, private router: Router) { 23 26 24 } 27 25 28 26 ngOnInit(): void { 29 this.head = new PharmacyHead(); 27 this.dataService.getPharmacyHeads() 28 .subscribe((pHeads: IPharmacyHead[]) => { 29 this.heads = pHeads; 30 }, 31 (err: any) => console.log(err), 32 () => console.log("PharmacyHead data retrieved")); 33 34 this.dataService.getClaimingRequests() 35 .subscribe((pRequests: IPharmacyHeadRequest[]) => { 36 this.requests = pRequests; 37 }, 38 (err: any) => console.log(err), 39 () => console.log("PharmacyHead data retrieved")); 30 40 } 31 41 32 42 createHead() { 33 console.log(this.head); 34 // post request vo prodolzenie 35 36 this.status="Status bar createHead"; 37 //window.location.reload(); 43 this.dataService.insertPharmacyHead(this.head) 44 .subscribe((cHead: IPharmacyHead) => { 45 if(cHead) { 46 this.heads.push(cHead); 47 this.openSnackBar("New head created!","OK"); 48 } 49 }, 50 (err: any) => console.log(err), 51 () => console.log("PharmacyHead inserted")); 52 this.head = null; 38 53 } 39 54 40 Del(head: PharmacyHead) { 41 console.log(this.head); 42 // post request vo prodolzenie 43 44 this.status="Status bar Del"; 55 deletePharmacyHead(dHead: IPharmacyHead) { 56 this.dataService.deletePharmacyHead(dHead.id) 57 .subscribe((status: boolean) => { 58 if(status) { 59 this.openSnackBar("Head deleted!","OK"); 60 } 61 }, 62 (err: any) => console.log(err), 63 () => console.log("PharmacyHead deleted")); 45 64 } 46 65 47 ChangeDialog(head: PharmacyHead) { 48 console.log(this.head); 49 66 openEditPharmacyHeadDialog(eHead: IPharmacyHead) { 67 let dialogRef = this.dialog.open(EditPharmacyHeadDialogComponent, { 68 width: '450px', 69 data: eHead 70 }); 71 dialogRef.afterClosed().subscribe((editedHead: IPharmacyHead) => { 72 if(editedHead){ 73 this.heads = this.heads.filter(x => x !== eHead); 74 this.heads.push(editedHead); 75 this.dataService.updatePharmacyHead(editedHead) 76 .subscribe((hd: IPharmacyHead) => { 77 if(hd) { 78 this.openSnackBar("Success! PharmacyHead edited", "OK").onAction().subscribe(() => { 79 window.location.reload(); 80 }); 81 } 82 else { 83 this.openSnackBar("PharmacyHead edit failed", "Try again"); 84 } 85 }, 86 (err: any) => console.log(err), 87 () => console.log('PharmacyHead data updated')); 88 } 89 }); 50 90 } 51 91 52 Reject() { 53 console.log('Rejected'); 54 // post request vo prodolzenie 55 92 openPharmacyDialog(pharmacy: IPharmacy): void { 93 this.dialog.open(PharmacyDialogComponent, { 94 width: '450px', 95 data: pharmacy 96 }); 56 97 } 57 98 58 Approve() { 59 console.log('Approved'); 60 // post request vo prodolzenie 99 openPharmacyHeadDialog(hd: IPharmacyHead): void { 100 this.dialog.open(PharmacyHeadDialogComponent, { 101 width: '450px', 102 data: hd 103 }); 104 } 61 105 106 rejectRequest(req: IPharmacyHeadRequest) { 107 this.dataService.deleteClaimingRequest(req.id) 108 .subscribe((status: boolean) => { 109 if(status) { 110 this.openSnackBar("Request rejected!","OK"); 111 } 112 else { 113 this.openSnackBar("Something went wrong","Try again"); 114 } 115 }, 116 (err: any) => console.log(err), 117 () => console.log("PharmacyHeadRequest deleted")); 118 } 119 120 approveRequest(req: IPharmacyHeadRequest) { 121 if(req) { 122 req.PharmacyHead.Pharmacy.push(req.Pharmacy); 123 this.dataService.updatePharmacyHead(req.PharmacyHead) 124 .subscribe(() => { 125 126 }, 127 (err: any) => console.log(err), 128 () => console.log("PharmacyHead updated")) 129 } 130 } 131 132 openSnackBar(message: string, action: string) : MatSnackBarRef<SimpleSnackBar> { 133 return this.snackBar.open(message, action, { 134 duration: 5000, 135 }); 62 136 } 63 137 -
Farmatiko/ClientApp/src/app/app.module.ts
rc73269d ree137aa 6 6 import { MaterialModule } from './shared/material.module'; 7 7 import { ReactiveFormsModule } from '@angular/forms'; 8 9 import { DataService } from './shared/data.service'; 8 10 9 11 import { AppComponent } from './app.component'; … … 16 18 import { DashboardComponent } from './dashboard/dashboard.component'; 17 19 import { LoginComponent } from './login/login.component'; 20 import { MedicineDialogComponent } from './dialogs/medicine-dialog/medicine-dialog.component'; 21 import { PharmacyDialogComponent } from './dialogs/pharmacy-dialog/pharmacy-dialog.component'; 22 import { FacilityDialogComponent } from './dialogs/facility-dialog/facility-dialog.component'; 23 import { WorkerDialogComponent } from './dialogs/worker-dialog/worker-dialog.component'; 24 import { EditPharmacyDialogComponent } from './dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component'; 25 import { EditPharmacyHeadDialogComponent } from './dialogs/edit-pharmacy-head-dialog/edit-pharmacy-head-dialog.component'; 26 import { PharmacyHeadDialogComponent } from './nav-menu/dialogs/pharmacy-head-dialog/pharmacy-head-dialog.component'; 18 27 19 28 @NgModule({ … … 26 35 AdminComponent, 27 36 DashboardComponent, 28 LoginComponent 37 LoginComponent, 38 MedicineDialogComponent, 39 PharmacyDialogComponent, 40 FacilityDialogComponent, 41 WorkerDialogComponent, 42 EditPharmacyDialogComponent, 43 EditPharmacyHeadDialogComponent, 44 PharmacyHeadDialogComponent 29 45 ], 30 46 imports: [ … … 38 54 { path: 'admin', component: AdminComponent }, 39 55 { path: 'dashboard', component: DashboardComponent }, 56 { path: 'dashboard/:token', component: DashboardComponent }, 40 57 { path: 'login', component: LoginComponent } 41 58 ]), … … 44 61 ReactiveFormsModule 45 62 ], 46 providers: [], 63 providers: [ 64 DataService 65 ], 47 66 bootstrap: [AppComponent] 48 67 }) -
Farmatiko/ClientApp/src/app/counter/counter.component.html
rc73269d ree137aa 8 8 <h2>Здравствени установи</h2> 9 9 <mat-form-field> 10 <input matInput (keyup)="applyFilter ($event.target.value)" placeholder="Пронајди установа">10 <input matInput (keyup)="applyFilterFacilities($event.target.value)" placeholder="Пронајди установа"> 11 11 </mat-form-field> 12 12 </div> 13 <table [dataSource]="dataSource" mat-table matSort class="mat-elevation-z8"> 14 <ng-container matColumnDef="id"> 15 <th mat-header-cell *matHeaderCellDef mat-sort-header> id </th> 16 <td mat-cell *matCellDef="let facilities"> {{facilities.id}} </td> 17 </ng-container> 18 19 <ng-container matColumnDef="createdOn"> 20 <th mat-header-cell *matHeaderCellDef mat-sort-header> createdOn </th> 21 <td mat-cell *matCellDef="let facilities"> {{facilities.createdOn}} </td> 22 </ng-container> 23 24 <ng-container matColumnDef="deletedOn"> 25 <th mat-header-cell *matHeaderCellDef mat-sort-header> deletedOn </th> 26 <td mat-cell *matCellDef="let facilities"> {{facilities.deletedOn}} </td> 27 </ng-container> 28 29 <ng-container matColumnDef="Име"> 30 <th mat-header-cell *matHeaderCellDef mat-sort-header> Име </th> 31 <td mat-cell *matCellDef="let facilities"> {{facilities.name}} </td> 32 </ng-container> 33 34 <ng-container matColumnDef="Општина"> 35 <th mat-header-cell *matHeaderCellDef mat-sort-header> Општина </th> 36 <td mat-cell *matCellDef="let facilities"> {{facilities.municipality}} </td> 37 </ng-container> 38 39 <ng-container matColumnDef="Адреса"> 40 <th mat-header-cell *matHeaderCellDef mat-sort-header> Адреса </th> 41 <td mat-cell *matCellDef="let facilities"> {{facilities.address}} </td> 42 </ng-container> 43 44 <ng-container matColumnDef="Тип"> 45 <th mat-header-cell *matHeaderCellDef mat-sort-header> Тип </th> 46 <td mat-cell *matCellDef="let facilities"> {{facilities.type}} </td> 47 </ng-container> 48 49 <ng-container matColumnDef="Е-пошта"> 50 <th mat-header-cell *matHeaderCellDef mat-sort-header> Е-пошта </th> 51 <td mat-cell *matCellDef="let facilities"> {{facilities.email}} </td> 52 </ng-container> 53 54 <ng-container matColumnDef="Телефон"> 55 <th mat-header-cell *matHeaderCellDef mat-sort-header> Телефон </th> 56 <td mat-cell *matCellDef="let facilities"> {{facilities.phone}} </td> 57 </ng-container> 58 59 <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> 60 <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> 61 </table> 62 <mat-paginator #paginator [pageSize]="100" [pageSizeOptions]="[5, 10, 20, 100]"></mat-paginator> 13 <table class='table table-striped' aria-labelledby="tableLabel" *ngIf="true"> 14 <thead> 15 <tr> 16 <th>Име</th> 17 <th>Општина</th> 18 <th>Адреса</th> 19 <th>Тип</th> 20 <th>Е-пошта</th> 21 <th>Телефон</th> 22 </tr> 23 </thead> 24 <tbody> 25 <tr *ngFor="let facility of filteredFacilities"> 26 <td><a (click)="openFacilityDialog(facility)">{{ facility.name }}</a></td> 27 <td>{{ facility.municipality }}</td> 28 <td>{{ facility.address }}</td> 29 <td>{{ facility.type }}</td> 30 <td>{{ facility.email }}</td> 31 <td>{{ facility.phone }}</td> 32 </tr> 33 </tbody> 34 </table> 63 35 </div> 64 36 </mat-tab> … … 71 43 </mat-form-field> 72 44 </div> 73 <table [dataSource]="dataSourceWorkers" mat-table matSort class="mat-elevation-z8"> 74 <ng-container matColumnDef="Име"> 75 <th mat-header-cell *matHeaderCellDef mat-sort-header> Име </th> 76 <td mat-cell *matCellDef="let workers"> {{workers.name}} </td> 77 </ng-container> 78 79 <ng-container matColumnDef="Гранка"> 80 <th mat-header-cell *matHeaderCellDef mat-sort-header> Гранка </th> 81 <td mat-cell *matCellDef="let workers"> {{workers.branch}} </td> 82 </ng-container> 83 84 <ng-container matColumnDef="Установа"> 85 <th mat-header-cell *matHeaderCellDef mat-sort-header> Установа </th> 86 <td mat-cell *matCellDef="let workers"> {{workers.facility}} </td> 87 </ng-container> 88 89 <ng-container matColumnDef="Назив"> 90 <th mat-header-cell *matHeaderCellDef mat-sort-header> Назив </th> 91 <td mat-cell *matCellDef="let workers"> {{workers.title}} </td> 92 </ng-container> 93 94 <tr mat-header-row *matHeaderRowDef="displayedColumnsWorkers"></tr> 95 <tr mat-row *matRowDef="let row; columns: displayedColumnsWorkers;"></tr> 96 </table> 97 <mat-paginator #paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 20, 100]"></mat-paginator> 45 <table class='table table-striped' aria-labelledby="tableLabel" *ngIf="true"> 46 <thead> 47 <tr> 48 <th>Име</th> 49 <th>Гранка</th> 50 <th>Установа</th> 51 <th>Назив</th> 52 </tr> 53 </thead> 54 <tbody> 55 <tr *ngFor="let worker of filteredWorkers"> 56 <td><a (click)="openWorkerDialog(worker)">{{ worker.name }}</a></td> 57 <td>{{ worker.branch }}</td> 58 <td>{{ worker.facility }}</td> 59 <td>{{ worker.title }}</td> 60 </tr> 61 </tbody> 62 </table> 98 63 </div> 99 64 </mat-tab> -
Farmatiko/ClientApp/src/app/counter/counter.component.ts
rc73269d ree137aa 1 import { Component, OnInit, ViewChild, Inject, Input } from '@angular/core'; 2 import { HttpClient } from '@angular/common/http'; 3 import { HealthFacilities } from '../models/HealthFacilities'; 4 import { MatTableDataSource } from '@angular/material/table'; 5 import { MatPaginator } from '@angular/material/paginator'; 6 import { MatSort } from '@angular/material/sort'; 7 import { HealthcareWorkers } from '../models/HealthcareWorkers'; 1 import { Component, OnInit } from '@angular/core'; 2 import { IHealthFacilities, IHealthcareWorkers } from '../shared/interfaces'; 3 import { DataService } from '../shared/data.service'; 4 import { MatDialog } from '@angular/material/dialog'; 5 import { FacilityDialogComponent } from '../dialogs/facility-dialog/facility-dialog.component'; 6 import { WorkerDialogComponent } from '../dialogs/worker-dialog/worker-dialog.component'; 8 7 9 8 @Component({ … … 13 12 }) 14 13 export class CounterComponent implements OnInit { 15 @Input() facilities: HealthFacilities[]; 16 public workers: HealthcareWorkers[]; 17 displayedColumns = ['id','createdOn','deletedOn','Име','Општина','Адреса', 'Тип', 'Е-пошта', 'Телефон']; 18 displayedColumnsWorkers = ['Име','Гранка','Установа', 'Назив']; 19 dataSource = new MatTableDataSource<HealthFacilities>(); 20 dataSourceWorkers = new MatTableDataSource<HealthcareWorkers>(); 14 public facilities: IHealthFacilities[] = []; 15 public workers: IHealthcareWorkers[] = []; 16 public filteredFacilities: IHealthFacilities[] = []; 17 public filteredWorkers: IHealthcareWorkers[] = []; 21 18 22 @ViewChild(MatPaginator, {static: false}) paginator: MatPaginator; 23 @ViewChild(MatSort) sort: MatSort; 24 25 constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string) { 26 http.get<HealthFacilities[]>(baseUrl + 'HealthFacilities/Get?').subscribe(result => { 27 this.facilities = result; 28 console.log(this.facilities); 29 this.dataSource = new MatTableDataSource<HealthFacilities>(this.facilities); 30 }, error => console.error(error)); 31 http.get<HealthcareWorkers[]>(baseUrl + 'HealthcareWorker/Get?').subscribe(result => { 32 this.workers = result; 33 console.log(this.workers); 34 this.dataSourceWorkers = new MatTableDataSource<HealthcareWorkers>(this.workers); 35 }, error => console.error(error)); 36 } 37 ngOnInit(): void { 19 constructor(private dataService: DataService, private dialog: MatDialog) { 20 38 21 } 39 22 40 ngAfterViewInit(): void { 41 this.dataSource.paginator = this.paginator; 42 this.dataSource.sort = this.sort; 23 ngOnInit(): void { 24 this.dataService.getFacilities() 25 .subscribe((facility: IHealthFacilities[]) => { 26 this.facilities = this.filteredFacilities = facility; 27 }, 28 (err: any) => console.log(err), 29 () => console.log('Facility data retrieved!')); 30 31 this.dataService.getWorkers() 32 .subscribe((worker: IHealthcareWorkers[]) => { 33 this.workers = this.filteredWorkers = worker; 34 }, 35 (err: any) => console.log(err), 36 () => console.log('Facility data retrieved!')); 43 37 } 44 38 45 applyFilter(filterValue: string) { 46 filterValue = filterValue.trim(); 47 filterValue = filterValue.toLowerCase(); 48 this.dataSource.filter = filterValue; 39 applyFilterFacilities(filterValue: string) { 40 console.log("applyFilterFacilities works!") 41 if(filterValue) { 42 this.dataService.searchFacilities(filterValue) 43 .subscribe((facility: IHealthFacilities[]) => { 44 this.filteredFacilities = facility; 45 }, 46 (err: any) => console.log(err), 47 () => console.log('Facility data retrieved!')); 48 } 49 else { 50 this.filteredFacilities = this.facilities; 51 } 49 52 } 50 53 51 54 applyFilterWorkers(filterValue: string) { 52 filterValue = filterValue.trim(); 53 filterValue = filterValue.toLowerCase(); 54 this.dataSourceWorkers.filter = filterValue; 55 console.log("applyFilterWorkers works!") 56 if(filterValue) { 57 this.dataService.searchWorkers(filterValue) 58 .subscribe((worker: IHealthcareWorkers[]) => { 59 this.filteredWorkers = worker; 60 }, 61 (err: any) => console.log(err), 62 () => console.log('Worker data retrieved!')); 63 } 64 else { 65 this.filteredWorkers = this.workers; 66 } 67 } 68 69 openFacilityDialog(facility: IHealthFacilities): void { 70 this.dialog.open(FacilityDialogComponent, { 71 width: '450px', 72 data: facility 73 }); 74 } 75 76 openWorkerDialog(worker: IHealthcareWorkers): void { 77 this.dialog.open(WorkerDialogComponent, { 78 width: '450px', 79 data: worker 80 }); 55 81 } 56 82 } -
Farmatiko/ClientApp/src/app/dashboard/dashboard.component.html
rc73269d ree137aa 12 12 <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse"> 13 13 <ul class="navbar-nav flex-grow"> 14 <li>Logged as <!--{{head.Name}}--> </li>14 <li>Logged as ...<p *ngIf="head">{{head.Name}}</p> </li> 15 15 </ul> 16 16 </div> … … 18 18 <button mat-button [matMenuTriggerFor]="menu"><mat-icon>more_vert</mat-icon></button> 19 19 <mat-menu #menu="matMenu"> 20 <button mat-menu-item (click)="openDialog()"><mat-icon>person_add</mat-icon>View homepage</button> 21 <button mat-menu-item (click)="test()"><mat-icon>directions</mat-icon>Go to homepage</button> 20 <button mat-menu-item [routerLink]="['/']"><mat-icon>directions</mat-icon>Почетна</button> 22 21 </mat-menu> 23 22 </div> … … 30 29 <div class="header"> 31 30 <h2>Мои аптеки</h2> 32 <p *ngIf="! mypharmacies"><em>Loading...</em></p>31 <p *ngIf="!head"><em>Loading...</em></p> 33 32 </div> 34 <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf=" true">33 <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="head"> 35 34 <thead> 36 35 <tr> … … 43 42 </thead> 44 43 <tbody> 45 <tr *ngFor="let pharmacies of mypharmacies">44 <tr *ngFor="let pharmacies of head.Pharmacy"> 46 45 <td>{{pharmacies.name}}</td> 47 46 <td>{{pharmacies.location}}</td> 48 47 <td>{{pharmacies.address}}</td> 49 48 <td>{{pharmacies.workAllTime}}</td> 50 <td><a (click)=" works24hrs(pharmacies)">Работи 24/7</a> | <a (click)="doesntWork24hrs(pharmacies)">Не работи 24/7</a></td>49 <td><a (click)="openEditPharmacyDialog(pharmacies)">Edit</a></td> 51 50 </tr> 52 51 </tbody> … … 61 60 <input matInput (keyup)="applyFilterPharmacies($event.target.value)" placeholder="Пронајди аптека"> 62 61 </mat-form-field> 63 </div> 64 <table [dataSource]="dataSource" mat-table matSort class="mat-elevation-z8"> 65 <ng-container matColumnDef="Име">a 66 <th mat-header-cell *matHeaderCellDef mat-sort-header> Име </th> 67 <td mat-cell *matCellDef="let pharmacies"> {{pharmacies.name}} </td> 68 </ng-container> 69 70 <ng-container matColumnDef="Локација"> 71 <th mat-header-cell *matHeaderCellDef mat-sort-header> Локација </th> 72 <td mat-cell *matCellDef="let pharmacies"> {{pharmacies.location}} </td> 73 </ng-container> 74 75 <ng-container matColumnDef="Адреса"> 76 <th mat-header-cell *matHeaderCellDef mat-sort-header> Адреса </th> 77 <td mat-cell *matCellDef="let pharmacies"> {{pharmacies.address}} </td> 78 </ng-container> 79 80 <ng-container matColumnDef="Actions"> 81 <th mat-header-cell *matHeaderCellDef mat-sort-header> Actions </th> 82 <td mat-cell *matCellDef="let pharmacies"> <a (click)="claimPharmacy(pharmacies)">Claim Pharmacy</a> </td> 83 </ng-container> 84 85 <tr mat-header-row *matHeaderRowDef="displayedColumnsPharmacies"></tr> 86 <tr mat-row *matRowDef="let row; columns: displayedColumnsPharmacies;"></tr> 87 </table> 88 <mat-paginator #paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 20, 100]"></mat-paginator> 62 </div> 63 <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="pharmacies"> 64 <thead> 65 <tr> 66 <th>Име</th> 67 <th>Локација</th> 68 <th>Адреса</th> 69 <th>Работи 27/7?</th> 70 </tr> 71 </thead> 72 <tbody> 73 <tr *ngFor="let pharmacy of pharmacies"> 74 <td><a (click)="openPharmacyDialog(pharmacy)">{{ pharmacy.name }}</a></td> 75 <td>{{ pharmacy.location }}</td> 76 <td>{{ pharmacy.address }}</td> 77 <td>{{ pharmacy.workAllTime }}</td> 78 <td><a (click)="claimPharmacy(pharmacy)">Claim</a></td> 79 </tr> 80 </tbody> 81 </table> 89 82 </div> 90 83 </mat-tab> 91 84 </mat-tab-group> 92 93 <div class="statusbar">{{status}}</div>94 85 95 86 <div class="wrapper"> … … 97 88 <h2>Достапни лекови</h2> 98 89 <mat-form-field> 99 <input matInput (keyup)="applyFilter ($event.target.value)" placeholder="Пронајди лек">90 <input matInput (keyup)="applyFilterMedicines($event.target.value)" placeholder="Пронајди лек"> 100 91 </mat-form-field> 101 92 </div> 102 <table [dataSource]="dataSource" mat-table matSort class="mat-elevation-z8"> 103 <ng-container matColumnDef="Име"> 104 <th mat-header-cell *matHeaderCellDef mat-sort-header> Име </th> 105 <td mat-cell *matCellDef="let mymedicines"> {{mymedicines.name}} </td> 106 </ng-container> 107 108 <ng-container matColumnDef="Јачина"> 109 <th mat-header-cell *matHeaderCellDef mat-sort-header> Јачина </th> 110 <td mat-cell *matCellDef="let mymedicines"> {{mymedicines.strength}} </td> 111 </ng-container> 112 113 <ng-container matColumnDef="Форма"> 114 <th mat-header-cell *matHeaderCellDef mat-sort-header> Форма </th> 115 <td mat-cell *matCellDef="let mymedicines"> {{mymedicines.form}} </td> 116 </ng-container> 117 118 <ng-container matColumnDef="Начин на издавање"> 119 <th mat-header-cell *matHeaderCellDef mat-sort-header> Начин на издавање </th> 120 <td mat-cell *matCellDef="let mymedicines"> {{mymedicines.wayOfIssuing}} </td> 121 </ng-container> 122 123 <ng-container matColumnDef="Производител"> 124 <th mat-header-cell *matHeaderCellDef mat-sort-header> Производител </th> 125 <td mat-cell *matCellDef="let mymedicines"> {{mymedicines.manufacturer}} </td> 126 </ng-container> 127 128 <ng-container matColumnDef="Цена"> 129 <th mat-header-cell *matHeaderCellDef mat-sort-header> Цена </th> 130 <td mat-cell *matCellDef="let mymedicines"> {{mymedicines.price}} </td> 131 </ng-container> 132 133 <ng-container matColumnDef="Пакување"> 134 <th mat-header-cell *matHeaderCellDef mat-sort-header> Пакување </th> 135 <td mat-cell *matCellDef="let mymedicines"> {{mymedicines.packaging}} </td> 136 </ng-container> 137 138 <ng-container matColumnDef="Actions"> 139 <th mat-header-cell *matHeaderCellDef mat-sort-header> Actions </th> 140 <td mat-cell *matCellDef="let mymedicines"> <a (click)="medicineExists(mymedicines)">Exists</a> | <a (click)="medicineDoesntSell(mymedicines)">Doesnt sell</a> </td> 141 </ng-container> 142 143 <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> 144 <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> 145 </table> 146 <mat-paginator #paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 20, 100]"></mat-paginator> 93 <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="head"> 94 <thead> 95 <tr> 96 <th>Име</th> 97 <th>Јачина</th> 98 <th>Форма</th> 99 <th>Начин на издавање</th> 100 <th>Производител</th> 101 <th>Цена</th> 102 <th>Пакување</th> 103 </tr> 104 </thead> 105 <tbody> 106 <tr *ngFor="let medicine of head.PharmacyMedicines"> 107 <td><a (click)="openMedicineDialog(medicine)">{{ medicine.name }}</a></td> 108 <td>{{ medicine.strength }}</td> 109 <td>{{ medicine.form }}</td> 110 <td>{{ medicine.wayOfIssuing }}</td> 111 <td>{{ medicine.manufacturer }}</td> 112 <td>{{ medicine.price }}</td> 113 <td>{{ medicine.packaging }}</td> 114 <td><a (click)="deleteMedicine(medicine)">Delete</a></td> 115 </tr> 116 </tbody> 117 </table> 147 118 </div> -
Farmatiko/ClientApp/src/app/dashboard/dashboard.component.ts
rc73269d ree137aa 1 import { Component, OnInit, ViewChild, Inject, Output, EventEmitter } from '@angular/core'; 2 import { Pharmacy } from '../models/Pharmacy'; 3 import { MatTableDataSource } from '@angular/material/table'; 4 import { MatPaginator } from '@angular/material/paginator'; 5 import { MatSort } from '@angular/material/sort'; 6 import { HttpClient } from '@angular/common/http'; 1 import { Component, OnInit} from '@angular/core'; 7 2 import { MatDialog } from '@angular/material/dialog'; 8 3 import { MatSnackBar, MatSnackBarRef, SimpleSnackBar } from '@angular/material/snack-bar'; 9 import { Router, RouterModule } from '@angular/router'; 10 import { HomeComponent } from '../home/home.component'; 11 import { Medicine } from '../models/Medicine'; 12 import { PharmacyHead } from '../models/PharmacyHead'; 13 import { MedicineList } from '../models/MedicineList'; 4 import { IPharmacy, IMedicine, IPharmacyHead, IPharmacyHeadRequest } from '../shared/interfaces'; 5 import { DataService } from '../shared/data.service'; 6 import { PharmacyDialogComponent } from '../dialogs/pharmacy-dialog/pharmacy-dialog.component'; 7 import { EditPharmacyDialogComponent } from '../dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component'; 8 import { MedicineDialogComponent } from '../dialogs/medicine-dialog/medicine-dialog.component'; 9 import { ActivatedRoute, Router } from '@angular/router'; 14 10 15 11 @Component({ … … 19 15 }) 20 16 export class DashboardComponent implements OnInit { 21 public mymedicines: Medicine[]; 22 public hasmymedicines: boolean[]; 23 public pharmacies: Pharmacy[]; 24 public mypharmacies: Pharmacy[]; 25 public head: PharmacyHead; 26 public status: string; 27 displayedColumns = ['Име','Јачина','Форма', 'Начин на издавање', 'Производител', 'Цена', 'Пакување', 'Actions']; 28 displayedColumnsPharmacies = ['Име','Локација','Адреса', 'Actions']; 29 dataSource = new MatTableDataSource<Medicine>(); 30 dataSourcePharmacies = new MatTableDataSource<Pharmacy>(); 17 public pharmacies: IPharmacy[] = []; 18 public head: IPharmacyHead; 19 public filteredPharmacies: IPharmacy[] = []; 20 public filteredMedicines: IMedicine[] = []; 21 public request: IPharmacyHeadRequest; 22 public token: string; 31 23 32 @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; 33 @ViewChild(MatSort) sort: MatSort; 24 constructor(private dataService: DataService, private dialog: MatDialog, private snackBar: MatSnackBar, private router: Router, private route: ActivatedRoute) { 34 25 35 constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string, private dialog: MatDialog, private _snackBar: MatSnackBar, private router: Router) {36 http.get<PharmacyHead>(baseUrl + 'PharmacyHead/GetLoggedHead?').subscribe(result => {37 this.head = result;38 console.log(this.head);39 this.mymedicines = this.head.PharmacyMedicines.Medicines;40 console.log(this.mymedicines);41 this.mypharmacies = this.head.Pharmacy;42 console.log(this.mypharmacies);43 this.dataSource = new MatTableDataSource<Medicine>(this.mymedicines);44 }, error => console.error(error));45 http.get<Pharmacy[]>(baseUrl + 'Pharmacy/Get?').subscribe(result => {46 this.pharmacies = result;47 console.log(this.pharmacies);48 this.dataSourcePharmacies = new MatTableDataSource<Pharmacy>(this.pharmacies);49 }, error => console.error(error));50 26 } 51 27 52 28 ngOnInit(): void { 29 this.token = this.route.snapshot.params['token']; 30 this.dataService.getPharmacyHead(this.token) 31 .subscribe((hd: IPharmacyHead) => { 32 this.head = hd; 33 }, 34 (err: any) => console.log(err), 35 () => console.log('Head data retrieved')); 36 37 this.dataService.getPharmacies() 38 .subscribe((pharmacy: IPharmacy[]) => { 39 this.pharmacies = pharmacy; 40 }, 41 (err: any) => console.log(err), 42 () => console.log('Pharmacy data retrieved')); 43 } 44 45 claimPharmacy(pharmacy: IPharmacy) { 46 if(pharmacy && !this.head.Pharmacy.find(x => x === pharmacy)) { 47 this.request = null; 48 this.request.Pharmacy = pharmacy; 49 this.request.PharmacyHead = this.head; 50 this.dataService.claimPharmacy(this.request) 51 .subscribe((req: IPharmacyHeadRequest) => { 52 if(req) { 53 this.openSnackBar("Claiming request sent!", "OK"); 54 } 55 else { 56 this.openSnackBar("Unable to send a request", "Try again"); 57 } 58 }, 59 (err: any) => console.log(err), 60 () => console.log('Claiming request sent!')); 61 } 53 62 } 54 63 55 ngAfterViewInit(): void { 56 this.dataSource.paginator = this.paginator; 57 this.dataSource.sort = this.sort; 58 this.dataSourcePharmacies.paginator = this.paginator; 59 this.dataSourcePharmacies.sort = this.sort; 64 deleteMedicine(medicine: IMedicine){ 65 this.head.PharmacyMedicines = this.head.PharmacyMedicines.filter(x => x !== medicine); 66 this.dataService.updatePharmacyHead(this.head) 67 .subscribe((hd: IPharmacyHead) => { 68 if(hd) { 69 this.openSnackBar("Success! Medicine deleted", "OK"); 70 } 71 else { 72 this.openSnackBar("Unable to delete Medicine", "Try again"); 73 } 74 }, 75 (err: any) => console.log(err), 76 () => console.log('Update sent!')); 60 77 } 61 78 62 works24hrs(pharmacy: Pharmacy) { 63 console.log(pharmacy); 64 // post request vo prodolzenie 65 66 this.status="Status bar works24hrs"; 67 } 68 69 doesntWork24hrs(pharmacy: Pharmacy) { 70 console.log(pharmacy); 71 // post request vo prodolzenie 72 73 this.status="Status bar doesntWork24hrs"; 74 } 75 76 claimPharmacy(pharmacy: Pharmacy) { 77 console.log(pharmacy); 78 // post request vo prodolzenie 79 80 this.status="Status bar claimPharmacy"; 81 } 82 83 medicineExists(mymedicine: Medicine) { 84 console.log(mymedicine); 85 // post request vo prodolzenie 86 87 this.status="Status bar medicineexists"; 88 } 89 90 medicineDoesntSell(mymedicine: Medicine) { 91 console.log(mymedicine); 92 // post request vo prodolzenie 93 94 this.status="Status bar medicineDoesntSell"; 95 } 96 97 applyFilter(filterValue: string) { 98 filterValue = filterValue.trim(); 99 filterValue = filterValue.toLowerCase(); 100 this.dataSource.filter = filterValue; 79 applyFilterMedicines(filterValue: string) { 80 console.log("applyFilterMedicines works!") 81 if(filterValue) { 82 this.dataService.searchMedicines(filterValue) 83 .subscribe((medicine: IMedicine[]) => { 84 this.filteredMedicines = medicine; 85 }, 86 (err: any) => console.log(err), 87 () => console.log('Medicine data retrieved')); 88 } 89 else { 90 this.filteredMedicines = this.head.PharmacyMedicines; 91 } 101 92 } 102 93 103 94 applyFilterPharmacies(filterValue: string) { 104 filterValue = filterValue.trim(); 105 filterValue = filterValue.toLowerCase(); 106 this.dataSourcePharmacies.filter = filterValue; 95 console.log("applyFilterPharmacies works!") 96 if(filterValue) { 97 this.dataService.searchPharmacies(filterValue) 98 .subscribe((pharmacy: IPharmacy[]) => { 99 this.filteredPharmacies = pharmacy; 100 }, 101 (err: any) => console.log(err), 102 () => console.log('Pharmacy data retrieved')); 103 } 104 else { 105 this.filteredPharmacies = this.pharmacies; 106 } 107 107 } 108 108 109 test(): void {110 console.log('Snackbar works!');111 this.openSnackBar("Are you sure?", "Yes").onAction().subscribe(() => {112 this.router.navigate(['/']);109 openPharmacyDialog(pharmacy: IPharmacy): void { 110 this.dialog.open(PharmacyDialogComponent, { 111 width: '450px', 112 data: pharmacy 113 113 }); 114 114 } 115 115 116 openDialog():void { 117 let dialogRef = this.dialog.open(HomeComponent, { 118 width: '70%' 116 openEditPharmacyDialog(pharmacy: IPharmacy): void { 117 let dialogRef = this.dialog.open(EditPharmacyDialogComponent, { 118 width: '450px', 119 data: pharmacy 119 120 }); 120 dialogRef.afterClosed().subscribe(result => { 121 if(result) { 122 this.openSnackBar("Success", "OK"); 123 } 121 dialogRef.afterClosed().subscribe((editedPharmacy: IPharmacy) => { 122 if(editedPharmacy) { 123 this.head.Pharmacy = this.head.Pharmacy.filter(x => x !== pharmacy); 124 this.head.Pharmacy.push(editedPharmacy); 125 this.dataService.updatePharmacyHead(this.head) 126 .subscribe((hd: IPharmacyHead) => { 127 if(hd) { 128 this.openSnackBar("Success! Pharmacy edited", "OK").onAction().subscribe(() => { 129 window.location.reload(); 130 }); 131 } 132 else { 133 this.openSnackBar("Pharmacy edit failed", "Try again"); 134 } 135 }, 136 (err: any) => console.log(err), 137 () => console.log('PharmacyHead data updated')); 138 }; 139 }); 140 } 141 142 openMedicineDialog(medicine: IMedicine): void { 143 this.dialog.open(MedicineDialogComponent, { 144 width: '450px', 145 data: medicine 124 146 }); 125 147 } 126 148 127 149 openSnackBar(message: string, action: string) : MatSnackBarRef<SimpleSnackBar> { 128 return this. _snackBar.open(message, action, {129 duration: 10000,150 return this.snackBar.open(message, action, { 151 duration: 5000, 130 152 }); 131 153 } -
Farmatiko/ClientApp/src/app/home/home.component.html
rc73269d ree137aa 7 7 <h2>Лекови</h2> 8 8 <mat-form-field> 9 <input matInput (keyup)="applyFilter ($event.target.value)" placeholder="Пронајди лек">9 <input matInput (keyup)="applyFilterMedicines($event.target.value)" placeholder="Пронајди лек"> 10 10 </mat-form-field> 11 11 </div> 12 <table [dataSource]="dataSource" mat-table matSort class="mat-elevation-z8"> 13 <ng-container matColumnDef="Име"> 14 <th mat-header-cell *matHeaderCellDef mat-sort-header> Име </th> 15 <td mat-cell *matCellDef="let medicines"> {{medicines.name}} </td> 16 </ng-container> 17 18 <ng-container matColumnDef="Јачина"> 19 <th mat-header-cell *matHeaderCellDef mat-sort-header> Јачина </th> 20 <td mat-cell *matCellDef="let medicines"> {{medicines.strength}} </td> 21 </ng-container> 22 23 <ng-container matColumnDef="Форма"> 24 <th mat-header-cell *matHeaderCellDef mat-sort-header> Форма </th> 25 <td mat-cell *matCellDef="let medicines"> {{medicines.form}} </td> 26 </ng-container> 27 28 <ng-container matColumnDef="Начин на издавање"> 29 <th mat-header-cell *matHeaderCellDef mat-sort-header> Начин на издавање </th> 30 <td mat-cell *matCellDef="let medicines"> {{medicines.wayOfIssuing}} </td> 31 </ng-container> 32 33 <ng-container matColumnDef="Производител"> 34 <th mat-header-cell *matHeaderCellDef mat-sort-header> Производител </th> 35 <td mat-cell *matCellDef="let medicines"> {{medicines.manufacturer}} </td> 36 </ng-container> 37 38 <ng-container matColumnDef="Цена"> 39 <th mat-header-cell *matHeaderCellDef mat-sort-header> Цена </th> 40 <td mat-cell *matCellDef="let medicines"> {{medicines.price}} </td> 41 </ng-container> 42 43 <ng-container matColumnDef="Пакување"> 44 <th mat-header-cell *matHeaderCellDef mat-sort-header> Пакување </th> 45 <td mat-cell *matCellDef="let medicines"> {{medicines.packaging}} </td> 46 </ng-container> 47 48 <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> 49 <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr> 50 </table> 51 <mat-paginator #paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 20, 100]"></mat-paginator> 12 <table class='table table-striped' aria-labelledby="tableLabel" *ngIf="true"> 13 <thead> 14 <tr> 15 <th>Име</th> 16 <th>Јачина</th> 17 <th>Форма</th> 18 <th>Начин на издавање</th> 19 <th>Производител</th> 20 <th>Цена</th> 21 <th>Пакување</th> 22 </tr> 23 </thead> 24 <tbody> 25 <tr *ngFor="let medicine of filteredMedicines"> 26 <td><a (click)="openMedicineDialog(medicine)">{{ medicine.name }}</a></td> 27 <td>{{ medicine.strength }}</td> 28 <td>{{ medicine.form }}</td> 29 <td>{{ medicine.wayOfIssuing }}</td> 30 <td>{{ medicine.manufacturer }}</td> 31 <td>{{ medicine.price }}</td> 32 <td>{{ medicine.packaging }}</td> 33 </tr> 34 </tbody> 35 </table> 52 36 </div> 53 37 </mat-tab> … … 60 44 </mat-form-field> 61 45 </div> 62 <table [dataSource]="dataSourcePharmacies" mat-table matSort class="mat-elevation-z8"> 63 <ng-container matColumnDef="Име"> 64 <th mat-header-cell *matHeaderCellDef mat-sort-header> Име </th> 65 <td mat-cell *matCellDef="let pharmacies"> {{pharmacies.name}} </td> 66 </ng-container> 67 68 <ng-container matColumnDef="Локација"> 69 <th mat-header-cell *matHeaderCellDef mat-sort-header> Локација </th> 70 <td mat-cell *matCellDef="let pharmacies"> {{pharmacies.location}} </td> 71 </ng-container> 72 73 <ng-container matColumnDef="Адреса"> 74 <th mat-header-cell *matHeaderCellDef mat-sort-header> Адреса </th> 75 <td mat-cell *matCellDef="let pharmacies"> {{pharmacies.address}} </td> 76 </ng-container> 77 78 <ng-container matColumnDef="Работи 27/7?"> 79 <th mat-header-cell *matHeaderCellDef mat-sort-header> Работи 27/7? </th> 80 <td mat-cell *matCellDef="let pharmacies"> {{pharmacies.workAllTime}} </td> 81 </ng-container> 82 83 <tr mat-header-row *matHeaderRowDef="displayedColumnsPharmacies"></tr> 84 <tr mat-row *matRowDef="let row; columns: displayedColumnsPharmacies;"></tr> 85 </table> 86 <mat-paginator #paginator [pageSize]="5" [pageSizeOptions]="[5, 10, 20, 100]"></mat-paginator> 46 <table class='table table-striped' aria-labelledby="tableLabel" *ngIf="true"> 47 <thead> 48 <tr> 49 <th>Име</th> 50 <th>Локација</th> 51 <th>Адреса</th> 52 <th>Работи 27/7?</th> 53 </tr> 54 </thead> 55 <tbody> 56 <tr *ngFor="let pharmacy of filteredPharmacies"> 57 <td><a (click)="openPharmacyDialog(pharmacy)">{{ pharmacy.name }}</a></td> 58 <td>{{ pharmacy.location }}</td> 59 <td>{{ pharmacy.address }}</td> 60 <td>{{ pharmacy.workAllTime }}</td> 61 </tr> 62 </tbody> 63 </table> 87 64 </div> 88 65 </mat-tab> -
Farmatiko/ClientApp/src/app/home/home.component.ts
rc73269d ree137aa 1 import { Component, OnInit, ViewChild, Inject } from '@angular/core'; 2 import { HttpClient } from '@angular/common/http'; 3 import { Medicine } from '../models/Medicine'; 4 import { Pharmacy } from '../models/Pharmacy'; 5 import { MatTableDataSource } from '@angular/material/table'; 6 import { MatPaginator } from '@angular/material/paginator'; 7 import { MatSort } from '@angular/material/sort'; 1 import { Component, OnInit } from '@angular/core'; 2 import { IMedicine, IPharmacy } from '../shared/interfaces'; 3 import { DataService } from '../shared/data.service'; 4 import { MatDialog } from '@angular/material/dialog'; 5 import { MedicineDialogComponent } from '../dialogs/medicine-dialog/medicine-dialog.component'; 6 import { PharmacyDialogComponent } from '../dialogs/pharmacy-dialog/pharmacy-dialog.component'; 8 7 9 8 @Component({ … … 13 12 }) 14 13 export class HomeComponent implements OnInit { 15 public medicines: Medicine[]; 16 public pharmacies: Pharmacy[]; 17 displayedColumns = ['Име','Јачина','Форма', 'Начин на издавање', 'Производител', 'Цена', 'Пакување']; 18 displayedColumnsPharmacies = ['Име','Локација','Адреса', 'Работи 27/7?']; 19 dataSource = new MatTableDataSource<Medicine>(); 20 dataSourcePharmacies = new MatTableDataSource<Pharmacy>(); 14 public medicines: IMedicine[] = []; 15 public pharmacies: IPharmacy[] = []; 16 public filteredMedicines: IMedicine[] = []; 17 public filteredPharmacies: IPharmacy[] = []; 21 18 22 @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; 23 @ViewChild(MatSort) sort: MatSort; 19 constructor(private dataService: DataService, private dialog: MatDialog) { 24 20 25 constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string) {26 http.get<Medicine[]>(baseUrl + 'Medicine/Get?').subscribe(result => {27 this.medicines = result;28 console.log(this.medicines);29 this.dataSource = new MatTableDataSource<Medicine>(this.medicines);30 }, error => console.error(error));31 http.get<Pharmacy[]>(baseUrl + 'Pharmacy/Get?').subscribe(result => {32 this.pharmacies = result;33 console.log(this.pharmacies);34 this.dataSourcePharmacies = new MatTableDataSource<Pharmacy>(this.pharmacies);35 }, error => console.error(error));36 }37 ngOnInit(): void {38 21 } 39 22 40 ngAfterViewInit(): void { 41 this.dataSource.paginator = this.paginator; 42 this.dataSource.sort = this.sort; 43 this.dataSourcePharmacies.paginator = this.paginator; 44 this.dataSourcePharmacies.sort = this.sort; 23 ngOnInit(): void { 24 this.dataService.getMedicines() 25 .subscribe((medicine: IMedicine[]) => { 26 this.medicines = this.filteredMedicines = medicine; 27 }, 28 (err: any) => console.log(err), 29 () => console.log('Medicine data retrieved')); 30 31 this.dataService.getPharmacies() 32 .subscribe((pharmacy: IPharmacy[]) => { 33 this.pharmacies = this.filteredPharmacies = pharmacy; 34 }, 35 (err: any) => console.log(err), 36 () => console.log('Pharmacy data retrieved')); 45 37 } 46 38 47 applyFilter(filterValue: string) { 48 filterValue = filterValue.trim(); 49 filterValue = filterValue.toLowerCase(); 50 this.dataSource.filter = filterValue; 39 applyFilterMedicines(filterValue: string) { 40 console.log("applyFilterMedicines works!") 41 if(filterValue) { 42 this.dataService.searchMedicines(filterValue) 43 .subscribe((medicine: IMedicine[]) => { 44 this.filteredMedicines = medicine; 45 }, 46 (err: any) => console.log(err), 47 () => console.log('Medicine data retrieved')); 48 } 49 else { 50 this.filteredMedicines = this.medicines; 51 } 51 52 } 52 53 53 54 applyFilterPharmacies(filterValue: string) { 54 filterValue = filterValue.trim(); 55 filterValue = filterValue.toLowerCase(); 56 this.dataSourcePharmacies.filter = filterValue; 55 console.log("applyFilterPharmacies works!") 56 if(filterValue) { 57 this.dataService.searchPharmacies(filterValue) 58 .subscribe((pharmacy: IPharmacy[]) => { 59 this.filteredPharmacies = pharmacy; 60 }, 61 (err: any) => console.log(err), 62 () => console.log('Pharmacy data retrieved')); 63 } 64 else { 65 this.filteredPharmacies = this.pharmacies; 66 } 67 } 68 69 openMedicineDialog(medicine: IMedicine): void { 70 this.dialog.open(MedicineDialogComponent, { 71 width: '450px', 72 data: medicine 73 }); 74 } 75 76 openPharmacyDialog(pharmacy: IPharmacy): void { 77 this.dialog.open(PharmacyDialogComponent, { 78 width: '450px', 79 data: pharmacy 80 }); 57 81 } 58 82 } -
Farmatiko/ClientApp/src/app/korona/korona.component.html
rc73269d ree137aa 12 12 <div class="col"> 13 13 <div class="counter"> 14 <i class="fa fa-code fa-2x" *ngIf="korona">{{korona [0].totalMK}}</i>14 <i class="fa fa-code fa-2x" *ngIf="korona">{{korona.totalMK}}</i> 15 15 <h2 class="timer count-title count-number"></h2> 16 16 <p class="count-text ">Вкупно случаи во земјата</p> … … 19 19 <div class="col"> 20 20 <div class="counter"> 21 <i class="fa fa-coffee fa-2x" *ngIf="korona">{{korona [0].activeMK}}</i>21 <i class="fa fa-coffee fa-2x" *ngIf="korona">{{korona.activeMK}}</i> 22 22 <h2 class="timer count-title count-number"></h2> 23 23 <p class="count-text ">Активни случаи во земјата</p> … … 26 26 <div class="col"> 27 27 <div class="counter"> 28 <i class="fa fa-lightbulb-o fa-2x" *ngIf="korona">{{korona [0].deathsMK}}</i>28 <i class="fa fa-lightbulb-o fa-2x" *ngIf="korona">{{korona.deathsMK}}</i> 29 29 <h2 class="timer count-title count-number"></h2> 30 30 <p class="count-text ">Смртни случаи во земјата</p> … … 33 33 <div class="col"> 34 34 <div class="counter"> 35 <i class="fa fa-bug fa-2x" *ngIf="korona">{{korona [0].newMK}}</i>35 <i class="fa fa-bug fa-2x" *ngIf="korona">{{korona.newMK}}</i> 36 36 <h2 class="timer count-title count-number"></h2> 37 37 <p class="count-text ">Нови случаи во земјата</p> … … 42 42 <div class="col"> 43 43 <div class="counter"> 44 <i class="fa fa-bug fa-2x" *ngIf="korona">{{korona [0].totalGlobal}}</i>44 <i class="fa fa-bug fa-2x" *ngIf="korona">{{korona.totalGlobal}}</i> 45 45 <h2 class="timer count-title count-number"></h2> 46 46 <p class="count-text ">Вкупно случаи глобално</p> … … 49 49 <div class="col"> 50 50 <div class="counter"> 51 <i class="fa fa-bug fa-2x" *ngIf="korona">{{korona [0].activeGlobal}}</i>51 <i class="fa fa-bug fa-2x" *ngIf="korona">{{korona.activeGlobal}}</i> 52 52 <h2 class="timer count-title count-number"></h2> 53 53 <p class="count-text ">Активни случаи глобално</p> … … 56 56 <div class="col"> 57 57 <div class="counter"> 58 <i class="fa fa-bug fa-2x" *ngIf="korona">{{korona [0].deathsGlobal}}</i>58 <i class="fa fa-bug fa-2x" *ngIf="korona">{{korona.deathsGlobal}}</i> 59 59 <h2 class="timer count-title count-number"></h2> 60 60 <p class="count-text ">Смртни случаи глобално</p> -
Farmatiko/ClientApp/src/app/korona/korona.component.ts
rc73269d ree137aa 1 import { Component, OnInit, Inject } from '@angular/core'; 2 import { Pandemic } from '../models/Pandemic'; 3 import { MatTableDataSource } from '@angular/material/table'; 4 import { HttpClient } from '@angular/common/http'; 1 import { Component, OnInit } from '@angular/core'; 2 import { DataService } from '../shared/data.service'; 3 import { IPandemic } from '../shared/interfaces'; 5 4 6 5 @Component({ … … 10 9 }) 11 10 export class KoronaComponent implements OnInit { 12 public korona: Pandemic[];11 public korona: IPandemic; 13 12 14 constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string) { 15 http.get<Pandemic[]>(baseUrl + 'Pandemic/Get?').subscribe(result => { 16 this.korona = result; 17 console.log(this.korona); 18 }, error => console.error(error)); 13 constructor(private dataService: DataService) { 14 19 15 } 20 16 21 17 ngOnInit(): void { 18 this.dataService.getPandemic() 19 .subscribe((res: IPandemic) => { 20 this.korona = res; 21 }, 22 (err: any) => console.log(err), 23 () => console.log('Pandemic data retrieved')); 22 24 } 23 25 -
Farmatiko/ClientApp/src/app/login/login.component.html
rc73269d ree137aa 6 6 <div class="example-container"> 7 7 <mat-form-field> 8 <input matInput placeholder="Email" formControlName="email">8 <input matInput placeholder="Email" [(ngModel)]="this.email" formControlName="email"> 9 9 </mat-form-field> 10 10 11 11 <mat-form-field> 12 <input matInput type="password" placeholder="Password" formControlName="password">12 <input matInput type="password" placeholder="Password" [(ngModel)]="this.passwd" formControlName="password"> 13 13 </mat-form-field> 14 14 15 <button [disabled]="!loginForm.valid" mat-raised-button color="primary" [routerLink]="['/dashboard']" mat-button>Најави се</button>15 <button [disabled]="!loginForm.valid" mat-raised-button color="primary" (click)="loginPharmacyHead()" mat-button>Најави се</button> 16 16 </div> 17 17 </form> -
Farmatiko/ClientApp/src/app/login/login.component.ts
rc73269d ree137aa 1 1 import { Component, OnInit } from '@angular/core'; 2 import { FormBuilder, FormGroup, FormControl, Validators, FormArray } from '@angular/forms'; 2 import { FormGroup, FormControl, Validators } from '@angular/forms'; 3 import { Router, ActivatedRoute } from '@angular/router'; 4 import { DataService } from '../shared/data.service'; 3 5 4 6 @Component({ … … 9 11 export class LoginComponent implements OnInit { 10 12 loginForm: FormGroup; 13 email: string; 14 passwd: string; 15 errorMessage: string; 11 16 12 constructor( ) {17 constructor(private dataService: DataService,private router: Router, private route: ActivatedRoute) { 13 18 this.loginForm = new FormGroup({ 14 19 email: new FormControl('', [Validators.required, Validators.email]), … … 20 25 } 21 26 27 loginPharmacyHead() { 28 this.dataService.loginPharmacyHead(this.email, this.passwd) 29 .subscribe((id: Number) => { 30 if(id) { 31 this.router.navigate(['/dashboard/' + id]); 32 } 33 else { 34 this.errorMessage = 'There was a problem signing in!'; 35 console.log(this.errorMessage); 36 } 37 }, 38 (err: any) => console.log(err)); 39 } 22 40 }
Note:
See TracChangeset
for help on using the changeset viewer.