Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Farmatiko/ClientApp/src/app/dashboard/dashboard.component.ts

    rde18858 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';
     1import { Component, OnInit} from '@angular/core';
    72import { MatDialog } from '@angular/material/dialog';
    83import { 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';
     4import { IPharmacy, IMedicine, IPharmacyHead, IPharmacyHeadRequest } from '../shared/interfaces';
     5import { DataService } from '../shared/data.service';
     6import { PharmacyDialogComponent } from '../dialogs/pharmacy-dialog/pharmacy-dialog.component';
     7import { EditPharmacyDialogComponent } from '../dialogs/edit-pharmacy-dialog/edit-pharmacy-dialog.component';
     8import { MedicineDialogComponent } from '../dialogs/medicine-dialog/medicine-dialog.component';
     9import { ActivatedRoute, Router } from '@angular/router';
    1410
    1511@Component({
     
    1915})
    2016export 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;
    3123
    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) {
    3425
    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));
    5026  }
    5127
    5228  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    }
    5362  }
    5463
    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!'));
    6077  }
    6178
    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    }
    10192  }
    10293 
    10394  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    }   
    107107  }
    108108
    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
    113113    });
    114114  }
    115115
    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
    119120    });
    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
    124146    });
    125147  }
    126148
    127149  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,
    130152    });
    131153  }
Note: See TracChangeset for help on using the changeset viewer.