jpe-controle/FencerJudgeFront/src/app/components/match/matches-add/matches-add.component.ts
ExostFlash cf2274d49c modif
2025-06-02 23:27:02 +02:00

97 lines
2.6 KiB
TypeScript

import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { FormsModule } from '@angular/forms';
import { MatchesService } from '@services/matches/matches.service';
import { MatchState } from '@interfaces/matches';
import { PlayerService } from '@services/player/player.service';
import { RefereeService } from '@services/referee/referee.service';
import { Referee, RefereeLevel } from '@interfaces/referee';
@Component({
selector: 'app-matches-add',
standalone: false,
templateUrl: './matches-add.component.html',
styleUrl: './matches-add.component.css',
})
export class MatchesAddComponent {
formData = {
player1Id: 0,
player1FirstName: '',
player1Name: '',
player1Club: '',
player2Id: 0,
player2FirstName: '',
player2Name: '',
player2Club: '',
refereeId: 0,
refereeFirstName: '',
refereeName: '',
refereelevel: 0,
city: '',
country: '',
weapon: '',
date: '',
};
constructor(
private matchService: MatchesService,
private playerService: PlayerService,
private refereeService: RefereeService,
private router: Router
) {}
onSubmit(): void {
this.playerService
.getOrCreateByName(
this.formData.player1FirstName,
this.formData.player1Name,
this.formData.player1Club
)
.subscribe((player1) => {
this.formData['player1Id'] = player1.id;
this.playerService
.getOrCreateByName(
this.formData.player2FirstName,
this.formData.player2Name,
this.formData.player2Club
)
.subscribe((player2) => {
this.formData['player2Id'] = player2.id;
this.refereeService
.getOrCreateByName(
this.formData.refereeFirstName,
this.formData.refereeName,
this.formData.refereelevel
)
.subscribe((referee) => {
this.formData['refereeId'] = referee.id;
const matchPayload = {
refereeID: referee.id,
player1ID: player1.id,
score1: 0,
player2ID: player2.id,
score2: 0,
country: this.formData.country,
city: this.formData.city,
weapon: this.formData.weapon,
date: new Date(this.formData.date),
state: MatchState.NOT_STARTED,
};
this.matchService.create(matchPayload).subscribe(() => {
this.router.navigate(['/matches']);
});
});
});
});
}
}