diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.html index 978fc0b..c124ca3 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.html @@ -6,117 +6,128 @@ reportTitle="Avvikelserapport (avvikelse)" >
-
- -

Avvikelserapport (avvikelse) för deltagare {{avrop.fullName}} är nu inskickad till Arbetsförmedlingen.

-
-
Datum
-
{{submittedDate | date:'longDate'}} kl {{submittedDate | date:'shortTime'}}
-
+
+ +

{{notAllowedToReportWarning(avrop)}}

+ Tillbaka till deltagaren
- - -
-
- -
- -
-
- -
-
- -
- -
- -
- Förhandsgranska - - Avbryt -  och gå tillbaka till deltagaren - -
-
- - - -
Orsak till avvikelse:
-
{{(chosenReason$ | async)?.name }}
- - -
{{getCurrentQuestionFromId(question.fraga).name}}
-
{{question.svar.length === 0 ? 'Inget svar' : question.svar }}
-
-
Dag för avvikelse:
-
{{avvikelseSubmitData.avvikelseAlternativ.rapporteringsdatum }}
-
-
+ +
-

Kunde inte spara Avvikelserapport (avvikelse). Ladda om sidan och försök igen.

-

{{error.message}}

+

+ Avvikelserapport (avvikelse) för deltagare {{avrop.fullName}} är nu inskickad till Arbetsförmedlingen. +

+
+
Datum
+
{{submittedDate | date:'longDate'}} kl {{submittedDate | date:'shortTime'}}
+
- + Tillbaka till deltagaren +
+ + +
+
+ +
+ +
+
+ +
+
+ +
+ +
+ +
+ Förhandsgranska + + Avbryt +  och gå tillbaka till deltagaren + +
+
+ + + +
Orsak till avvikelse:
+
{{(chosenReason$ | async)?.name }}
+ + +
{{getCurrentQuestionFromId(question.fraga).name}}
+
{{question.svar.length === 0 ? 'Inget svar' : question.svar }}
+
+
Dag för avvikelse:
+
{{avvikelseSubmitData.avvikelseAlternativ.rapporteringsdatum }}
+
+
+ +

Kunde inte spara Avvikelserapport (avvikelse). Ladda om sidan och försök igen.

+

{{error.message}}

+
+
+
diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.scss b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.scss index e48ed8e..59ea7cd 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.scss +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.scss @@ -5,6 +5,7 @@ &__confirmation, &__textareas, + &__warning, &__form { display: flex; flex-direction: column; diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.ts index f31b808..e4fe4eb 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/avvikelse-report-form/avvikelse-report-form.component.ts @@ -10,6 +10,7 @@ import { CustomError } from '@msfa-models/error/custom-error'; import { markControlsAsDirty } from '@msfa-utils/mark-controls-as-dirty.util'; import { RegexValidator } from '@msfa-utils/validators/regex.validator'; import { RequiredValidator } from '@msfa-validators/required.validator'; +import { addDays } from 'date-fns'; import { BehaviorSubject, combineLatest, Observable, Subscription } from 'rxjs'; import { map, shareReplay, switchMap, take } from 'rxjs/operators'; import { AvvikelseReportFormService } from './avvikelse-report-form.service'; @@ -87,10 +88,6 @@ export class AvvikelseReportFormComponent implements OnInit, OnDestroy { return this.avvikelseFormGroup.get('questions') as FormArray; } - get maxDate(): Date { - return new Date(); - } - getCurrentQuestionFromId(id: string): AvvikelseQuestion { return this.currentQuestions.find(currentQuestions => currentQuestions.id === id); } @@ -133,8 +130,30 @@ export class AvvikelseReportFormComponent implements OnInit, OnDestroy { return formControl.invalid && (formControl.touched || this.shouldValidate$.value); } - minDate(avrop: Avrop): Date { - return new Date(avrop.receivedTimestamp); + maxDate(endDate: Date): Date { + const now = new Date(); + return now < endDate ? now : endDate; + } + + private _isAfterStartDate(startDate: Date): boolean { + return new Date() > startDate; + } + private _isBeforeLastPossibleReportDay(endDate: Date): boolean { + const lastPossibleReportDay = addDays(endDate, 5); // Reporting is allowed at latest 5 days past avrop end date. + return lastPossibleReportDay > new Date(); + } + + isAllowedToReport(avrop: Avrop): boolean { + return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate); + } + + notAllowedToReportWarning(avrop: Avrop): string { + if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) { + return 'Det går inte att göra Avvikelserapport (avvikelse) eftersom tjänsten har avslutats.'; + } + if (!this._isAfterStartDate(avrop.startDate)) { + return 'Det går inte att göra Avvikelserapport (avvikelse) eftersom tjänsten inte har startat ännu.'; + } } openConfirmDialog(): void { diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/franvaro-report-form/franvaro-report-form.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/franvaro-report-form/franvaro-report-form.component.html index 0b9ac53..b7e3eff 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/franvaro-report-form/franvaro-report-form.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/franvaro-report-form/franvaro-report-form.component.html @@ -6,9 +6,9 @@ reportTitle="Avvikelserapport (frånvaro)" >
-
+
-

Det går inte att rapportera frånvaro eftersom tjänsten inte har startat ännu.

+

{{notAllowedToReportWarning(avrop)}}

Tillbaka till deltagaren @@ -112,7 +112,7 @@ (false); confirmDialogOpen$ = new BehaviorSubject(false); franvaroFormGroup = new FormGroup( @@ -117,12 +117,38 @@ export class FranvaroReportFormComponent { return new Date(this.dateFormControl.value); } + get dayOrPartOfDayFromValue(): string { + return this.wholeDayFormControl.value ? 'Heldag' : 'Del av dag'; + } + + private _isAfterStartDate(startDate: Date): boolean { + return new Date() > startDate; + } + private _isBeforeLastPossibleReportDay(endDate: Date): boolean { + const lastPossibleReportDay = addDays(endDate, 5); // Reporting is allowed at latest 5 days past avrop end date. + return lastPossibleReportDay > new Date(); + } + + isAllowedToReport(avrop: Avrop): boolean { + return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate); + } + + notAllowedToReportWarning(avrop: Avrop): string { + if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) { + return 'Det går inte att göra Avvikelserapport (frånvaro) eftersom tjänsten har avslutats.'; + } + if (!this._isAfterStartDate(avrop.startDate)) { + return 'Det går inte att göra Avvikelserapport (frånvaro) eftersom tjänsten inte har startat ännu.'; + } + } + getReasonNameFromValue(reasons: FranvaroReason[], value: string): string { return reasons.find(reason => reason.value.toString() === value)?.name; } - get dayOrPartOfDayFromValue(): string { - return this.wholeDayFormControl.value ? 'Heldag' : 'Del av dag'; + maxDate(endDate: Date): Date { + const now = new Date(); + return now < endDate ? now : endDate; } formControlIsInvalid(formControlNames: string[]): boolean { diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/gemensam-planering-form/gemensam-planering-form.component.html b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/gemensam-planering-form/gemensam-planering-form.component.html index 07c812d..00d019e 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/gemensam-planering-form/gemensam-planering-form.component.html +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/gemensam-planering-form/gemensam-planering-form.component.html @@ -5,9 +5,9 @@ [avrop]="avrop" >
-
+
-

Det går inte att skicka Gemensam planering eftersom tjänsten inte har startat ännu.

+

{{notAllowedToReportWarning(avrop)}}

Tillbaka till deltagaren diff --git a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/gemensam-planering-form/gemensam-planering-form.component.ts b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/gemensam-planering-form/gemensam-planering-form.component.ts index e7b0210..4dfca21 100644 --- a/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/gemensam-planering-form/gemensam-planering-form.component.ts +++ b/apps/mina-sidor-fa/src/app/pages/deltagare/pages/deltagare-details/pages/report-forms/gemensam-planering-form/gemensam-planering-form.component.ts @@ -9,6 +9,7 @@ import { GemensamPlanering, mapGemensamPlaneringToGemensamPlaneringPostRequest, } from '@msfa-models/gemensam-planering.model'; +import { addDays } from 'date-fns'; import { BehaviorSubject, Observable } from 'rxjs'; import { map, shareReplay, switchMap, take } from 'rxjs/operators'; import { GemensamPlaneringFormService } from './gemensam-planering-form.service'; @@ -147,4 +148,25 @@ export class GemensamPlaneringFormComponent { }, }); } + + private _isAfterStartDate(startDate: Date): boolean { + return new Date() > startDate; + } + private _isBeforeLastPossibleReportDay(endDate: Date): boolean { + const lastPossibleReportDay = addDays(endDate, 5); // Reporting is allowed at latest 5 days past avrop end date. + return lastPossibleReportDay > new Date(); + } + + isAllowedToReport(avrop: Avrop): boolean { + return this._isAfterStartDate(avrop.startDate) && this._isBeforeLastPossibleReportDay(avrop.endDate); + } + + notAllowedToReportWarning(avrop: Avrop): string { + if (!this._isBeforeLastPossibleReportDay(avrop.endDate)) { + return 'Det går inte att göra Gemensam planering eftersom tjänsten har avslutats.'; + } + if (!this._isAfterStartDate(avrop.startDate)) { + return 'Det går inte att göra Gemensam planering eftersom tjänsten inte har startat ännu.'; + } + } } diff --git a/apps/mina-sidor-fa/src/app/shared/models/avrop.model.ts b/apps/mina-sidor-fa/src/app/shared/models/avrop.model.ts index 1e219aa..931bf98 100644 --- a/apps/mina-sidor-fa/src/app/shared/models/avrop.model.ts +++ b/apps/mina-sidor-fa/src/app/shared/models/avrop.model.ts @@ -72,6 +72,6 @@ export function mapAvropResponseToAvrop(data: AvropResponse): Avrop { utforandeVerksamhet: utforandeverksamhet, handledareCiamUserId: handledareCiamUserId, handledare, - receivedTimestamp: recievedTimestamp, + receivedTimestamp: new Date(recievedTimestamp), }; }