manager-panel.component.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import {Component} from '@angular/core';
  2. import {UserService} from "../services/user.service";
  3. import {ReservationService} from "../services/reservation.service";
  4. import {BoatService} from "../services/boat.service";
  5. @Component({
  6. selector: 'app-manager-panel',
  7. templateUrl: './manager-panel.component.html',
  8. styleUrls: ['./manager-panel.component.css']
  9. })
  10. export class ManagerPanelComponent {
  11. reservations_info: any[] = [];
  12. compareFn = (a: any, b: any): number => {
  13. // Sort by date
  14. const dateComparison = a.date.localeCompare(b.date);
  15. if (dateComparison !== 0) {
  16. return dateComparison;
  17. }
  18. // Sort by hour
  19. return a.startHour - b.startHour;
  20. };
  21. isANumber(value: any): boolean {
  22. return typeof value === 'number'
  23. }
  24. constructor(private userService: UserService,
  25. private reservationService: ReservationService,
  26. private boatService: BoatService) {
  27. this.reservationService.getReservations().subscribe(
  28. reservations => {
  29. this.reservations_info = reservations.map(r => {
  30. r.date = new Date(r.date).toISOString().split("T")[0]
  31. return r;
  32. });
  33. this.boatService.getBoats().subscribe(
  34. boats => {
  35. this.reservations_info.map(r => {
  36. r.boatId = boats.find(b => b.id == r.boatId)!.name
  37. })
  38. this.reservations_info.sort(this.compareFn)
  39. }
  40. )
  41. this.userService.getAllUsers().subscribe(
  42. users => {
  43. this.reservations_info.map(r => {
  44. if (r.user == undefined) {
  45. r.userId = '*deleted*'
  46. } else {
  47. r.userId = r.user.username
  48. }
  49. })
  50. }
  51. )
  52. })
  53. }
  54. cancelReservation(id: number) {
  55. this.reservationService.cancelReservation(id)
  56. this.reservations_info.find(r => r.bill.id === id).bill.status = "Cancelled"
  57. }
  58. confirmReservation(id: number) {
  59. this.reservationService.confirmReservation(id)
  60. this.reservations_info.find(r => r.bill.id === id).bill.status = "Confirmed"
  61. }
  62. }