import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; import { TournamentTicketsService } from 'src/app/shared/services/tournament.tickets.service'; import { TournamentTicketInterest, Tournament } from 'tournee.businesslogic'; @Component({ selector: 'app-selectable-listing-ticket-interest', templateUrl: './selectable-listing-ticket-interest.component.html', styleUrls: ['./selectable-listing-ticket-interest.component.css'], providers: [TournamentTicketsService] }) export class SelectableListingTicketInterestComponent implements OnInit { @Output() OnActioned = new EventEmitter(); @Input() Interest: TournamentTicketInterest; @Input() Tournament: Tournament; private _currently_expanded: boolean = false; private _currently_assigning: TournamentTicketInterest; NumberToAssign: number; AmountPaid: number; DisableInput: boolean = false; MinimumToPay() { if (!this.NumberToAssign) { return this.Interest.tournament_ticket_slice.slice_price; } return this.Interest.tournament_ticket_slice.slice_price * this.NumberToAssign; } MaximumToPay() { if (!this.NumberToAssign) { return this.Interest.tournament_ticket_slice.full_price; } return this.Interest.tournament_ticket_slice.full_price * this.NumberToAssign; } IsDivisibleEqually() { if (!this.AmountPaid && !this.NumberToAssign) { return true; } return (this.AmountPaid * 100) % this.NumberToAssign == 0; } constructor(private _tickets: TournamentTicketsService) { } ngOnInit() { } Expanded() { return this._currently_expanded; } Toggle() { this._currently_expanded = !this._currently_expanded; } begin_assign(interest: TournamentTicketInterest) { this._currently_assigning = interest; if (interest.tournament_ticket_slice.maximum_per_attendee == 1) { this.NumberToAssign = interest.tournament_ticket_slice.maximum_per_attendee; this.DisableInput = true; } } cancel_assign() { this._currently_assigning = null; this.NumberToAssign = null; this.DisableInput = false; } is_assigning(interest: TournamentTicketInterest) { return this._currently_assigning && this._currently_assigning.id == interest.id && this._currently_assigning.attendee_id == interest.attendee_id; } assign(interest: TournamentTicketInterest) { if (!this.IsDivisibleEqually() || this.AmountPaid < this.MinimumToPay() || this.AmountPaid > this.MaximumToPay()) { return; } this._tickets.assign_interest(interest, this.NumberToAssign, this.AmountPaid) .then(() => { this.OnActioned.emit(); }) .catch((err) => { console.log(err); }); } }