diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-card/employee-card.component.html b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-card/employee-card.component.html
index c3847b1..20cd534 100644
--- a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-card/employee-card.component.html
+++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-card/employee-card.component.html
@@ -4,7 +4,7 @@
diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.html b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.html
new file mode 100644
index 0000000..a458164
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.html
@@ -0,0 +1,145 @@
+
+
+
+
+
+ Behörigheten passar personer som arbetar nära deltagare. Behörigheten kan användas av exempelvis handledare,
+ coacher, studie- och yrkesvägledare, lärare eller annan roll som behöver kunna se information om deltager, kontakta
+ deltagare, planera aktiviteter med deltagre och hantera rapporter för deltagre.
+
+
+ Behörigheten ger tillgång till och utföra aktiviteter i följande funktioner i systemet:
+
+
+ - Deltagarlista
+ - Information om deltagare
+ - Resultatrapporter
+ - Slutredovisning
+ - Informativ rapport
+ - Skicka välkomstbrev *
+ - Planera deltagares aktiviteter
+ - Deltagares schema
+ - Avvikelserapporter
+ - Närvaro- och frånvarorapporter
+
+
diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.scss b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.scss
new file mode 100644
index 0000000..fbfeb92
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.scss
@@ -0,0 +1,92 @@
+@import 'mixins/list';
+@import 'variables/gutters';
+@import '~@digi/core/dist/collection/components/_button/button/button.css';
+
+.edit-employee-form {
+ max-width: var(--digi--typography--text--max-width);
+
+ fieldset {
+ margin: 2.5rem 0;
+ padding: 0;
+ border: 0 none transparent;
+ }
+
+ legend {
+ width: 100%;
+ padding: 0;
+ display: flex;
+ align-items: center;
+ font-weight: var(--digi--typography--font-weight--semibold);
+ font-size: var(--digi--typography--font-size--h2--desktop);
+ margin-bottom: var(--digi-typography--margin--h2);
+ }
+
+ &__input {
+ display: block;
+ width: 100%;
+ margin-bottom: var(--digi--layout--gutter);
+ }
+
+ &__authorizations {
+ @include msfa__reset-list;
+ margin-bottom: var(--digi--layout--gutter);
+ }
+
+ &__authorization-item {
+ margin-top: var(--digi--layout--gutter);
+
+ ::ng-deep label {
+ display: block !important;
+ }
+ }
+
+ &__open-authorization-dialog-btn {
+ ::ng-deep button {
+ padding: 0 !important;
+ }
+ }
+
+ &__footer {
+ margin-top: $digi--layout--gutter--xl;
+ display: flex;
+ gap: var(--digi--layout--gutter);
+ }
+
+ &__link-btn {
+ font-family: var(--digi-button--font-family);
+ background: var(--digi-button--background);
+ color: var(--digi-button--color);
+ padding: var(--digi-button--padding);
+ border-radius: var(--digi-button--border-radius);
+ border: var(--digi-button--border);
+ border-color: var(--digi-button--border-color);
+ font-weight: var(--digi-button--font-weight);
+ font-size: var(--digi-button--font-size);
+ outline: var(--digi-button--outline);
+ text-align: var(--digi-button--text-align);
+ cursor: pointer;
+ width: var(--digi-button--width);
+ display: var(--digi-button--display);
+ text-align: var(--digi-button--text-align);
+ text-decoration: none;
+ }
+
+ &__link-btn--secondary {
+ --digi-button--background: var(--digi-button--background--secondary);
+ --digi-button--background--hover: var(--digi-button--background--secondary--hover);
+ --digi-button--color: var(--digi-button--color--secondary);
+ --digi-button--color--hover: var(--digi-button--color--secondary);
+ --digi-button--border-color--disabled: var(--digi-button--border-color--secondary--disabled);
+
+ &:focus,
+ &:hover {
+ --digi-button--background: var(--digi-button--background--hover);
+ --digi-button--border-color: var(--digi-button--border-color--hover);
+ --digi-button--color: var(--digi-button--color--hover);
+ --digi-button--outline: var(--digi-button--outline--focus);
+ }
+ }
+ &__choose_all-utforande-verksamh {
+ margin: 1.5rem 0;
+ }
+}
diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.spec.ts b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.spec.ts
new file mode 100644
index 0000000..41329c0
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.spec.ts
@@ -0,0 +1,42 @@
+import { DigiNgFormCheckboxModule } from '@af/digi-ng/_form/form-checkbox';
+import { DigiNgFormDatepickerModule } from '@af/digi-ng/_form/form-datepicker';
+import { DigiNgFormInputModule } from '@af/digi-ng/_form/form-input';
+import { DigiNgFormRadiobuttonGroupModule } from '@af/digi-ng/_form/form-radiobutton-group';
+import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select';
+import { DigiNgPopoverModule } from '@af/digi-ng/_popover/popover';
+import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ReactiveFormsModule } from '@angular/forms';
+
+import { EditEmployeeFormComponent } from './edit-employee-form.component';
+
+describe('EditEmployeeFormComponent', () => {
+ let component: EditEmployeeFormComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [EditEmployeeFormComponent],
+ imports: [
+ ReactiveFormsModule,
+ DigiNgFormInputModule,
+ DigiNgFormRadiobuttonGroupModule,
+ DigiNgFormDatepickerModule,
+ DigiNgFormSelectModule,
+ DigiNgPopoverModule,
+ DigiNgFormCheckboxModule,
+ ],
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
+ }).compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(EditEmployeeFormComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.ts b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.ts
new file mode 100644
index 0000000..c7ca804
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/edit-employee-form/edit-employee-form.component.ts
@@ -0,0 +1,175 @@
+import { ButtonSize, ButtonType, ButtonVariation } from '@af/digi-ng/_button/button';
+import { FormSelectItem } from '@af/digi-ng/_form/form-select';
+import {
+ Component,
+ OnInit,
+ ChangeDetectionStrategy,
+ Input,
+ OnChanges,
+ SimpleChanges,
+ EventEmitter,
+ Output,
+} from '@angular/core';
+import { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';
+import { Authorization } from '@msfa-models/authorization.model';
+import { Service } from '@msfa-models/service.model';
+
+export interface EditEmployeeFormData {
+ email: string;
+ authorizations: Array;
+}
+
+@Component({
+ selector: 'msfa-edit-employee-form',
+ templateUrl: './edit-employee-form.component.html',
+ styleUrls: ['./edit-employee-form.component.scss'],
+ changeDetection: ChangeDetectionStrategy.OnPush,
+})
+export class EditEmployeeFormComponent implements OnInit, OnChanges {
+ @Input() currentEmail: string | null = null;
+ @Input() selectableAuthorizations: Array | null = null;
+ @Input() currentEmployeeAuthorizations: Array | null = null;
+ @Output() formSubmitted = new EventEmitter();
+ @Input() selectableServices: Array | null = null;
+ @Input() currentEmployeeServices: Array | null = null;
+
+ readonly ButtonVariation = ButtonVariation;
+ readonly ButtonType = ButtonType;
+ readonly ButtonSize = ButtonSize;
+
+ readonly emailFormControlName = 'email';
+
+ editEmployeeFormGroup: FormGroup | null = null;
+ authorizationsFormGroup: FormGroup | null = null;
+
+ displayAuthorizationDialog = false;
+
+ constructor() {}
+
+ ngOnInit(): void {
+ console.log(':::::::', this.selectableServices);
+ console.log('!!!!!!!', this.currentEmployeeServices);
+ this.initializeEditEmployeeFormGroup();
+ }
+
+ ngOnChanges(changes: SimpleChanges): void {
+ if (changes.selectableAuthorizations) {
+ this.initializeEditEmployeeFormGroup();
+ }
+
+ if (changes.currentEmployeeAuthorizations) {
+ this.updateAuthorizationFormGroup();
+ }
+
+ if (changes.currentEmail) {
+ this.editEmployeeFormGroup.patchValue(Object.fromEntries([[this.emailFormControlName, this.currentEmail]]));
+ }
+ }
+
+ get emailFormControl(): AbstractControl | null {
+ return this.editEmployeeFormGroup?.get(this.emailFormControlName);
+ }
+
+ onFormSubmitted(): void {
+ if (!this.editEmployeeFormGroup) {
+ return;
+ }
+
+ this.editEmployeeFormGroup.markAllAsTouched();
+
+ if (this.editEmployeeFormGroup.invalid) {
+ return;
+ }
+
+ this.formSubmitted.emit({
+ email: this.emailFormControl?.value,
+ authorizations: this.getAuthorizationsFromFormGroup(this.authorizationsFormGroup, this.selectableAuthorizations),
+ });
+ }
+
+ getFormControlName(authorization: Authorization): string {
+ return authorization?.id?.replace(/[^a-zA-Z0-9]/g, '');
+ }
+
+ openAuthorizationDialog(): void {
+ this.displayAuthorizationDialog = true;
+ }
+
+ closeAuthorizationDialog(): void {
+ this.displayAuthorizationDialog = false;
+ }
+
+ private initializeEditEmployeeFormGroup(): void {
+ this.authorizationsFormGroup = this.getAuthorizationFormGroup(
+ this.selectableAuthorizations,
+ this.currentEmployeeAuthorizations
+ );
+
+ this.editEmployeeFormGroup = new FormGroup({
+ email: new FormControl(this.currentEmail, [Validators.required, Validators.email]),
+ authorizations: this.authorizationsFormGroup,
+ });
+ }
+
+ private updateAuthorizationFormGroup(): void {
+ if (!this.authorizationsFormGroup || !this.selectableAuthorizations) {
+ return;
+ }
+
+ this.authorizationsFormGroup.patchValue(
+ Object.fromEntries(
+ this.selectableAuthorizations.map(authorization => [
+ this.getFormControlName(authorization),
+ this.isSelectedAuthorization(authorization, this.currentEmployeeAuthorizations),
+ ])
+ )
+ );
+ }
+
+ private getAuthorizationsFromFormGroup(
+ formGroup: FormGroup | null,
+ authorizations: Array | null
+ ): Array {
+ if (!formGroup || !authorizations) {
+ return;
+ }
+
+ return authorizations.filter(
+ authorization => formGroup.get(this.getFormControlName(authorization))?.value === true
+ );
+ }
+
+ private getAuthorizationFormGroup(
+ authorizations: Array | null,
+ selectedAuthorizations: Array | null
+ ): FormGroup {
+ if (!authorizations) {
+ return new FormGroup({});
+ }
+
+ return new FormGroup(
+ Object.fromEntries(
+ authorizations.map(authorization => [
+ this.getFormControlName(authorization),
+ new FormControl(this.isSelectedAuthorization(authorization, selectedAuthorizations), []),
+ ])
+ )
+ );
+ }
+
+ private isSelectedAuthorization(
+ authorization: Authorization,
+ selectedAuthorizations: Array | null
+ ): boolean {
+ if (!selectedAuthorizations || !authorization) {
+ return false;
+ }
+
+ return selectedAuthorizations.some(selectedAuthorization => selectedAuthorization.id === authorization.id);
+ }
+
+ // Services helper methods
+ unselectEmployeeService() {
+ console.log('Unselect the service from list and tag will get removed');
+ }
+}
diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.html b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.html
index 4487c07..344eced 100644
--- a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.html
+++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.html
@@ -1,164 +1,54 @@
-
diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.ts b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.ts
index c3b083e..d93821a 100644
--- a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.ts
+++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.component.ts
@@ -1,16 +1,18 @@
import { FormSelectBaseItem } from '@af/digi-ng/_form/form-select-base';
-import { ChangeDetectionStrategy, Component } from '@angular/core';
-import { AbstractControl, FormBuilder, FormGroup } from '@angular/forms';
-import { Router } from '@angular/router';
+import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
+import { AbstractControl, FormBuilder, FormGroup, Validators } from '@angular/forms';
+import { ActivatedRoute, Router } from '@angular/router';
+import { UnsubscribeDirective } from '@msfa-directives/unsubscribe.directive';
import { Authorization } from '@msfa-models/authorization.model';
+import { Employee } from '@msfa-models/employee.model';
import { Service } from '@msfa-models/service.model';
import { AuthorizationService } from '@msfa-services/api/authorizations.service';
import { EmployeeService } from '@msfa-services/api/employee.service';
import { ServiceService } from '@msfa-services/api/service.service';
-import { SocialSecurityNumberValidator } from '@msfa-utils/validators/social-security-number.validator';
import { RequiredValidator } from '@msfa-validators/required.validator';
import { Observable } from 'rxjs';
-import { map } from 'rxjs/operators';
+import { map, switchMap } from 'rxjs/operators';
+import { EditEmployeeFormData } from './edit-employee-form/edit-employee-form.component';
@Component({
selector: 'msfa-employee-form',
@@ -18,9 +20,12 @@ import { map } from 'rxjs/operators';
styleUrls: ['./employee-form.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
-export class EmployeeFormComponent {
+export class EmployeeFormComponent extends UnsubscribeDirective implements OnInit {
+ employee$: Observable;
services$: Observable = this.serviceService.services$;
authorizations$: Observable = this.authorizationService.authorizations$;
+ employeeCurrentServices: Service[] | null | undefined;
+
servicesSelectItems$: Observable = this.services$.pipe(
map(services => services.map(({ name, id }) => ({ name, value: id })))
);
@@ -28,11 +33,9 @@ export class EmployeeFormComponent {
modalAuthInfo: { name: string } = { name: 'Test Behörighetsnamn' };
formGroup: FormGroup = this.formBuilder.group({
- firstName: this.formBuilder.control('', [RequiredValidator('Förnamn')]),
- lastName: this.formBuilder.control('', [RequiredValidator('Efternamn')]),
- ssn: this.formBuilder.control('', [RequiredValidator('Personnummer'), SocialSecurityNumberValidator()]),
+ email: this.formBuilder.control('', [Validators.required, Validators.email]),
services: this.formBuilder.control([], [RequiredValidator('en tjänst')]),
- authorizations: this.formBuilder.control([], [RequiredValidator('en behörighet')]),
+ authorizations: new FormGroup({}),
});
todaysDate = new Date();
submitted = false;
@@ -42,24 +45,32 @@ export class EmployeeFormComponent {
private employeeService: EmployeeService,
private serviceService: ServiceService,
private authorizationService: AuthorizationService,
- private router: Router
- ) {}
+ private router: Router,
+ private activatedRoute: ActivatedRoute
+ ) {
+ super();
+ super.unsubscribeOnDestroy();
+ }
- get firstNameControl(): AbstractControl {
- return this.formGroup.get('firstName');
+ ngOnInit(): void {
+ this.employee$ = this.activatedRoute.params.pipe(
+ switchMap((params: { employeeId: string }) => {
+ return this.employeeService.fetchDetailedEmployeeData$(params.employeeId);
+ })
+ );
+
+ this.services$.subscribe(services => {
+ /* this.employeeCurrentServices = services; */
+ });
}
- get lastNameControl(): AbstractControl {
- return this.formGroup.get('lastName');
- }
- get ssnControl(): AbstractControl {
- return this.formGroup.get('ssn');
+
+ updateEmployee(editEmployeeFormData: EditEmployeeFormData): void {
+ console.log(editEmployeeFormData);
}
+
get servicesControl(): AbstractControl {
return this.formGroup.get('services');
}
- get authorizationsControl(): AbstractControl {
- return this.formGroup.get('authorizations');
- }
get formErrors(): { id: string; message: string }[] {
const controlsWithErrors = Object.keys(this.formGroup.controls).filter(
@@ -80,26 +91,25 @@ export class EmployeeFormComponent {
});
}
- toggleAuthorization(authorization: Authorization, checked: boolean): void {
- const currentAuthorizations = this.authorizationsControl.value as { id: unknown }[];
+ toggleService(service: Service, id: string): void {
+ /* //const currentServices = this.servicesControl.value as { id: unknown }[];
+ const selectedServiceObject = this.employeeCurrentServices.find(obj => obj.id === id);
+ const serviceObjectExists = selectedServiceObject
+ ? this.employeeCurrentServices.some(obj => obj.id === selectedServiceObject.id)
+ : false;
- if (checked) {
- this.authorizationsControl.patchValue([...currentAuthorizations, authorization]);
- } else {
- this.authorizationsControl.patchValue(
- currentAuthorizations.filter(currentAuthorization => currentAuthorization.id !== authorization.id)
- );
- }
+ if (!serviceObjectExists && selectedServiceObject !== undefined) {
+ this.employeeCurrentServices.push(selectedServiceObject);
+ } */
}
- toggleService(service: Service, checked: boolean): void {
- const currentServices = this.servicesControl.value as { id: unknown }[];
-
- if (checked) {
- this.servicesControl.patchValue([...currentServices, service]);
- } else {
- this.servicesControl.patchValue(currentServices.filter(currentService => currentService.id !== service.id));
- }
+ unselectService(id: string, service: Service) {
+ /* const selectedServiceObject = this.employeeCurrentServices.find(obj => obj.id === id);
+ const serviceObjectExists = this.employeeCurrentServices?.some(x => (x.id = id));
+ console.log('employeeCurrentServices', this.employeeCurrentServices);
+ if (serviceObjectExists && selectedServiceObject !== undefined) {
+ this.employeeCurrentServices.splice(this.employeeCurrentServices.indexOf(selectedServiceObject), 1);
+ } */
}
openDialog(val: boolean, authName?: string): void {
diff --git a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.module.ts b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.module.ts
index 4919b58..46635fd 100644
--- a/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.module.ts
+++ b/apps/mina-sidor-fa/src/app/pages/administration/pages/employee-form/employee-form.module.ts
@@ -5,6 +5,7 @@ import { DigiNgFormInputModule } from '@af/digi-ng/_form/form-input';
import { DigiNgFormRadiobuttonGroupModule } from '@af/digi-ng/_form/form-radiobutton-group';
import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select';
import { DigiNgPopoverModule } from '@af/digi-ng/_popover/popover';
+import { DigiNgButtonModule } from '@af/digi-ng/_button/button';
import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
@@ -12,14 +13,15 @@ import { RouterModule } from '@angular/router';
import { LayoutModule } from '@msfa-shared/components/layout/layout.module';
import { LocalDatePipeModule } from '@msfa-shared/pipes/local-date/local-date.module';
import { EmployeeFormComponent } from './employee-form.component';
+import { EditEmployeeFormComponent } from './edit-employee-form/edit-employee-form.component';
+import { HideTextModule } from '@msfa-shared/components/hide-text/hide-text.module';
@NgModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA],
- declarations: [EmployeeFormComponent],
+ declarations: [EmployeeFormComponent, EditEmployeeFormComponent],
imports: [
CommonModule,
RouterModule.forChild([{ path: '', component: EmployeeFormComponent }]),
- LayoutModule,
ReactiveFormsModule,
LocalDatePipeModule,
DigiNgFormInputModule,
@@ -29,6 +31,9 @@ import { EmployeeFormComponent } from './employee-form.component';
DigiNgPopoverModule,
DigiNgFormCheckboxModule,
DigiNgDialogModule,
+ DigiNgButtonModule,
+ LayoutModule,
+ HideTextModule,
],
})
export class EmployeeFormModule {}
diff --git a/apps/mina-sidor-fa/src/app/pages/avrop/enums/button-size.enum.ts b/apps/mina-sidor-fa/src/app/pages/avrop/enums/button-size.enum.ts
new file mode 100644
index 0000000..49f047a
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/pages/avrop/enums/button-size.enum.ts
@@ -0,0 +1,5 @@
+export enum ButtonSize {
+ S = 's',
+ M = 'm',
+ L = 'l',
+}
diff --git a/apps/mina-sidor-fa/src/app/shared/models/authorization.model.ts b/apps/mina-sidor-fa/src/app/shared/models/authorization.model.ts
index ad51950..635436b 100644
--- a/apps/mina-sidor-fa/src/app/shared/models/authorization.model.ts
+++ b/apps/mina-sidor-fa/src/app/shared/models/authorization.model.ts
@@ -1,8 +1,6 @@
-import { Authorization as AuthorizationEnum } from '@msfa-enums/authorization.enum';
-
export interface Authorization {
id: string;
- name: AuthorizationEnum;
+ name: string;
}
export interface AuthorizationApiResponse {
@@ -11,7 +9,7 @@ export interface AuthorizationApiResponse {
export interface AuthorizationApiResponseData {
id: string;
- name: AuthorizationEnum;
+ name: string;
}
export function mapAuthorizationApiResponseToAuthorization(data: AuthorizationApiResponseData): Authorization {
diff --git a/mock-api/mina-sidor-fa/scripts/employees.js b/mock-api/mina-sidor-fa/scripts/employees.js
index 6882a73..ec1706e 100644
--- a/mock-api/mina-sidor-fa/scripts/employees.js
+++ b/mock-api/mina-sidor-fa/scripts/employees.js
@@ -31,6 +31,7 @@ function generateEmployees(amount = 10) {
min: 1000,
max: 9999,
})}`,
+ email: '',
roles: hasBehorigheter ? ['Admin'] : [],
tjanst: hasBehorigheter ? currentTjanster.map(tjanst => tjanst.name) : [],
tjansteKoder: hasBehorigheter ? currentTjanster.map(tjanst => tjanst.code) : [],
@@ -38,6 +39,7 @@ function generateEmployees(amount = 10) {
utforandeVerksamhetIds: hasBehorigheter ? currentOrganizations.map(organization => organization.id) : [],
};
+ employee.email = `${employee.firstName}.${employee.lastName}@private-epost.se`.toLowerCase();
employees.push(employee);
}
diff --git a/mock-api/mina-sidor-fa/scripts/generate-api.js b/mock-api/mina-sidor-fa/scripts/generate-api.js
index a4b6d23..9181595 100644
--- a/mock-api/mina-sidor-fa/scripts/generate-api.js
+++ b/mock-api/mina-sidor-fa/scripts/generate-api.js
@@ -11,6 +11,7 @@ import participants from './participants.js';
const generatedEmployees = employees.generate(50);
const generatedDeltagare = deltagare.generate(50);
const generatedAvrop = avrop.generate(10, generatedDeltagare.slice(0, 10));
+const auths = authorizations.generate();
const tjanster = [];
const organizations = [];
const kommuner = [];
@@ -67,6 +68,12 @@ generatedAvrop.forEach(({ tjanstekod, tjansteNamn, utforandeVerksamhetId, utfora
}
});
+generatedEmployees.forEach(employee => {
+ employee.authorizations = [
+ auths[Math.floor(Math.random() * auths.length)],
+ auths[Math.floor(Math.random() * auths.length)],
+ ];
+});
const apiData = {
languages: languages.generate(),
employees: generatedEmployees,
@@ -80,7 +87,7 @@ const apiData = {
employeeId: generatedEmployees[Math.floor(Math.random() * generatedEmployees.length)].id,
})),
currentUser: currentUser.generate(),
- authorizations: authorizations.generate(),
+ authorizations: auths,
getTokenFullAccess: authTokens.auth_code_from_CIAM_with_all_permissions,
invites: [],
};
diff --git a/mock-api/mina-sidor-fa/server.js b/mock-api/mina-sidor-fa/server.js
index 3892c65..33739e1 100644
--- a/mock-api/mina-sidor-fa/server.js
+++ b/mock-api/mina-sidor-fa/server.js
@@ -17,6 +17,7 @@ server.use(
'/employees*onlyEmployeesWithoutAuthorization=*': '/employees$1roles.length_lte=0',
'/employees/invite': '/invites',
'/employees*': '/employees$1',
+ '/services*': '/tjanster$1',
'/participants': '/participants?_embed=employees',
'/participant/:id': '/participants/:id?_embed=employees',
'/auth/userinfo': '/currentUser',