From cfef8e1ec3cf85f1185a2d0a101db3906a0203f6 Mon Sep 17 00:00:00 2001 From: cskiwi Date: Wed, 28 Aug 2024 22:26:29 +0300 Subject: [PATCH 1/3] fix: new meta tag for apple --- apps/badman/src/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/badman/src/index.html b/apps/badman/src/index.html index 447bb907d..29909dd3f 100644 --- a/apps/badman/src/index.html +++ b/apps/badman/src/index.html @@ -9,7 +9,7 @@ - + Date: Wed, 28 Aug 2024 22:56:16 +0300 Subject: [PATCH 2/3] feat: allow setting of multiple dates for change encounter --- .../20240828181837-second change date.js | 111 ++++++++++++++++++ .../competition/event-competition.model.ts | 12 +- .../competition/encounter-change.resolver.ts | 22 ++-- ...open-close-change-encounter.component.html | 51 +++++++- ...t-open-close-change-encounter.component.ts | 28 +++-- .../roles/edit-role/edit-role.component.html | 8 +- .../src/shell/shell/shell.component.html | 14 +-- .../src/shell/shell/shell.component.ts | 64 +++++----- .../models/events/competition/event.model.ts | 29 ++++- .../src/change-encounter.module.ts | 6 +- .../comments/comments.component.html | 9 +- .../components/comments/comments.component.ts | 6 + .../src/guards/change-encounter.guard.ts | 68 ----------- .../list-encounters.component.ts | 11 +- .../show-requests.component.html | 78 ++++++------ .../show-requests/show-requests.component.ts | 32 +++-- .../event/src/pages/detail/detail.page.ts | 18 ++- .../event/src/resolvers/event.resolver.ts | 6 +- 18 files changed, 366 insertions(+), 207 deletions(-) create mode 100644 database/migrations/20240828181837-second change date.js delete mode 100644 libs/frontend/pages/competition/change-encounter/src/guards/change-encounter.guard.ts diff --git a/database/migrations/20240828181837-second change date.js b/database/migrations/20240828181837-second change date.js new file mode 100644 index 000000000..e98c43b85 --- /dev/null +++ b/database/migrations/20240828181837-second change date.js @@ -0,0 +1,111 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +'use strict'; + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + up: async (queryInterface, Sequelize) => { + return queryInterface.sequelize.transaction(async (t) => { + try { + await queryInterface.renameColumn( + { + schema: 'event', + tableName: 'EventCompetitions', + }, + 'changeCloseDate', + 'changeCloseDatePeriod1', + { transaction: t }, + ); + + await queryInterface.renameColumn( + { + schema: 'event', + tableName: 'EventCompetitions', + }, + 'changeCloseRequestDate', + 'changeCloseRequestDatePeriod1', + { transaction: t }, + ); + + await queryInterface.addColumn( + { + schema: 'event', + tableName: 'EventCompetitions', + }, + 'changeCloseDatePeriod2', + { + type: Sequelize.DATE, + defaultValue: null, + allowNull: true, + }, + { transaction: t }, + ); + + await queryInterface.addColumn( + { + schema: 'event', + tableName: 'EventCompetitions', + }, + 'changeCloseRequestDatePeriod2', + { + type: Sequelize.DATE, + defaultValue: null, + allowNull: true, + }, + { transaction: t }, + ); + + + } catch (err) { + console.error('We errored with', err?.message ?? err); + t.rollback(); + } + }); + }, + + down: async (queryInterface) => { + return queryInterface.sequelize.transaction(async (t) => { + try { + await queryInterface.renameColumn( + { + schema: 'event', + tableName: 'EventCompetitions', + }, + 'changeCloseDatePeriod1', + 'changeCloseDate', + { transaction: t }, + ); + + await queryInterface.renameColumn( + { + schema: 'event', + tableName: 'EventCompetitions', + }, + 'changeCloseRequestDatePeriod1', + 'changeCloseRequestDate', + { transaction: t }, + ); + + await queryInterface.removeColumn( + { + schema: 'event', + tableName: 'EventCompetitions', + }, + 'changeCloseDatePeriod2', + { transaction: t }, + ); + + await queryInterface.removeColumn( + { + schema: 'event', + tableName: 'EventCompetitions', + }, + 'changeCloseRequestDatePeriod2', + { transaction: t }, + ); + } catch (err) { + console.error('We errored with', err); + t.rollback(); + } + }); + }, +}; diff --git a/libs/backend/database/src/models/event/competition/event-competition.model.ts b/libs/backend/database/src/models/event/competition/event-competition.model.ts index 6b110a4c8..70e8c864e 100644 --- a/libs/backend/database/src/models/event/competition/event-competition.model.ts +++ b/libs/backend/database/src/models/event/competition/event-competition.model.ts @@ -91,11 +91,19 @@ export class EventCompetition extends Model< @Field(() => Date, { nullable: true }) @Column(DataType.DATE) - changeCloseDate?: Date; + changeCloseDatePeriod1?: Date; @Field(() => Date, { nullable: true }) @Column(DataType.DATE) - changeCloseRequestDate?: Date; + changeCloseDatePeriod2?: Date; + + @Field(() => Date, { nullable: true }) + @Column(DataType.DATE) + changeCloseRequestDatePeriod1?: Date; + + @Field(() => Date, { nullable: true }) + @Column(DataType.DATE) + changeCloseRequestDatePeriod2?: Date; @Field(() => EventCompetitionMetaType, { nullable: true }) @Column({ diff --git a/libs/backend/graphql/src/resolvers/event/competition/encounter-change.resolver.ts b/libs/backend/graphql/src/resolvers/event/competition/encounter-change.resolver.ts index 3365ac043..743dfdf8e 100644 --- a/libs/backend/graphql/src/resolvers/event/competition/encounter-change.resolver.ts +++ b/libs/backend/graphql/src/resolvers/event/competition/encounter-change.resolver.ts @@ -31,7 +31,7 @@ import { User } from '@badman/backend-authorization'; import { EncounterValidationService } from '@badman/backend-change-encounter'; import { NotificationService } from '@badman/backend-notifications'; -import { LoggingAction } from '@badman/utils'; +import { getSeason, LoggingAction } from '@badman/utils'; import { InjectQueue } from '@nestjs/bull'; import { Queue } from 'bull'; import { Transaction } from 'sequelize'; @@ -219,23 +219,29 @@ export class EncounterChangeCompetitionResolver { include: [ { model: EventCompetition, - attributes: ['id', 'changeCloseRequestDate'], + attributes: [ + 'id', + 'season', + 'changeCloseRequestDatePeriod1', + 'changeCloseRequestDatePeriod2', + ], }, ], }, ], + logging: (msg) => this.logger.debug(msg), }); // can request new dates in timezone europe/brussels + const event = draw?.subEventCompetition?.eventCompetition; + const closedDate = + encounter.date?.getFullYear() === event?.season + ? event?.changeCloseRequestDatePeriod1 + : event?.changeCloseRequestDatePeriod2; const canRequestNewDates = moment .tz('europe/brussels') - .isBefore( - moment.tz( - draw?.subEventCompetition?.eventCompetition?.changeCloseRequestDate, - 'europe/brussels', - ), - ); + .isBefore(moment.tz(closedDate, 'europe/brussels')); await this.changeOrUpdate( encounterChange, diff --git a/libs/frontend/components/src/events/set-open-close-change-encounter/set-open-close-change-encounter.component.html b/libs/frontend/components/src/events/set-open-close-change-encounter/set-open-close-change-encounter.component.html index 147022d3d..66bca7b46 100644 --- a/libs/frontend/components/src/events/set-open-close-change-encounter/set-open-close-change-encounter.component.html +++ b/libs/frontend/components/src/events/set-open-close-change-encounter/set-open-close-change-encounter.component.html @@ -19,7 +19,7 @@

} - @if (requestDateControl) { + @if (changeCloseRequestDatePeriod1Control) {
{{ 'all.competition.open-close.close-new-requets' | translate }} @@ -31,7 +31,7 @@

> @@ -39,7 +39,7 @@

} - @if (closeControl) { + @if (changeCloseDatePeriod1Control) {
{{ 'all.competition.open-close.close-accept-requests' | translate }} @@ -51,7 +51,50 @@

> + + +

+ } + +
+ + @if (changeCloseRequestDatePeriod2Control) { +
+ + {{ 'all.competition.open-close.close-new-requets' | translate }} + + + + +
+ } + @if (changeCloseDatePeriod2Control) { +
+ + {{ 'all.competition.open-close.close-accept-requests' | translate }} + + diff --git a/libs/frontend/components/src/events/set-open-close-change-encounter/set-open-close-change-encounter.component.ts b/libs/frontend/components/src/events/set-open-close-change-encounter/set-open-close-change-encounter.component.ts index 2e43859a3..566732bbe 100644 --- a/libs/frontend/components/src/events/set-open-close-change-encounter/set-open-close-change-encounter.component.ts +++ b/libs/frontend/components/src/events/set-open-close-change-encounter/set-open-close-change-encounter.component.ts @@ -20,7 +20,7 @@ import { TranslateModule } from '@ngx-translate/core'; MatDialogModule, MatInputModule, MtxDatetimepickerModule, - MtxMomentDatetimeModule + MtxMomentDatetimeModule, ], templateUrl: './set-open-close-change-encounter.component.html', styleUrls: ['./set-open-close-change-encounter.component.scss'], @@ -30,22 +30,34 @@ export class OpenCloseChangeEncounterDateDialogComponent implements OnInit { public dialogRef = inject>( MatDialogRef, ); - public data = inject<{ openDate: Date; closeDate: Date; requestDate: Date }>(MAT_DIALOG_DATA); + public data = inject<{ + openDate: Date; + changeCloseDatePeriod1: Date; + changeCloseDatePeriod2: Date; + changeCloseRequestDatePeriod1: Date; + changeCloseRequestDatePeriod2: Date; + }>(MAT_DIALOG_DATA); openControl?: FormControl; - closeControl?: FormControl; - requestDateControl?: FormControl; + changeCloseDatePeriod1Control?: FormControl; + changeCloseDatePeriod2Control?: FormControl; + changeCloseRequestDatePeriod1Control?: FormControl; + changeCloseRequestDatePeriod2Control?: FormControl; ngOnInit(): void { this.openControl = new FormControl(this.data.openDate); - this.closeControl = new FormControl(this.data.closeDate); - this.requestDateControl = new FormControl(this.data.requestDate); + this.changeCloseDatePeriod1Control = new FormControl(this.data.changeCloseDatePeriod1); + this.changeCloseDatePeriod2Control = new FormControl(this.data.changeCloseDatePeriod2); + this.changeCloseRequestDatePeriod1Control = new FormControl(this.data.changeCloseRequestDatePeriod1); + this.changeCloseRequestDatePeriod2Control = new FormControl(this.data.changeCloseRequestDatePeriod2); } save() { this.dialogRef.close({ openDate: this.openControl?.value, - closeDate: this.closeControl?.value, - requestDate: this.requestDateControl?.value, + changeCloseDatePeriod1: this.changeCloseDatePeriod1Control?.value, + changeCloseDatePeriod2: this.changeCloseDatePeriod2Control?.value, + changeCloseRequestDatePeriod1: this.changeCloseRequestDatePeriod1Control?.value, + changeCloseRequestDatePeriod2: this.changeCloseRequestDatePeriod2Control?.value, }); } } diff --git a/libs/frontend/components/src/roles/edit-role/edit-role.component.html b/libs/frontend/components/src/roles/edit-role/edit-role.component.html index 0025d984e..e9a767f39 100644 --- a/libs/frontend/components/src/roles/edit-role/edit-role.component.html +++ b/libs/frontend/components/src/roles/edit-role/edit-role.component.html @@ -14,13 +14,7 @@ more_vert - diff --git a/libs/frontend/components/src/shell/shell/shell.component.html b/libs/frontend/components/src/shell/shell/shell.component.html index 2ef01b1e7..9c80330b5 100644 --- a/libs/frontend/components/src/shell/shell/shell.component.html +++ b/libs/frontend/components/src/shell/shell/shell.component.html @@ -81,14 +81,12 @@ } - @if (this.canChange()) { - {{ 'all.shell.sidebar.competition.change-encounter' | translate }} - } + {{ 'all.shell.sidebar.competition.change-encounter' | translate }}
diff --git a/libs/frontend/components/src/shell/shell/shell.component.ts b/libs/frontend/components/src/shell/shell/shell.component.ts index ba66f864e..78e937322 100644 --- a/libs/frontend/components/src/shell/shell/shell.component.ts +++ b/libs/frontend/components/src/shell/shell/shell.component.ts @@ -139,43 +139,43 @@ export class ShellComponent { ), ); - openChangeEncounter = derivedAsync (() => - this.apollo - .query<{ - eventTournaments: { count: number }; - eventCompetitions: { count: number }; - }>({ - query: gql` - # we request only first one, because if it's more that means it's open - query CanChange($where: JSONObject) { - eventCompetitions(take: 1, where: $where) { - count - } - } - `, - variables: { - where: { - changeOpenDate: { $lte: new Date().toISOString() }, - changeCloseDate: { $gte: new Date().toISOString() }, - }, - }, - }) - .pipe( - map( - (events) => - (events?.data?.eventTournaments?.count ?? 0) != 0 || - (events?.data?.eventCompetitions?.count ?? 0) != 0, - ), - ), - ); + // openChangeEncounter = derivedAsync (() => + // this.apollo + // .query<{ + // eventTournaments: { count: number }; + // eventCompetitions: { count: number }; + // }>({ + // query: gql` + // # we request only first one, because if it's more that means it's open + // query CanChange($where: JSONObject) { + // eventCompetitions(take: 1, where: $where) { + // count + // } + // } + // `, + // variables: { + // where: { + // changeOpenDate: { $lte: new Date().toISOString() }, + // changeCloseDate: { $gte: new Date().toISOString() }, + // }, + // }, + // }) + // .pipe( + // map( + // (events) => + // (events?.data?.eventTournaments?.count ?? 0) != 0 || + // (events?.data?.eventCompetitions?.count ?? 0) != 0, + // ), + // ), + // ); canEnroll = computed( () => this.canAnyEnroll() || (this.canViewEnroll() && this.openEnrollments()), ); - canChange = computed( - () => this.canAnyChange() || (this.canViewChange() && this.openChangeEncounter()), - ); + // canChange = computed( + // () => this.canAnyChange() || (this.canViewChange() && this.openChangeEncounter()), + // ); constructor() { const snackBar = inject(MatSnackBar); diff --git a/libs/frontend/models/src/models/events/competition/event.model.ts b/libs/frontend/models/src/models/events/competition/event.model.ts index a2fd63f18..88e3b1f3b 100644 --- a/libs/frontend/models/src/models/events/competition/event.model.ts +++ b/libs/frontend/models/src/models/events/competition/event.model.ts @@ -18,8 +18,10 @@ export class EventCompetition extends Event { infoEvents?: InfoEvent[]; changeOpenDate?: Date; - changeCloseDate?: Date; - changeCloseRequestDate?: Date; + changeCloseDatePeriod1?: Date; + changeCloseDatePeriod2?: Date; + changeCloseRequestDatePeriod1?: Date; + changeCloseRequestDatePeriod2?: Date; checkEncounterForFilledIn?: boolean; constructor({ ...args }: Partial) { @@ -36,12 +38,29 @@ export class EventCompetition extends Event { this.infoEvents = args?.infoEvents?.map((e) => new InfoEvent(e)); this.changeOpenDate = args.changeOpenDate ? new Date(args.changeOpenDate) : undefined; - this.changeCloseDate = args.changeCloseDate ? new Date(args.changeCloseDate) : undefined; + this.changeCloseDatePeriod1 = args.changeCloseDatePeriod1 + ? new Date(args.changeCloseDatePeriod1) + : undefined; + if (args.changeCloseDatePeriod2) { + this.changeCloseDatePeriod2 = new Date(args.changeCloseDatePeriod2); + } else { + this.changeCloseDatePeriod2 = args.changeCloseDatePeriod1 + ? new Date(args.changeCloseDatePeriod1) + : undefined; + } - this.changeCloseRequestDate = args.changeCloseRequestDate - ? new Date(args.changeCloseRequestDate) + this.changeCloseRequestDatePeriod1 = args.changeCloseRequestDatePeriod1 + ? new Date(args.changeCloseRequestDatePeriod1) : undefined; + if (args.changeCloseRequestDatePeriod2) { + this.changeCloseRequestDatePeriod2 = new Date(args.changeCloseRequestDatePeriod2); + } else { + this.changeCloseRequestDatePeriod2 = args.changeCloseRequestDatePeriod1 + ? new Date(args.changeCloseRequestDatePeriod1) + : undefined; + } + this.subEventCompetitions = args?.subEventCompetitions ?.map((s) => new SubEventCompetition({ ...s, eventCompetition: this })) .sort(sortSubEvents); diff --git a/libs/frontend/pages/competition/change-encounter/src/change-encounter.module.ts b/libs/frontend/pages/competition/change-encounter/src/change-encounter.module.ts index c59603f25..f4b575c22 100644 --- a/libs/frontend/pages/competition/change-encounter/src/change-encounter.module.ts +++ b/libs/frontend/pages/competition/change-encounter/src/change-encounter.module.ts @@ -1,10 +1,8 @@ import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; -import { CanChangeEncounterGuard } from './guards/change-encounter.guard'; -import { ChangeEncounterComponent } from './pages'; import { AuthGuard } from '@badman/frontend-auth'; - +import { ChangeEncounterComponent } from './pages'; @NgModule({ declarations: [], imports: [ @@ -14,7 +12,7 @@ import { AuthGuard } from '@badman/frontend-auth'; path: '', pathMatch: 'full', component: ChangeEncounterComponent, - canActivate: [AuthGuard, CanChangeEncounterGuard], + canActivate: [AuthGuard], data: { claims: { any: ['*_change:encounter', 'change-any:encounter'], diff --git a/libs/frontend/pages/competition/change-encounter/src/components/comments/comments.component.html b/libs/frontend/pages/competition/change-encounter/src/components/comments/comments.component.html index 251ddea14..7770435fd 100644 --- a/libs/frontend/pages/competition/change-encounter/src/components/comments/comments.component.html +++ b/libs/frontend/pages/competition/change-encounter/src/components/comments/comments.component.html @@ -7,7 +7,7 @@

@@ -27,7 +27,12 @@

{{ 'all.competition.change-encounter.comment' | translate }} -

diff --git a/libs/frontend/pages/competition/change-encounter/src/components/comments/comments.component.ts b/libs/frontend/pages/competition/change-encounter/src/components/comments/comments.component.ts index 8a9ea529d..391484836 100644 --- a/libs/frontend/pages/competition/change-encounter/src/components/comments/comments.component.ts +++ b/libs/frontend/pages/competition/change-encounter/src/components/comments/comments.component.ts @@ -75,10 +75,16 @@ export class CommentsComponent implements OnInit, OnChanges { encounter = input.required(); + disabled = input(); + // forms commentControl = new FormControl(''); ngOnInit(): void { + if (this.disabled()){ + this.commentControl.disable(); + } + this.comments = toSignal( this.update$.pipe( startWith(null), diff --git a/libs/frontend/pages/competition/change-encounter/src/guards/change-encounter.guard.ts b/libs/frontend/pages/competition/change-encounter/src/guards/change-encounter.guard.ts deleted file mode 100644 index b3c8e48d2..000000000 --- a/libs/frontend/pages/competition/change-encounter/src/guards/change-encounter.guard.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { Injectable, inject, isDevMode } from '@angular/core'; -import { MatSnackBar } from '@angular/material/snack-bar'; -import { UrlTree } from '@angular/router'; -import { ClaimService } from '@badman/frontend-auth'; -import { TranslateService } from '@ngx-translate/core'; -import { Apollo, gql } from 'apollo-angular'; -import { Observable, lastValueFrom } from 'rxjs'; - -import { map } from 'rxjs/operators'; - -@Injectable({ - providedIn: 'root', -}) -export class CanChangeEncounterGuard { - private readonly apollo = inject(Apollo); - private readonly claimService = inject(ClaimService); - private readonly snackBar = inject(MatSnackBar); - private readonly translate = inject(TranslateService); - - async canActivate(): Promise | Promise | boolean> { - if (isDevMode()) { - return true; - } - - const openChangeEncounter = await lastValueFrom( - this.apollo - .query<{ - eventTournaments: { count: number }; - eventCompetitions: { count: number }; - }>({ - query: gql` - # we request only first one, because if it's more that means it's open - query CanChange($where: JSONObject) { - eventCompetitions(take: 1, where: $where) { - count - } - } - `, - variables: { - where: { - changeOpenDate: { $lte: new Date().toISOString() }, - changeCloseDate: { $gte: new Date().toISOString() }, - }, - }, - }) - .pipe( - map( - (events) => - (events?.data?.eventTournaments?.count ?? 0) != 0 || - (events?.data?.eventCompetitions?.count ?? 0) != 0, - ), - ), - ); - - if (openChangeEncounter) { - return true; - } - - const canChangeAny = this.claimService.hasAnyClaims(['change-any:encounter']); - if (canChangeAny) { - return true; - } - - this.snackBar.open(this.translate.instant('all.competition.change-encounter.errors.closed')); - - return false; - } -} diff --git a/libs/frontend/pages/competition/change-encounter/src/pages/change-encounter/components/list-encounters/list-encounters.component.ts b/libs/frontend/pages/competition/change-encounter/src/pages/change-encounter/components/list-encounters/list-encounters.component.ts index 2f2b36add..6b8b093df 100644 --- a/libs/frontend/pages/competition/change-encounter/src/pages/change-encounter/components/list-encounters/list-encounters.component.ts +++ b/libs/frontend/pages/competition/change-encounter/src/pages/change-encounter/components/list-encounters/list-encounters.component.ts @@ -128,7 +128,7 @@ export class ListEncountersComponent implements OnInit { // semester 2 = highest year // get the lowest year - const lowestYear = Math.min(...encounters.map((r) => r.date?.getFullYear() || 0)); + const lowestYear = Math.min(...encounters.map((r) => r.date?.getFullYear() ?? 0)); this.encountersSem1 = encounters.filter((r) => r.date?.getFullYear() === lowestYear); @@ -161,7 +161,7 @@ export class ListEncountersComponent implements OnInit { let tooltip = []; // if not accepted, show info icon - if ((encounter.encounterChange?.accepted ?? true) == false) { + if (!(encounter.encounterChange?.accepted ?? true)) { icon = 'info'; infoClass = 'warning'; tooltip.push('all.competition.change-encounter.errors.not-accepted'); @@ -272,8 +272,11 @@ export class ListEncountersComponent implements OnInit { id eventCompetition { id - changeCloseRequestDate - changeCloseDate + changeCloseRequestDatePeriod1 + changeCloseRequestDatePeriod2 + changeCloseDatePeriod1 + changeCloseDatePeriod2 + season visualCode } } diff --git a/libs/frontend/pages/competition/change-encounter/src/pages/change-encounter/components/show-requests/show-requests.component.html b/libs/frontend/pages/competition/change-encounter/src/pages/change-encounter/components/show-requests/show-requests.component.html index bb24fee66..347f3e571 100644 --- a/libs/frontend/pages/competition/change-encounter/src/pages/change-encounter/components/show-requests/show-requests.component.html +++ b/libs/frontend/pages/competition/change-encounter/src/pages/change-encounter/components/show-requests/show-requests.component.html @@ -81,45 +81,48 @@

}

- @if (!this.requestClosed || this.isAdmin()) { -
-
- + + + + - - - - - -
- @if (!this.requestClosed && requestClosing) { -
-

- {{ 'all.competition.change-encounter.warnings.closing' | translate }} - {{ requestClosing | amDateFormat: 'llll' }} -

-
- } +
- } + @if (!this.requestingClosed && requestClosing) { +
+

+ {{ 'all.competition.change-encounter.warnings.closing' | translate }} + {{ requestClosing | amDateFormat: 'llll' }} +

+
+ } + } @else {
@@ -134,6 +137,7 @@

}

diff --git a/libs/frontend/pages/competition/change-encounter/src/pages/change-encounter/components/show-requests/show-requests.component.ts b/libs/frontend/pages/competition/change-encounter/src/pages/change-encounter/components/show-requests/show-requests.component.ts index 4d69ea114..9c83fa467 100644 --- a/libs/frontend/pages/competition/change-encounter/src/pages/change-encounter/components/show-requests/show-requests.component.ts +++ b/libs/frontend/pages/competition/change-encounter/src/pages/change-encounter/components/show-requests/show-requests.component.ts @@ -7,9 +7,9 @@ import { TemplateRef, ViewChild, computed, + inject, input, signal, - inject, } from '@angular/core'; import { AbstractControl, @@ -19,7 +19,6 @@ import { FormsModule, ReactiveFormsModule, } from '@angular/forms'; -import { APOLLO_CACHE } from '@badman/frontend-graphql'; import { MatButtonModule } from '@angular/material/button'; import { MatCheckboxModule } from '@angular/material/checkbox'; import { MatOptionModule } from '@angular/material/core'; @@ -32,8 +31,10 @@ import { MatProgressBarModule } from '@angular/material/progress-bar'; import { MatSelectModule } from '@angular/material/select'; import { MatSnackBar } from '@angular/material/snack-bar'; import { MatTooltipModule } from '@angular/material/tooltip'; +import { InMemoryCache } from '@apollo/client/cache'; import { ClaimService } from '@badman/frontend-auth'; import { HasClaimComponent, SetEncounterDateDialogComponent } from '@badman/frontend-components'; +import { APOLLO_CACHE } from '@badman/frontend-graphql'; import { Comment, EncounterChange, @@ -45,13 +46,12 @@ import { TranslateModule, TranslateService } from '@ngx-translate/core'; import { Apollo, gql } from 'apollo-angular'; import moment from 'moment'; import { MomentModule } from 'ngx-moment'; +import { injectDestroy } from 'ngxtension/inject-destroy'; import { Observable, lastValueFrom, of } from 'rxjs'; import { debounceTime, filter, map, switchMap, takeUntil, tap } from 'rxjs/operators'; import { DateSelectorComponent } from '../../../../components'; import { CommentsComponent } from '../../../../components/comments'; import { RequestDateComponent } from '../request-date/request-date.component'; -import { injectDestroy } from 'ngxtension/inject-destroy'; -import { InMemoryCache } from '@apollo/client/cache'; const CHANGE_QUERY = gql` query EncounterChange($id: ID!) { @@ -122,11 +122,12 @@ export class ShowRequestsComponent implements OnInit { home!: boolean; running = false; - requestClosed = false; + requestingClosed = false; requestClosing!: moment.Moment; isAdmin = computed(() => this.claimService.hasAnyClaims(['change-any:encounter'])); + canChangeEncounter = computed(() => false); comments = signal([]); requests$!: Observable; @@ -156,13 +157,24 @@ export class ShowRequestsComponent implements OnInit { this.requests$ = this.previous.valueChanges.pipe( tap((encounter: EncounterCompetition) => { this.encounter = encounter; - if (encounter?.drawCompetition?.subEventCompetition?.eventCompetition?.changeCloseDate) { - this.requestClosing = moment( - encounter?.drawCompetition?.subEventCompetition?.eventCompetition?.changeCloseDate, + const event = encounter?.drawCompetition?.subEventCompetition?.eventCompetition; + if (event?.changeCloseDatePeriod1 || event?.changeCloseDatePeriod2) { + if (encounter.date?.getFullYear() == event.season) { + this.requestClosing = moment(event?.changeCloseDatePeriod1); + } else { + this.requestClosing = moment(event?.changeCloseDatePeriod2); + } + + console.log( + 'requestClosing', + event?.changeCloseDatePeriod2, + event.season, + encounter.date?.getFullYear(), ); - this.requestClosed = moment().isAfter(this.requestClosing); + + this.requestingClosed = moment().isAfter(this.requestClosing); } else { - this.requestClosed = false; + this.requestingClosed = false; } this.running = false; diff --git a/libs/frontend/pages/competition/event/src/pages/detail/detail.page.ts b/libs/frontend/pages/competition/event/src/pages/detail/detail.page.ts index 63f353f99..ff1a163e8 100644 --- a/libs/frontend/pages/competition/event/src/pages/detail/detail.page.ts +++ b/libs/frontend/pages/competition/event/src/pages/detail/detail.page.ts @@ -261,8 +261,10 @@ export class DetailPageComponent { const ref = this.dialog.open(OpenCloseChangeEncounterDateDialogComponent, { data: { openDate: this.eventCompetition()?.changeOpenDate, - closeDate: this.eventCompetition()?.changeCloseDate, - requestDate: this.eventCompetition()?.changeCloseRequestDate, + changeCloseDatePeriod1: this.eventCompetition()?.changeCloseDatePeriod1, + changeCloseDatePeriod2: this.eventCompetition()?.changeCloseDatePeriod2, + changeCloseRequestDatePeriod1: this.eventCompetition()?.changeCloseRequestDatePeriod1, + changeCloseRequestDatePeriod2: this.eventCompetition()?.changeCloseRequestDatePeriod2, }, width: '400px', }); @@ -277,8 +279,10 @@ export class DetailPageComponent { } eventCompetition.changeOpenDate = result.openDate; - eventCompetition.changeCloseDate = result.closeDate; - eventCompetition.changeCloseRequestDate = result.requestDate; + eventCompetition.changeCloseDatePeriod1 = result.changeCloseDatePeriod1; + eventCompetition.changeCloseDatePeriod2 = result.changeCloseDatePeriod2; + eventCompetition.changeCloseRequestDatePeriod1 = result.changeCloseRequestDatePeriod1; + eventCompetition.changeCloseRequestDatePeriod2 = result.changeCloseRequestDatePeriod2; this.apollo .mutate({ @@ -293,8 +297,10 @@ export class DetailPageComponent { data: { id: eventCompetition.id, changeOpenDate: eventCompetition.changeOpenDate, - changeCloseDate: eventCompetition.changeCloseDate, - changeCloseRequestDate: eventCompetition.changeCloseRequestDate, + changeCloseDatePeriod1: eventCompetition.changeCloseDatePeriod1, + changeCloseDatePeriod2: eventCompetition.changeCloseDatePeriod2, + changeCloseRequestDatePeriod1: eventCompetition.changeCloseRequestDatePeriod1, + changeCloseRequestDatePeriod2: eventCompetition.changeCloseRequestDatePeriod2, }, }, }) diff --git a/libs/frontend/pages/competition/event/src/resolvers/event.resolver.ts b/libs/frontend/pages/competition/event/src/resolvers/event.resolver.ts index 0ed3d0023..873f99c61 100644 --- a/libs/frontend/pages/competition/event/src/resolvers/event.resolver.ts +++ b/libs/frontend/pages/competition/event/src/resolvers/event.resolver.ts @@ -15,8 +15,10 @@ export const EVENT_QUERY = gql` openDate closeDate changeOpenDate - changeCloseDate - changeCloseRequestDate + changeCloseDatePeriod1 + changeCloseDatePeriod2 + changeCloseRequestDatePeriod1 + changeCloseRequestDatePeriod2 visualCode official lastSync From 4b88270c88727121ce82cd5ba0fdcf6ed7d892c0 Mon Sep 17 00:00:00 2001 From: cskiwi Date: Wed, 28 Aug 2024 23:12:16 +0300 Subject: [PATCH 3/3] unused code --- .../resolvers/event/competition/encounter-change.resolver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/backend/graphql/src/resolvers/event/competition/encounter-change.resolver.ts b/libs/backend/graphql/src/resolvers/event/competition/encounter-change.resolver.ts index 743dfdf8e..d5dd3c1fb 100644 --- a/libs/backend/graphql/src/resolvers/event/competition/encounter-change.resolver.ts +++ b/libs/backend/graphql/src/resolvers/event/competition/encounter-change.resolver.ts @@ -31,7 +31,7 @@ import { User } from '@badman/backend-authorization'; import { EncounterValidationService } from '@badman/backend-change-encounter'; import { NotificationService } from '@badman/backend-notifications'; -import { getSeason, LoggingAction } from '@badman/utils'; +import { LoggingAction } from '@badman/utils'; import { InjectQueue } from '@nestjs/bull'; import { Queue } from 'bull'; import { Transaction } from 'sequelize';