import { Component, OnInit, Output, EventEmitter, ViewChild } from '@angular/core'; import { UtilityService } from 'src/app/shared/services/utility.service'; import { TournamentService } from 'src/app/shared/services/tournament.service'; import { TournamentSummary, User, UserDiscount, Discount, TournamentFilter } from 'tournee.businesslogic'; import { SystemAdminService } from 'src/app/shared/services/systemadmin.service'; import { FeedbackPanelComponent } from 'src/app/shared/components/feedback-panel/feedback-panel.component'; @Component({ selector: 'app-system-admin-user-detail', templateUrl: './system-admin-user-detail.component.html', styleUrls: ['./system-admin-user-detail.component.css'], providers: [TournamentService, SystemAdminService] }) export class SystemAdminUserDetailComponent implements OnInit { @ViewChild('FeedbackPanel') FeedbackPanel:FeedbackPanelComponent; @Output() OnClose = new EventEmitter(); EditModel: User; Tournaments: Array = []; SelectedTournaments: Array = []; UserDiscount: UserDiscount; UserDiscounts: Array = []; Discounts: Array = []; constructor(public utility: UtilityService, private _tournaments: TournamentService, private _sysadmin: SystemAdminService) { } ngOnInit() { this._sysadmin.getDiscounts() .then((result) => { this.Discounts = result.result.filter((d) => { return !d.is_open; }).map((d) => { return new Discount(d); }) }) .catch((err) => { console.log(err); }); } init(selected: User) { this.EditModel = selected; this.UserDiscount = UserDiscount.create(this.EditModel); this._tournaments.get_summary(TournamentFilter.create().set('creator_id', this.EditModel.id).set('is_active', null).set('include_future_sale', true)) .then((result) => { this.Tournaments = result.result.map((t) => { return new TournamentSummary(t); }); return this._sysadmin.getUserDiscounts(this.EditModel.id); }) .then((result) => { this.UserDiscounts = result.result.map((d) => { return new UserDiscount(d); }); }) .catch((err) => { console.log(err); }); } close() { this.EditModel = null; this.OnClose.emit(); } border_for_this_tournament(tournament: TournamentSummary) { if (this.UserDiscount.tournament_discounted(tournament.id)) { return "border-success"; } else { return "border-dark"; } } save_discount() { this._sysadmin.saveUserDiscount(this.UserDiscount) .then((result) => { this.UserDiscounts = result.result.map((d) => { return new UserDiscount(d); }); this.UserDiscount = UserDiscount.create(this.EditModel); this.FeedbackPanel.triggerSuccess("Discount saved successfully"); }) .catch((err) => { this.FeedbackPanel.triggerError(err); }); } cancel() { this.UserDiscount = UserDiscount.create(this.EditModel); } beginEdit(discount: UserDiscount) { this.UserDiscount = new UserDiscount(JSON.parse(JSON.stringify(discount))); } delete_user_discount(discount: UserDiscount) { this._sysadmin.deleteUserDiscount(discount) .then((result) => { this.UserDiscounts = result.result.map((d) => { return new UserDiscount(d); }); this.UserDiscount = UserDiscount.create(this.EditModel); this.FeedbackPanel.triggerSuccess("Discount saved successfully"); }) .catch((err) => { this.FeedbackPanel.triggerError(err); }); } validUntilDateChanged($event) { if ($event && this.UserDiscount) { this.UserDiscount.valid_until = $event; } } delete() { this._sysadmin.deleteUser(this.EditModel) .then(() => { this.close(); }) .catch((err) => { console.log(err); }); } }