import {Component, OnInit} from '@angular/core'; import {User} from '../../models/User'; import { UsersService } from '../../services/users.service'; import { Need } from '../../models/Need'; import { NeedListComponent } from '../need-list/need-list.component'; import { Router } from '@angular/router'; import { CupboardService } from '../../services/cupboard.service'; @Component({ selector: 'app-funding-basket', standalone: false, templateUrl: './funding-basket.component.html', styleUrl: './funding-basket.component.css' }) export class FundingBasketComponent implements OnInit { user!: User; needs: Need[] = []; basket: Need[] = []; needCount = 0; need_quantity: {[key: number]: number} = {}; constructor( private router: Router, private cupboardService: CupboardService, private usersService: UsersService ) {} ngOnInit(): void { if (!this.usersService.getCurrentUser()) { this.router.navigate(['/login'], {queryParams: {redir: this.router.url}}); return; } this.cupboardService.getNeeds().subscribe(n => this.needs = n) const currentUser = this.usersService.getCurrentUser(); if (currentUser) { this.user = currentUser; } this.getBasketNeeds(); } getBasketNeeds(): void { if (this.user && this.user.basket) { this.user.basket.forEach(need => { // if (this.isInBasket(need)) { // this.basket.push(need); // } }); } } isInBasket(need: Need): boolean { return this.basket.includes(need) } addNeed(need: Need, quantity: number = 1): void { if (this.user && !this.isInBasket(need)) { this.basket.push(need); this.need_quantity[need.id] = quantity; } if (this.isInBasket(need)) { this.need_quantity[need.id] += quantity; } this.needCount++; } removeNeed(need: Need, quantity: number = 1): void { if (this.user && this.isInBasket(need)) { this.need_quantity[need.id] -= quantity; if (this.need_quantity[need.id] === 0) { this.basket = this.basket.filter(n => need.id !== n.id); } this.needCount--; } } removeAllNeeds(): void { this.basket.forEach(need => { this.need_quantity = []; }); this.basket = []; this.needCount = 0; } isBasketEmpty(): boolean { return this.needCount === 0; } checkout(): void { this.removeAllNeeds(); } }