Changes in / [63d885e:c406ae5]
- Location:
- Farmatiko/ClientApp
- Files:
-
- 7 added
- 23 deleted
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
Farmatiko/ClientApp/angular.json
r63d885e rc406ae5 54 54 "builder": "@angular-devkit/build-angular:dev-server", 55 55 "options": { 56 "browserTarget": "Farmatiko:build", 57 "port": 80 56 "browserTarget": "Farmatiko:build" 58 57 }, 59 58 "configurations": { -
Farmatiko/ClientApp/src/app/admin/admin.component.css
r63d885e rc406ae5 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
r63d885e rc406ae5 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=" requests">24 <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="true"> 25 25 <thead> 26 26 <tr> … … 31 31 </thead> 32 32 <tbody> 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>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> 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=" heads">46 <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="true"> 47 47 <thead> 48 48 <tr> … … 53 53 <tbody> 54 54 <tr *ngFor="let head of heads"> 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>55 <td>{{head.Name}} | {{head.Email}}</td> 56 <td><a (click)="Del(head)">Delete</a> | <a (click)="ChangeDialog(head)">Change</a></td> 57 57 </tr> 58 58 </tbody> … … 62 62 </mat-tab> 63 63 <mat-tab label="Create new account"> 64 <h2 *ngIf="!this.head">Loading form...</h2> 65 <div class="createform" *ngIf="this.head"> 64 <div class="createform"> 66 65 <mat-form-field appearance="fill"> 67 66 <mat-label>Name</mat-label> 68 <input matInput [(ngModel)]=" this.head.Name">67 <input matInput [(ngModel)]="head.Name"> 69 68 </mat-form-field><br> 70 69 <mat-form-field appearance="fill"> 71 70 <mat-label>Email</mat-label> 72 <input matInput [(ngModel)]=" this.head.Email">71 <input matInput [(ngModel)]="head.Email"> 73 72 </mat-form-field><br> 74 73 <mat-form-field appearance="fill"> 75 74 <mat-label>Password</mat-label> 76 <input matInput [(ngModel)]=" this.head.Passwd">75 <input matInput [(ngModel)]="head.Passwd"> 77 76 </mat-form-field><br> 78 77 <button onclick="createHead()" mat-raised-button color="primary">Create</button> … … 80 79 </mat-tab> 81 80 </mat-tab-group> 81 82 <div class="status">{{status}}</div> -
Farmatiko/ClientApp/src/app/admin/admin.component.ts
r63d885e rc406ae5 1 import { Component, OnInit } from '@angular/core'; 1 import { Component, OnInit, Inject, Output, EventEmitter } from '@angular/core'; 2 import { Pharmacy } from '../models/Pharmacy'; 3 import { HttpClient } from '@angular/common/http'; 2 4 import { MatDialog } from '@angular/material/dialog'; 3 5 import { MatSnackBar, MatSnackBarRef, SimpleSnackBar } from '@angular/material/snack-bar'; 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'; 6 import { Router, RouterModule } from '@angular/router'; 7 import { PharmacyHead } from '../models/PharmacyHead'; 8 import { FormControl } from '@angular/forms'; 10 9 11 10 … … 16 15 }) 17 16 export class AdminComponent implements OnInit { 18 public heads: IPharmacyHead[] =[];19 public requests: IPharmacyHeadRequest[] = [];20 public head: IPharmacyHead;17 public heads: PharmacyHead[]; 18 public head: PharmacyHead; 19 public status: string; 21 20 22 constructor(private dataService: DataService, private dialog: MatDialog, private snackBar: MatSnackBar, private router: Router) { 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)); 26 } 27 28 ngOnInit(): void { 29 this.head = new PharmacyHead(); 30 } 31 32 createHead() { 33 console.log(this.head); 34 // post request vo prodolzenie 35 36 this.status="Status bar createHead"; 37 //window.location.reload(); 38 } 39 40 Del(head: PharmacyHead) { 41 console.log(this.head); 42 // post request vo prodolzenie 43 44 this.status="Status bar Del"; 45 } 46 47 ChangeDialog(head: PharmacyHead) { 48 console.log(this.head); 23 49 24 50 } 25 51 26 ngOnInit(): void { 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")); 52 Reject() { 53 console.log('Rejected'); 54 // post request vo prodolzenie 33 55 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"));40 56 } 41 57 42 createHead() { 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; 53 } 58 Approve() { 59 console.log('Approved'); 60 // post request vo prodolzenie 54 61 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"));64 }65 66 openEditPharmacyHeadDialog(eHead: IPharmacyHead) {67 let dialogRef = this.dialog.open(EditPharmacyHeadDialogComponent, {68 width: '450px',69 data: eHead70 });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 });90 }91 92 openPharmacyDialog(pharmacy: IPharmacy): void {93 this.dialog.open(PharmacyDialogComponent, {94 width: '450px',95 data: pharmacy96 });97 }98 99 openPharmacyHeadDialog(hd: IPharmacyHead): void {100 this.dialog.open(PharmacyHeadDialogComponent, {101 width: '450px',102 data: hd103 });104 }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 });136 62 } 137 63 -
Farmatiko/ClientApp/src/app/app.module.ts
r63d885e rc406ae5 6 6 import { MaterialModule } from './shared/material.module'; 7 7 import { ReactiveFormsModule } from '@angular/forms'; 8 9 import { DataService } from './shared/data.service';10 8 11 9 import { AppComponent } from './app.component'; … … 18 16 import { DashboardComponent } from './dashboard/dashboard.component'; 19 17 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';27 18 28 19 @NgModule({ … … 35 26 AdminComponent, 36 27 DashboardComponent, 37 LoginComponent, 38 MedicineDialogComponent, 39 PharmacyDialogComponent, 40 FacilityDialogComponent, 41 WorkerDialogComponent, 42 EditPharmacyDialogComponent, 43 EditPharmacyHeadDialogComponent, 44 PharmacyHeadDialogComponent 28 LoginComponent 45 29 ], 46 30 imports: [ … … 54 38 { path: 'admin', component: AdminComponent }, 55 39 { path: 'dashboard', component: DashboardComponent }, 56 { path: 'dashboard/:token', component: DashboardComponent },57 40 { path: 'login', component: LoginComponent } 58 41 ]), … … 61 44 ReactiveFormsModule 62 45 ], 63 providers: [ 64 DataService 65 ], 46 providers: [], 66 47 bootstrap: [AppComponent] 67 48 }) -
Farmatiko/ClientApp/src/app/counter/counter.component.html
r63d885e rc406ae5 8 8 <h2>Здравствени установи</h2> 9 9 <mat-form-field> 10 <input matInput (keyup)="applyFilter Facilities($event.target.value)" placeholder="Пронајди установа">10 <input matInput (keyup)="applyFilter($event.target.value)" placeholder="Пронајди установа"> 11 11 </mat-form-field> 12 12 </div> 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> 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> 35 63 </div> 36 64 </mat-tab> … … 43 71 </mat-form-field> 44 72 </div> 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> 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> 63 98 </div> 64 99 </mat-tab> -
Farmatiko/ClientApp/src/app/counter/counter.component.ts
r63d885e rc406ae5 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'; 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'; 7 8 8 9 @Component({ … … 12 13 }) 13 14 export class CounterComponent implements OnInit { 14 public facilities: IHealthFacilities[] = []; 15 public workers: IHealthcareWorkers[] = []; 16 public filteredFacilities: IHealthFacilities[] = []; 17 public filteredWorkers: IHealthcareWorkers[] = []; 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>(); 18 21 19 constructor(private dataService: DataService, private dialog: MatDialog) { 20 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 { 21 38 } 22 39 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!')); 40 ngAfterViewInit(): void { 41 this.dataSource.paginator = this.paginator; 42 this.dataSource.sort = this.sort; 37 43 } 38 44 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 } 45 applyFilter(filterValue: string) { 46 filterValue = filterValue.trim(); 47 filterValue = filterValue.toLowerCase(); 48 this.dataSource.filter = filterValue; 52 49 } 53 50 54 51 applyFilterWorkers(filterValue: string) { 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 }); 52 filterValue = filterValue.trim(); 53 filterValue = filterValue.toLowerCase(); 54 this.dataSourceWorkers.filter = filterValue; 81 55 } 82 56 } -
Farmatiko/ClientApp/src/app/dashboard/dashboard.component.html
r63d885e rc406ae5 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 ...<p *ngIf="head">{{head.Name}}</p> </li>14 <li>Logged as <!--{{head.Name}}--> </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 [routerLink]="['/']"><mat-icon>directions</mat-icon>Почетна</button> 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> 21 22 </mat-menu> 22 23 </div> … … 29 30 <div class="header"> 30 31 <h2>Мои аптеки</h2> 31 <p *ngIf="! head"><em>Loading...</em></p>32 <p *ngIf="!mypharmacies"><em>Loading...</em></p> 32 33 </div> 33 <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf=" head">34 <table class='table table-striped table-bordered table-sm' cellspacing="0" width="100%" aria-labelledby="tableLabel" *ngIf="true"> 34 35 <thead> 35 36 <tr> … … 42 43 </thead> 43 44 <tbody> 44 <tr *ngFor="let pharmacies of head.Pharmacy">45 <tr *ngFor="let pharmacies of mypharmacies"> 45 46 <td>{{pharmacies.name}}</td> 46 47 <td>{{pharmacies.location}}</td> 47 48 <td>{{pharmacies.address}}</td> 48 49 <td>{{pharmacies.workAllTime}}</td> 49 <td><a (click)=" openEditPharmacyDialog(pharmacies)">Edit</a></td>50 <td><a (click)="works24hrs(pharmacies)">Работи 24/7</a> | <a (click)="doesntWork24hrs(pharmacies)">Не работи 24/7</a></td> 50 51 </tr> 51 52 </tbody> … … 60 61 <input matInput (keyup)="applyFilterPharmacies($event.target.value)" placeholder="Пронајди аптека"> 61 62 </mat-form-field> 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> 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> 82 89 </div> 83 90 </mat-tab> 84 91 </mat-tab-group> 92 93 <div class="statusbar">{{status}}</div> 85 94 86 95 <div class="wrapper"> … … 88 97 <h2>Достапни лекови</h2> 89 98 <mat-form-field> 90 <input matInput (keyup)="applyFilter Medicines($event.target.value)" placeholder="Пронајди лек">99 <input matInput (keyup)="applyFilter($event.target.value)" placeholder="Пронајди лек"> 91 100 </mat-form-field> 92 101 </div> 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> 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> 118 147 </div> -
Farmatiko/ClientApp/src/app/dashboard/dashboard.component.ts
r63d885e rc406ae5 1 import { Component, OnInit} from '@angular/core'; 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'; 2 7 import { MatDialog } from '@angular/material/dialog'; 3 8 import { MatSnackBar, MatSnackBarRef, SimpleSnackBar } from '@angular/material/snack-bar'; 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'; 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'; 10 14 11 15 @Component({ … … 15 19 }) 16 20 export class DashboardComponent implements OnInit { 17 public pharmacies: IPharmacy[] = []; 18 public head: IPharmacyHead; 19 public filteredPharmacies: IPharmacy[] = []; 20 public filteredMedicines: IMedicine[] = []; 21 public request: IPharmacyHeadRequest; 22 public token: string; 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>(); 23 31 24 constructor(private dataService: DataService, private dialog: MatDialog, private snackBar: MatSnackBar, private router: Router, private route: ActivatedRoute) { 32 @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; 33 @ViewChild(MatSort) sort: MatSort; 25 34 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)); 26 50 } 27 51 28 52 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 }62 53 } 63 54 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!')); 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; 77 60 } 78 61 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 } 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; 92 101 } 93 102 94 103 applyFilterPharmacies(filterValue: string) { 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 } 104 filterValue = filterValue.trim(); 105 filterValue = filterValue.toLowerCase(); 106 this.dataSourcePharmacies.filter = filterValue; 107 107 } 108 108 109 openPharmacyDialog(pharmacy: IPharmacy): void {110 this.dialog.open(PharmacyDialogComponent, {111 width: '450px',112 data: pharmacy109 test(): void { 110 console.log('Snackbar works!'); 111 this.openSnackBar("Are you sure?", "Yes").onAction().subscribe(() => { 112 this.router.navigate(['/']); 113 113 }); 114 114 } 115 115 116 openEditPharmacyDialog(pharmacy: IPharmacy): void { 117 let dialogRef = this.dialog.open(EditPharmacyDialogComponent, { 118 width: '450px', 119 data: pharmacy 116 openDialog():void { 117 let dialogRef = this.dialog.open(HomeComponent, { 118 width: '70%' 120 119 }); 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 120 dialogRef.afterClosed().subscribe(result => { 121 if(result) { 122 this.openSnackBar("Success", "OK"); 123 } 146 124 }); 147 125 } 148 126 149 127 openSnackBar(message: string, action: string) : MatSnackBarRef<SimpleSnackBar> { 150 return this. snackBar.open(message, action, {151 duration: 5000,128 return this._snackBar.open(message, action, { 129 duration: 10000, 152 130 }); 153 131 } -
Farmatiko/ClientApp/src/app/home/home.component.html
r63d885e rc406ae5 7 7 <h2>Лекови</h2> 8 8 <mat-form-field> 9 <input matInput (keyup)="applyFilter Medicines($event.target.value)" placeholder="Пронајди лек">9 <input matInput (keyup)="applyFilter($event.target.value)" placeholder="Пронајди лек"> 10 10 </mat-form-field> 11 11 </div> 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> 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> 36 52 </div> 37 53 </mat-tab> … … 44 60 </mat-form-field> 45 61 </div> 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> 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> 64 87 </div> 65 88 </mat-tab> -
Farmatiko/ClientApp/src/app/home/home.component.ts
r63d885e rc406ae5 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'; 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'; 7 8 8 9 @Component({ … … 12 13 }) 13 14 export class HomeComponent implements OnInit { 14 public medicines: IMedicine[] = []; 15 public pharmacies: IPharmacy[] = []; 16 public filteredMedicines: IMedicine[] = []; 17 public filteredPharmacies: IPharmacy[] = []; 15 public medicines: Medicine[]; 16 public pharmacies: Pharmacy[]; 17 displayedColumns = ['Име','Јачина','Форма', 'Начин на издавање', 'Производител', 'Цена', 'Пакување']; 18 displayedColumnsPharmacies = ['Име','Локација','Адреса', 'Работи 27/7?']; 19 dataSource = new MatTableDataSource<Medicine>(); 20 dataSourcePharmacies = new MatTableDataSource<Pharmacy>(); 18 21 19 constructor(private dataService: DataService, private dialog: MatDialog) { 22 @ViewChild(MatPaginator, {static: true}) paginator: MatPaginator; 23 @ViewChild(MatSort) sort: MatSort; 20 24 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 { 21 38 } 22 39 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')); 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; 37 45 } 38 46 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 } 47 applyFilter(filterValue: string) { 48 filterValue = filterValue.trim(); 49 filterValue = filterValue.toLowerCase(); 50 this.dataSource.filter = filterValue; 52 51 } 53 52 54 53 applyFilterPharmacies(filterValue: string) { 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 }); 54 filterValue = filterValue.trim(); 55 filterValue = filterValue.toLowerCase(); 56 this.dataSourcePharmacies.filter = filterValue; 81 57 } 82 58 } -
Farmatiko/ClientApp/src/app/korona/korona.component.html
r63d885e rc406ae5 12 12 <div class="col"> 13 13 <div class="counter"> 14 <i class="fa fa-code fa-2x" *ngIf="korona">{{korona .totalMK}}</i>14 <i class="fa fa-code fa-2x" *ngIf="korona">{{korona[0].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 .activeMK}}</i>21 <i class="fa fa-coffee fa-2x" *ngIf="korona">{{korona[0].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 .deathsMK}}</i>28 <i class="fa fa-lightbulb-o fa-2x" *ngIf="korona">{{korona[0].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 .newMK}}</i>35 <i class="fa fa-bug fa-2x" *ngIf="korona">{{korona[0].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 .totalGlobal}}</i>44 <i class="fa fa-bug fa-2x" *ngIf="korona">{{korona[0].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 .activeGlobal}}</i>51 <i class="fa fa-bug fa-2x" *ngIf="korona">{{korona[0].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 .deathsGlobal}}</i>58 <i class="fa fa-bug fa-2x" *ngIf="korona">{{korona[0].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
r63d885e rc406ae5 1 import { Component, OnInit } from '@angular/core'; 2 import { DataService } from '../shared/data.service'; 3 import { IPandemic } from '../shared/interfaces'; 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'; 4 5 5 6 @Component({ … … 9 10 }) 10 11 export class KoronaComponent implements OnInit { 11 public korona: IPandemic;12 public korona: Pandemic[]; 12 13 13 constructor(private dataService: DataService) { 14 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)); 15 19 } 16 20 17 21 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'));24 22 } 25 23 -
Farmatiko/ClientApp/src/app/login/login.component.html
r63d885e rc406ae5 6 6 <div class="example-container"> 7 7 <mat-form-field> 8 <input matInput placeholder="Email" [(ngModel)]="this.email"formControlName="email">8 <input matInput placeholder="Email" formControlName="email"> 9 9 </mat-form-field> 10 10 11 11 <mat-form-field> 12 <input matInput type="password" placeholder="Password" [(ngModel)]="this.passwd"formControlName="password">12 <input matInput type="password" placeholder="Password" formControlName="password"> 13 13 </mat-form-field> 14 14 15 <button [disabled]="!loginForm.valid" mat-raised-button color="primary" (click)="loginPharmacyHead()" mat-button>Најави се</button>15 <button [disabled]="!loginForm.valid" mat-raised-button color="primary" [routerLink]="['/dashboard']" mat-button>Најави се</button> 16 16 </div> 17 17 </form> -
Farmatiko/ClientApp/src/app/login/login.component.ts
r63d885e rc406ae5 1 1 import { Component, OnInit } from '@angular/core'; 2 import { FormGroup, FormControl, Validators } from '@angular/forms'; 3 import { Router, ActivatedRoute } from '@angular/router'; 4 import { DataService } from '../shared/data.service'; 2 import { FormBuilder, FormGroup, FormControl, Validators, FormArray } from '@angular/forms'; 5 3 6 4 @Component({ … … 11 9 export class LoginComponent implements OnInit { 12 10 loginForm: FormGroup; 13 email: string;14 passwd: string;15 errorMessage: string;16 11 17 constructor( private dataService: DataService,private router: Router, private route: ActivatedRoute) {12 constructor() { 18 13 this.loginForm = new FormGroup({ 19 14 email: new FormControl('', [Validators.required, Validators.email]), … … 25 20 } 26 21 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 }40 22 }
Note:
See TracChangeset
for help on using the changeset viewer.