feat(pilot): add next TOs to a court

This commit is contained in:
2026-06-05 15:41:42 +02:00
parent 63737e46eb
commit 60f12cc333
4 changed files with 76 additions and 3 deletions
@@ -152,4 +152,10 @@ export class WaitingServiceJudgesService {
} }
}); });
} }
async getCurrentUmpire(): Promise<Umpire | undefined> {
const item = await db.waitingServiceJudges.where('order').equals(1).first();
return item ? db.umpires.get(item.serviceJudgeId) : undefined;
}
} }
@@ -152,4 +152,10 @@ export class WaitingUmpiresService {
} }
}); });
} }
async getCurrentUmpire(): Promise<Umpire | undefined> {
const item = await db.waitingUmpires.where('order').equals(1).first();
return item ? db.umpires.get(item.umpireId) : undefined;
}
} }
+15 -1
View File
@@ -80,15 +80,29 @@
<ion-col size="2" sizeLg="1"> <ion-col size="2" sizeLg="1">
<ion-list> <ion-list>
<ion-item lines="none"> <ion-item lines="none">
@if (umpireByCourt().get($index + 1) &&
serviceJudgeByCourt().get($index + 1)) {
<ion-button <ion-button
[color]="'danger'" [color]="'danger'"
[disabled]="!umpireByCourt().get($index + 1) || !serviceJudgeByCourt().get($index + 1)"
(click)="showRemoveConfirmation($index + 1)"> (click)="showRemoveConfirmation($index + 1)">
<ion-icon <ion-icon
slot="icon-only" slot="icon-only"
size="large" size="large"
name="exit-outline"></ion-icon> name="exit-outline"></ion-icon>
</ion-button> </ion-button>
} @else if (!umpireByCourt().get($index + 1) &&
!serviceJudgeByCourt().get($index + 1) && waitingUmpires().length &&
waitingServiceJudges().length) {
<ion-button
[color]="'success'"
[disabled]=""
(click)="showAddConfirmation($index + 1)">
<ion-icon
slot="icon-only"
size="large"
name="enter-outline"></ion-icon>
</ion-button>
}
</ion-item> </ion-item>
</ion-list> </ion-list>
</ion-col> </ion-col>
+49 -2
View File
@@ -31,7 +31,7 @@ import { CommonModule } from '@angular/common';
import { CourtUmpireService } from '../services/court.umpire.service'; import { CourtUmpireService } from '../services/court.umpire.service';
import { CourtServiceJudgeService } from '../services/court.service.judge.service'; import { CourtServiceJudgeService } from '../services/court.service.judge.service';
import { addIcons } from 'ionicons'; import { addIcons } from 'ionicons';
import { exitOutline } from 'ionicons/icons'; import { enterOutline, exitOutline } from 'ionicons/icons';
@Component({ @Component({
selector: 'app-tab1', selector: 'app-tab1',
@@ -61,7 +61,7 @@ import { exitOutline } from 'ionicons/icons';
}) })
export class Tab1Page { export class Tab1Page {
constructor() { constructor() {
addIcons({ exitOutline }); addIcons({ exitOutline, enterOutline });
} }
readonly settingsService = inject(SettingsService); readonly settingsService = inject(SettingsService);
@@ -417,4 +417,51 @@ export class Tab1Page {
await this.waitingUmpireService.add(serviceJudge.id); await this.waitingUmpireService.add(serviceJudge.id);
await this.waitingServiceJudgeService.add(umpire.id); await this.waitingServiceJudgeService.add(umpire.id);
} }
public async showAddConfirmation(courtNo: number) {
const umpire = await this.waitingUmpireService.getCurrentUmpire();
const serviceJudge =
await this.waitingServiceJudgeService.getCurrentUmpire();
if (typeof umpire === 'undefined' || typeof serviceJudge === 'undefined') {
return;
}
const alert = await this.alertController.create({
header: `Pálya ${courtNo}`,
cssClass: 'wide',
subHeader: 'Biztos pályára küldöd őket?',
message: `${this.fullnamePipe.transform(umpire)} - ${this.fullnamePipe.transform(serviceJudge)}`,
buttons: [
{
text: 'Nem',
role: 'cancel'
},
{
text: 'Igen',
role: 'confirm',
handler: () => {
this.addUmpiresToCourt(courtNo, umpire, serviceJudge);
}
}
]
});
await alert.present();
}
private async addUmpiresToCourt(
courtNo: number,
umpire: Umpire,
serviceJudge: Umpire
) {
await this.courtUmpireService.save({ courtNo, umpireId: umpire.id });
await this.courtServiceJudgeService.save({
courtNo,
umpireId: serviceJudge.id
});
await this.waitingUmpireService.removeByUmpireId(umpire.id);
await this.waitingServiceJudgeService.removeByUmpireId(serviceJudge.id);
}
} }