import { Component, OnInit, ViewChild } from '@angular/core'; import { PriceService } from 'src/app/shared/services/price.service'; import { LookupsService } from 'src/app/shared/services/lookups.service'; import { UtilityService } from 'src/app/shared/services/utility.service'; import { FeedbackPanelComponent } from 'src/app/shared/components/feedback-panel/feedback-panel.component'; import { TournamentPriceBand, Currency } from 'tournee.businesslogic'; @Component({ selector: 'app-system-admin-prices', templateUrl: './system-admin-prices.component.html', styleUrls: ['./system-admin-prices.component.css'], providers: [PriceService] }) export class SystemAdminPricesComponent implements OnInit { @ViewChild('FeedbackPanel') FeedbackPanel:FeedbackPanelComponent; isWorking: boolean = false; Expanded: boolean = false; Prices: Array = []; Currencies: Array = []; EditModel: TournamentPriceBand = new TournamentPriceBand(); constructor(private _price: PriceService, private _looksups: LookupsService, public utility: UtilityService) { } ngOnInit() { this.load() } toggle() { this.Expanded = !this.Expanded; } load() { this.isWorking = true; let promises = [ this.loadCurrencies(), this.loadPrices() ]; Promise.all(promises) .then(() => { this.isWorking = false; }) .catch((err) => { console.log(err); this.isWorking = false; }); } loadCurrencies() { return new Promise((resolve, reject) => { this._looksups.get('currency') .then((result) => { this.Currencies = result.result.map((c) => { return new Currency(c); }); resolve(); }) .catch(reject); }) } loadPrices() { return new Promise((resolve, reject) => { this._price.get() .then((result) => { this.Prices = result.result.map((o) => { return new TournamentPriceBand(o); }); resolve(); }) .catch(reject); }); } save() { if (this.isWorking) { return; } this.isWorking = true; this.FeedbackPanel.reset(); if (this.EditModel.id) { this.edit(); } else { this.add(); } } add() { this._price.add(this.EditModel) .then((result) => { this.Prices = result.result.map((o) => { return new TournamentPriceBand(o); }); this.reset(); this.isWorking = false; }) .catch((err) => { this.isWorking = false; this.FeedbackPanel.triggerError(err); }); } edit() { this._price.update(this.EditModel) .then((result) => { this.Prices = result.result.map((o) => { return new TournamentPriceBand(o); }); this.reset(); this.isWorking = false; }) .catch((err) => { this.isWorking = false; this.FeedbackPanel.triggerError(err); }); } beginEdit(model) { this.EditModel.title = model.title; this.EditModel.min_attendance = model.min_attendance; this.EditModel.max_attendance = model.max_attendance; this.EditModel.price = model.price; this.EditModel.id = model.id; this.EditModel.currency = model.currency; } reset() { this.EditModel = new TournamentPriceBand(); } }