fix(gemensam-planering): Now only possible to send Gemensam planering when startdate > today. (TV-747)

This commit is contained in:
Erik Tiekstra
2021-10-11 07:56:56 +02:00
parent 9670b18b4e
commit 6398085907
5 changed files with 118 additions and 109 deletions

View File

@@ -6,112 +6,124 @@
[isPeriodDate]="true" [isPeriodDate]="true"
> >
<div class="gemensam-planering" *ngIf="currentGenomforandeReferens$ | async as genomforandeReferens"> <div class="gemensam-planering" *ngIf="currentGenomforandeReferens$ | async as genomforandeReferens">
<div class="gemensam-planering__confirmation" *ngIf="lastSubmittedGP$ | async as lastSubmittedGP; else formRef"> <div class="gemensam-planering__warning" *ngIf="today < avrop.startDate; else reportRef">
<digi-notification-alert <digi-notification-alert af-variation="warning" af-heading="Kan inte skapa Gemensam planering">
class="gemensam-planering__alert" <p>Det går inte att skicka Gemensam planering eftersom tjänsten inte har startat ännu.</p>
af-variation="success"
af-heading="Allt gick bra"
af-heading-level="h3"
>
<p>
Gemensam planering för deltagare {{avrop.fullName}} är nu inskickad till Arbetsförmedlingen och inväntar
godkännande.
</p>
<dl>
<dt>Datum</dt>
<dd>{{lastSubmittedGP | date:'longDate'}} kl {{lastSubmittedGP | date:'shortTime'}}</dd>
</dl>
</digi-notification-alert> </digi-notification-alert>
<msfa-back-link [route]="['/deltagare/'+ genomforandeReferens]">Tillbaka till deltagaren</msfa-back-link>
<msfa-back-link [route]="['../']">Tillbaka till deltagaren</msfa-back-link>
</div> </div>
<ng-template #formRef> <ng-template #reportRef>
<form <div class="gemensam-planering__confirmation" *ngIf="lastSubmittedGP$ | async as lastSubmittedGP; else formRef">
class="gemensam-planering__form" <digi-notification-alert
[formGroup]="gpFormGroup" class="gemensam-planering__alert"
(ngSubmit)="openConfirmDialog()" af-variation="success"
id="gemensam-planering-form" af-heading="Allt gick bra"
> af-heading-level="h3"
<msfa-loader *ngIf="submitLoading$ | async" type="absolute"></msfa-loader>
<digi-form-fieldset
af-legend="Deltar arbetssökande på distans?"
af-name="distance"
af-form="gemensam-planering-form"
> >
<digi-ng-form-radiobutton-group
[afRadiobuttons]="distanceRadiobuttons"
formControlName="distance"
[afRequired]="true"
[afRadiobuttonGroupDirection]="RadiobuttonGroupDirection.HORIZONTAL"
></digi-ng-form-radiobutton-group>
</digi-form-fieldset>
<digi-form-fieldset af-legend="Aktiviteter" af-name="aktivitetsIds" af-form="gemensam-planering-form">
<p> <p>
Varje Gemensam planering måste innehålla de två obligatoriska aktiviteterna samt en frivillig aktivitet Gemensam planering för deltagare {{avrop.fullName}} är nu inskickad till Arbetsförmedlingen och inväntar
som en del av det individuella stödet för varje deltagare. godkännande.
</p> </p>
<dl>
<ng-container *ngIf="activities$ | async as activities; else loadingRef"> <dt>Datum</dt>
<ul class="gemensam-planering__activity-list"> <dd>{{lastSubmittedGP | date:'longDate'}} kl {{lastSubmittedGP | date:'shortTime'}}</dd>
<li class="gemensam-planering__activity-item" *ngFor="let activity of activities;"> </dl>
<digi-form-checkbox </digi-notification-alert>
[afLabel]="activity.name + (isActivityObligatory(activity.id) ? ' (obligatorisk)' : '')" <msfa-back-link [route]="['/deltagare/'+ genomforandeReferens]">Tillbaka till deltagaren</msfa-back-link>
[afValue]="activity.id" </div>
[afValidation]="showActivityAsInvalid(activity.id) ? 'error' : 'neutral'" <ng-template #formRef>
[afChecked]="isActivityChecked(activity.id) || isActivityObligatory(activity.id)" <form
(afOnChange)="updateActivityIds(activity.id, $event.detail.target.checked)" class="gemensam-planering__form"
></digi-form-checkbox> [formGroup]="gpFormGroup"
</li> (ngSubmit)="openConfirmDialog()"
</ul> id="gemensam-planering-form"
<digi-form-validation-message >
*ngIf="shouldValidate && gpFormGroup.errors?.activityIds" <msfa-loader *ngIf="submitLoading$ | async" type="absolute"></msfa-loader>
af-variation="error" <digi-form-fieldset
>{{gpFormGroup.errors.activityIds}}</digi-form-validation-message af-legend="Deltar arbetssökande på distans?"
> af-name="distance"
</ng-container> af-form="gemensam-planering-form"
</digi-form-fieldset>
<footer class="gemensam-planering__footer">
<digi-notification-alert
*ngIf="error$ | async as error"
class="gemensam-planering__alert"
af-variation="danger"
af-heading="Någonting gick fel"
> >
<p>Kunde inte spara Gemensam planering. Ladda om sidan och försök igen.</p> <digi-ng-form-radiobutton-group
<p class="msfa__small-text" *ngIf="error.message">{{error.message}}</p> [afRadiobuttons]="distanceRadiobuttons"
</digi-notification-alert> formControlName="distance"
<div class="gemensam-planering__cta-wrapper"> [afRequired]="true"
<digi-button af-type="submit" af-size="m">Förhandsgranska</digi-button> [afRadiobuttonGroupDirection]="RadiobuttonGroupDirection.HORIZONTAL"
<msfa-back-link [showIcon]="false" [asButton]="true" [route]="['/deltagare/'+ genomforandeReferens]" ></digi-ng-form-radiobutton-group>
>Avbryt </digi-form-fieldset>
</msfa-back-link> <digi-form-fieldset af-legend="Aktiviteter" af-name="aktivitetsIds" af-form="gemensam-planering-form">
</div> <p>
</footer> Varje Gemensam planering måste innehålla de två obligatoriska aktiviteterna samt en frivillig aktivitet
</form> som en del av det individuella stödet för varje deltagare.
<msfa-confirm-dialog </p>
[dialogOpen]="confirmDialogOpen"
dialogTitle="Vill du skicka in Gemensam planering?" <ng-container *ngIf="activities$ | async as activities; else loadingRef">
ariaLabel="Förhandsgranska och skicka in Gemensam planering" <ul class="gemensam-planering__activity-list">
primaryButtonText="Skicka in" <li class="gemensam-planering__activity-item" *ngFor="let activity of activities;">
(confirmDialogChanged)="closeConfirmDialogAndProceed($event, genomforandeReferens)" <digi-form-checkbox
> [afLabel]="activity.name + (isActivityObligatory(activity.id) ? ' (obligatorisk)' : '')"
<dl> [afValue]="activity.id"
<dt>Deltar arbetssökande på distans?</dt> [afValidation]="showActivityAsInvalid(activity.id) ? 'error' : 'neutral'"
<dd>{{gpFormGroup.value.distance ? 'Ja' : 'Nej'}}</dd> [afChecked]="isActivityChecked(activity.id) || isActivityObligatory(activity.id)"
<dt>Aktiviteter</dt> (afOnChange)="updateActivityIds(activity.id, $event.detail.target.checked)"
<dd> ></digi-form-checkbox>
<ul class="gemensam-planering__activity-list" *ngFor="let activity of activities$ | async"> </li>
<li class="gemensam-planering__activity-item" *ngIf="activityIdsFormArray.value.includes(activity.id)"> </ul>
<digi-icon-check-circle <digi-form-validation-message
class="msfa__digi-icon gemensam-planering__activity-check" *ngIf="shouldValidate && gpFormGroup.errors?.activityIds"
aria-hidden="true" af-variation="error"
></digi-icon-check-circle> >{{gpFormGroup.errors.activityIds}}</digi-form-validation-message
{{activity.name}} >
</li> </ng-container>
</ul> </digi-form-fieldset>
</dd>
</dl> <footer class="gemensam-planering__footer">
</msfa-confirm-dialog> <digi-notification-alert
*ngIf="error$ | async as error"
class="gemensam-planering__alert"
af-variation="danger"
af-heading="Någonting gick fel"
>
<p>Kunde inte spara Gemensam planering. Ladda om sidan och försök igen.</p>
<p class="msfa__small-text" *ngIf="error.message">{{error.message}}</p>
</digi-notification-alert>
<div class="gemensam-planering__cta-wrapper">
<digi-button af-type="submit" af-size="m">Förhandsgranska</digi-button>
<msfa-back-link [showIcon]="false" [asButton]="true" [route]="['/deltagare/'+ genomforandeReferens]"
>Avbryt
</msfa-back-link>
</div>
</footer>
</form>
<msfa-confirm-dialog
[dialogOpen]="confirmDialogOpen"
dialogTitle="Vill du skicka in Gemensam planering?"
ariaLabel="Förhandsgranska och skicka in Gemensam planering"
primaryButtonText="Skicka in"
(confirmDialogChanged)="closeConfirmDialogAndProceed($event, genomforandeReferens)"
>
<dl>
<dt>Deltar arbetssökande på distans?</dt>
<dd>{{gpFormGroup.value.distance ? 'Ja' : 'Nej'}}</dd>
<dt>Aktiviteter</dt>
<dd>
<ul class="gemensam-planering__activity-list" *ngFor="let activity of activities$ | async">
<li
class="gemensam-planering__activity-item"
*ngIf="activityIdsFormArray.value.includes(activity.id)"
>
<digi-icon-check-circle
class="msfa__digi-icon gemensam-planering__activity-check"
aria-hidden="true"
></digi-icon-check-circle>
{{activity.name}}
</li>
</ul>
</dd>
</dl>
</msfa-confirm-dialog>
</ng-template>
</ng-template> </ng-template>
</div> </div>
</msfa-report-layout> </msfa-report-layout>

View File

@@ -5,6 +5,7 @@
max-width: var(--digi--typography--text--max-width); max-width: var(--digi--typography--text--max-width);
&__confirmation, &__confirmation,
&__warning,
&__form { &__form {
position: relative; position: relative;
display: flex; display: flex;

View File

@@ -27,6 +27,7 @@ export class DeltagareGemensamPlaneringComponent {
shouldValidate = false; shouldValidate = false;
RadiobuttonGroupDirection = RadiobuttonGroupDirection; RadiobuttonGroupDirection = RadiobuttonGroupDirection;
confirmDialogOpen = false; confirmDialogOpen = false;
today = new Date();
private _error$ = new BehaviorSubject<CustomError>(null); private _error$ = new BehaviorSubject<CustomError>(null);
error$: Observable<CustomError> = this._error$.asObservable(); error$: Observable<CustomError> = this._error$.asObservable();
private _lastSubmittedGP$ = new BehaviorSubject<Date>(null); private _lastSubmittedGP$ = new BehaviorSubject<Date>(null);

View File

@@ -6,26 +6,20 @@
reportTitle="Avvikelserapport (frånvaro)" reportTitle="Avvikelserapport (frånvaro)"
> >
<div class="franvaro-report" *ngIf="currentGenomforandeReferens$ | async as genomforandeReferens"> <div class="franvaro-report" *ngIf="currentGenomforandeReferens$ | async as genomforandeReferens">
<ng-container *ngIf="maxDate < avrop.startDate; else reportRef"> <div class="franvaro-report__warning" *ngIf="maxDate < avrop.startDate; else reportRef">
<digi-notification-alert af-variation="warning" af-heading="Kan inte skapa Avvikelserapport (frånvaro)"> <digi-notification-alert af-variation="warning" af-heading="Kan inte skapa Avvikelserapport (frånvaro)">
<p>Det går inte att rapportera frånvaro eftersom tjänsten inte har startat ännu.</p> <p>Det går inte att rapportera frånvaro eftersom tjänsten inte har startat ännu.</p>
</digi-notification-alert> </digi-notification-alert>
<!-- TODO: add spacing-->
<msfa-back-link [route]="['../']">Tillbaka till deltagaren</msfa-back-link> <msfa-back-link [route]="['../']">Tillbaka till deltagaren</msfa-back-link>
</ng-container> </div>
<ng-template #reportRef> <ng-template #reportRef>
<div <div
class="franvaro-report__confirmation" class="franvaro-report__confirmation"
*ngIf="lastSubmittedFranvaroReport$ | async as lastSubmittedFranvaroReport; else formRef" *ngIf="lastSubmittedFranvaroReport$ | async as lastSubmittedFranvaroReport; else formRef"
> >
<digi-notification-alert <digi-notification-alert af-variation="success" af-heading="Allt gick bra" af-heading-level="h3">
class="franvaro-report__alert"
af-variation="success"
af-heading="Allt gick bra"
af-heading-level="h3"
>
<p>Avvikelserapport (frånvaro) för deltagare {{avrop.fullName}} är nu inskickad till Arbetsförmedlingen.</p> <p>Avvikelserapport (frånvaro) för deltagare {{avrop.fullName}} är nu inskickad till Arbetsförmedlingen.</p>
<dl> <dl>
<dt>Datum</dt> <dt>Datum</dt>

View File

@@ -5,6 +5,7 @@
max-width: var(--digi--typography--text--max-width); max-width: var(--digi--typography--text--max-width);
&__confirmation, &__confirmation,
&__warning,
&__form { &__form {
position: relative; position: relative;
display: flex; display: flex;