feat(avrop): Added additional functionality to avrop-flow. (TV-411)

Squashed commit of the following:

commit b174dd7480baa5e5e4b7f4bea4c9fc674d344c0c
Merge: e1f9d2d 0661d22
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Thu Aug 26 11:50:11 2021 +0200

    Merged develop and resolved conflicts

commit e1f9d2d49e279e704b760a3cbe45941cdcfb81d9
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Thu Aug 26 11:41:45 2021 +0200

    Now fetching handledare and patching through API

commit cc017fdc6eb5d9620399eee011341a0307fe5658
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Wed Aug 25 16:02:20 2021 +0200

    Updated some functionality

commit 345712842c12af08dd4a956d0d2fdfd2592ab3de
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Wed Aug 25 15:32:22 2021 +0200

    Implmented pagination and select all

commit 95f9be3fae6d3f3b258897be9b78f49442ee0747
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Wed Aug 25 13:03:41 2021 +0200

    Renamed avrop-table instances to avrop-list and avrop-table-row to avrop-row

commit 5f1e11bff74c942e2c8b9e62892f043dc299f612
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Wed Aug 25 12:54:56 2021 +0200

    Added some changes to mock-api related to parameter changes inside avrop

commit 71b199744a31b2a4b8bcaa6870094fd900851030
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Wed Aug 25 12:23:57 2021 +0200

    added qp to avrop requests

commit dc0e34b4971ddfd3d683d482502439b961df8852
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Aug 24 16:02:31 2021 +0200

    Renamed multiple variablenames inside avrop-api

commit 8a4d5471cf637db7d90c6659c893f6841ec9c961
Merge: be9e9b3 50a83f7
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Aug 24 13:57:50 2021 +0200

    Merged develop and fixed conflicts

commit be9e9b323aee76493b5035cd79f6058781ae4c1a
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Aug 24 13:27:16 2021 +0200

    Moved around elements inside avrop component

commit 7ede2d00cd7ed105ef12be88e2ab788841329f00
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Aug 24 09:34:57 2021 +0200

    Moved around some components and other files to match project-structure

commit 7d1396216de643388a5690f2fa2733f127623b6c
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Aug 24 09:04:28 2021 +0200

    Fixed issues with utforande verksamheter model and mock-data

commit 22baca18c25bd4ce8dcc713e91126214882cf017
Merge: 4ba3c1c 59ce393
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Aug 24 08:56:02 2021 +0200

    Merged develop and fixed conflicts

commit 4ba3c1ce9dac206602de9651a98aecfd5857a0e5
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Aug 24 08:48:21 2021 +0200

    Fixed issues with tjanst model and mock-data

commit 50d8c698778fa64cedd4249f6852715d038b450c
Author: Erik Tiekstra <erik.tiekstra@arbetsformedlingen.se>
Date:   Tue Aug 24 08:40:25 2021 +0200

    Fixed issues with kommun-model and mock-data
This commit is contained in:
Erik Tiekstra
2021-08-26 13:46:17 +02:00
parent 0661d2209b
commit 1f26e80cb3
68 changed files with 2331 additions and 1992 deletions

View File

@@ -2,20 +2,20 @@ import faker from 'faker';
import kommuner from './kommuner.js';
import languages from './languages.js';
import organizations from './organizations.js';
import utforandeVerksamheter from './utforande-verksamheter.js';
import tjanster from './tjanster.js';
import utforandeVerksamheter from './utforande-verksamheter.js';
faker.locale = 'sv';
const TJANSTER = tjanster.generate();
const SUPORTLANGUAGES = languages.generate();
const TRACK = ['A', 'B', 'C'];
const TRACK = [{ kod: 'A012SP1', name: 'Nivå A: Kundval Rusta och matcha' }];
const ORGANIZATIONS = organizations.generate();
const UTFORANDEVERKSAMHETER = utforandeVerksamheter.generate();
const KOMMUNER = kommuner.generate();
const FREKVENSER = ['25%', '50%', '75%', '100%'];
function generateAvrop(amount = 10, deltagare) {
function generateAvrop(amount = 10, deltagare, handledare) {
const avrop = [];
for (let i = 1; i <= amount; ++i) {
@@ -25,6 +25,7 @@ function generateAvrop(amount = 10, deltagare) {
const tjanst = TJANSTER[Math.floor(Math.random() * TJANSTER.length)];
const track = TRACK[Math.floor(Math.random() * TRACK.length)];
const currentDeltagare = deltagare[i - 1];
const utforandeAdress = utforandeVerksamhet.adresser[0];
avrop.push({
id: faker.datatype.uuid(),
@@ -37,25 +38,25 @@ function generateAvrop(amount = 10, deltagare) {
organisationsnummer: organization.organizationNumber,
utforandeVerksamhetId: utforandeVerksamhet.utforandeVerksamhetId,
utforandeverksamhet: utforandeVerksamhet.namn,
kommunKod: kommun.kommunCode,
kommun: kommun.kommun,
utforandeAdressId: faker.datatype.number({ min: 10000, max: 99999 }),
adress: `${utforandeVerksamhet.adresser.adressrad}`,
kommunKod: kommun.id,
kommun: kommun.label,
utforandeAdressId: utforandeAdress.adressId,
adress: utforandeAdress.adressrad,
ordernummer: `AKTTEST-${faker.datatype.number({ min: 10000, max: 99999 })}`,
bokningsId: faker.datatype.number({ min: 100000, max: 999999 }),
personnummer: currentDeltagare.personnummer,
sokandeId: currentDeltagare.id,
tjanstekod: tjanst.code,
tjansteNamn: tjanst.name,
tjanstekod: tjanst.id,
tjansteNamn: tjanst.label,
deltagandeGrad: FREKVENSER[Math.floor(Math.random() * FREKVENSER.length)],
startdatumAvrop: faker.date.recent(),
slutdatumAvrop: faker.date.future(),
aktnummerDiariet: `Af-2021/0000 ${faker.datatype.number({ min: 1000, max: 9999 })}`,
tolkbehov: currentDeltagare.translator.sprak.beskrivning,
sprakstod: SUPORTLANGUAGES[Math.floor(Math.random() * SUPORTLANGUAGES.length)].beskrivning,
sparkod: track,
sparNamn: `Nivå ${track}: ${tjanst.name}`,
supervisorId: Math.random() > 0.3 && faker.datatype.uuid(),
sparkod: track.kod,
sparNamn: track.name,
handledareCiamUserId: null,
recievedTimestamp: faker.date.recent(),
});
}

View File

@@ -1,6 +1,6 @@
import faker from 'faker';
import utforandeVerksamheter from './utforande-verksamheter.js';
import tjanster from './tjanster.js';
import utforandeVerksamheter from './utforande-verksamheter.js';
import chooseRandom from './utils/choose-random.util.js';
faker.locale = 'sv';
@@ -36,14 +36,17 @@ function generateEmployees(amount = 10) {
roles: hasBehorigheter
? ['OrganizationUser', ...chooseRandom(ROLES, faker.datatype.number({ min: 1, max: ROLES.length }))]
: ['OrganizationUser'],
tjanst: hasBehorigheter ? currentTjanster.map(tjanst => tjanst.name) : [],
tjansteKoder: hasBehorigheter ? currentTjanster.map(tjanst => tjanst.tjanstekod) : [],
tjanst: hasBehorigheter ? currentTjanster.map(tjanst => tjanst.label) : [],
tjansteKoder: hasBehorigheter ? currentTjanster.map(tjanst => tjanst.id) : [],
allaUtforandeVerksamheter: faker.datatype.boolean(),
utforandeVerksamhet: hasBehorigheter ? currentUtforandeVerksamheter.map(utforandeVerksamhet => utforandeVerksamhet) : [],
utforandeVerksamhetIds: hasBehorigheter ? currentUtforandeVerksamheter.map(utforandeVerksamhet => utforandeVerksamhet.utforandeVerksamhetId) : [],
utforandeVerksamhet: hasBehorigheter
? currentUtforandeVerksamheter.map(utforandeVerksamhet => utforandeVerksamhet)
: [],
utforandeVerksamhetIds: hasBehorigheter
? currentUtforandeVerksamheter.map(utforandeVerksamhet => utforandeVerksamhet.utforandeVerksamhetId)
: [],
};
employee.email = `${employee.firstName}.${employee.lastName}@private-epost.se`.toLowerCase();
employees.push(employee);
}

View File

@@ -4,66 +4,79 @@ import avrop from './avrop.js';
import currentUser from './current-user.js';
import deltagare from './deltagare.js';
import employees from './employees.js';
import handledare from './handledare.js';
import languages from './languages.js';
import participants from './participants.js';
import tjanster from './tjanster.js';
const generatedEmployees = employees.generate(50);
const generatedDeltagare = deltagare.generate(50);
const generatedAvrop = avrop.generate(10, generatedDeltagare.slice(0, 10));
const generatedHandledare = handledare.generate(generatedEmployees.slice(0, 6));
const generatedAvrop = avrop.generate(10, generatedDeltagare.slice(0, 10), generatedHandledare);
const generatedTjanster = tjanster.generate();
const avropTjanster = [];
const organizations = [];
const kommuner = [];
const utforandeVerksamheter = [];
const avropKommuner = [];
generatedAvrop.forEach(({ tjanstekod, tjansteNamn, utforandeVerksamhetId, utforandeverksamhet, kommunKod, kommun }) => {
const tjanstExists = avropTjanster.find(tjanst => tjanst.code === tjanstekod);
const organizationExists = organizations.find(organization => organization.id === utforandeVerksamhetId);
const kommunExists = kommuner.find(kommun => kommun.kommunCode === kommunKod);
const tjanstExists = avropTjanster.find(tjanst => tjanst.id === tjanstekod);
const utforandeVerksamhetExists = utforandeVerksamheter.find(
utforandeVerksamhet => utforandeVerksamhet.id === utforandeVerksamhetId
);
const kommunExists = avropKommuner.find(kommun => kommun.id === kommunKod);
if (tjanstExists) {
if (!tjanstExists.related_utforandeverksamhetIds.includes(utforandeVerksamhetId)) {
tjanstExists.related_utforandeverksamhetIds.push(utforandeVerksamhetId);
tjanstExists.count = tjanstExists.count + 1;
if (!tjanstExists.related_utforandeverksamhetId.includes(utforandeVerksamhetId)) {
tjanstExists.related_utforandeverksamhetId.push(utforandeVerksamhetId);
}
if (!tjanstExists.related_kommunCodes.includes(kommunKod)) {
tjanstExists.related_kommunCodes.push(kommunKod);
if (!tjanstExists.related_kommunKod.includes(kommunKod)) {
tjanstExists.related_kommunKod.push(kommunKod);
}
} else {
avropTjanster.push({
code: tjanstekod,
name: tjansteNamn,
related_utforandeverksamhetIds: [utforandeVerksamhetId],
related_kommunCodes: [kommunKod],
id: tjanstekod,
label: tjansteNamn,
count: 1,
related_utforandeverksamhetId: [utforandeVerksamhetId],
related_kommunKod: [kommunKod],
});
}
if (organizationExists) {
if (!organizationExists.related_tjanstIds.includes(tjanstekod)) {
organizationExists.related_tjanstIds.push(tjanstekod);
if (utforandeVerksamhetExists) {
utforandeVerksamhetExists.count = utforandeVerksamhetExists.count + 1;
if (!utforandeVerksamhetExists.related_tjanstKod.includes(tjanstekod)) {
utforandeVerksamhetExists.related_tjanstKod.push(tjanstekod);
}
if (!organizationExists.related_kommunCodes.includes(kommunKod)) {
organizationExists.related_kommunCodes.push(kommunKod);
if (!utforandeVerksamhetExists.related_kommunKod.includes(kommunKod)) {
utforandeVerksamhetExists.related_kommunKod.push(kommunKod);
}
} else {
organizations.push({
utforandeVerksamheter.push({
id: utforandeVerksamhetId,
name: utforandeverksamhet,
related_tjanstIds: [tjanstekod],
related_kommunCodes: [kommunKod],
label: utforandeverksamhet,
count: 1,
related_tjanstKod: [tjanstekod],
related_kommunKod: [kommunKod],
});
}
if (kommunExists) {
if (!kommunExists.related_tjanstIds.includes(tjanstekod)) {
kommunExists.related_tjanstIds.push(tjanstekod);
kommunExists.count = kommunExists.count + 1;
if (!kommunExists.related_tjanstKod.includes(tjanstekod)) {
kommunExists.related_tjanstKod.push(tjanstekod);
}
if (!kommunExists.related_utforandeverksamhetIds.includes(utforandeVerksamhetId)) {
kommunExists.related_utforandeverksamhetIds.push(utforandeVerksamhetId);
if (!kommunExists.related_utforandeverksamhetId.includes(utforandeVerksamhetId)) {
kommunExists.related_utforandeverksamhetId.push(utforandeVerksamhetId);
}
} else {
kommuner.push({
kommunCode: kommunKod,
kommun,
related_tjanstIds: [tjanstekod],
related_utforandeverksamhetIds: [utforandeVerksamhetId],
avropKommuner.push({
id: kommunKod,
label: kommun,
count: 1,
related_tjanstKod: [tjanstekod],
related_utforandeverksamhetId: [utforandeVerksamhetId],
});
}
});
@@ -74,9 +87,10 @@ const apiData = {
avrop: generatedAvrop,
avropTjanster,
tjanster: generatedTjanster,
organizations,
kommuner,
utforandeVerksamheter,
kommuner: avropKommuner,
deltagare: generatedDeltagare,
handledare: generatedHandledare,
participants: participants.generate(50).map(participant => ({
...participant,
employeeId: generatedEmployees[Math.floor(Math.random() * generatedEmployees.length)].id,

View File

@@ -0,0 +1,21 @@
import faker from 'faker';
faker.locale = 'sv';
function generateHandledare(employees) {
const handledare = [];
employees.forEach(({ name, ciamUserId }) => {
handledare.push({
namn: name,
ciamUserId,
count: faker.datatype.number(20),
});
});
return handledare;
}
export default {
generate: generateHandledare,
};

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@ import faker from 'faker';
faker.locale = 'sv';
function generateOrganizations(amount = 10) {
function generateOrganizations(amount = 4) {
const organizations = [];
for (let i = 1; i <= amount; ++i) {

View File

@@ -16,7 +16,7 @@ function generateParticipants(amount = 10) {
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
status: STATUSES[Math.floor(Math.random() * STATUSES.length)],
service: TJANSTER[Math.floor(Math.random() * TJANSTER.length)].name,
service: TJANSTER[Math.floor(Math.random() * TJANSTER.length)].label,
nextStep: STEPS[Math.floor(Math.random() * STEPS.length)],
errandNumber: faker.datatype.number({ min: 100000, max: 999999 }),
startDate: faker.date.recent(),

View File

@@ -6,19 +6,11 @@ function generateTjanster() {
const tjanster = [
{
id: 'A012',
name: 'Kundval Rusta och matcha',
tjanstekod: 'A012',
tjanstId: 25,
count: 8, // Behövs för avrop-tjanst
label: 'Kundval Rusta och matcha', // Behövs för avrop-tjanst
label: 'Kundval Rusta och matcha',
},
// {
// id: 'KVL',
// name: 'Karriärvägledning',
// tjanstekod: 'KVL',
// tjanstId: 33,
// count: 8, // Behövs för avrop-tjanst
// label: 'Karriärvägledning', // Behövs för avrop-tjanst
// label: 'Karriärvägledning',
// },
];

View File

@@ -10,7 +10,7 @@ function generateUtforandeVerksamheter(amount = 10) {
for (let i = 1; i <= 5; ++i) {
addresses.push({
adressId: faker.datatype.uuid(),
adressrad: faker.address.streetName(),
adressrad: `${faker.address.streetName()} ${faker.datatype.number({ min: 1, max: 999 })}`,
postort: faker.address.city(),
postnummer: faker.address.zipCode(),
});
@@ -23,7 +23,7 @@ function generateUtforandeVerksamheter(amount = 10) {
leverantorNamn: faker.company.companyName(),
tjanstId: faker.datatype.number(10),
tjanst: faker.name.jobTitle(),
adresser: chooseRandom(addresses, faker.datatype.number(4)),
adresser: chooseRandom(addresses, faker.datatype.number({ min: 1, max: addresses.length })),
});
}

View File

@@ -22,9 +22,13 @@ server.use(
'/participant/:id': '/participants/:id?_embed=employees',
'/auth/userinfo': '/currentUser',
'/auth/organizations': '/currentUser',
'/avrop/handledare/assign*': '/avrop$1',
'/avrop/tjanster*': '/avropTjanster$1',
'/avrop/utforandeverksamheter*': '/organizations$1',
'/avrop/handledare*': '/handledare$1',
'/avrop/utforandeverksamheter*': '/utforandeVerksamheter$1',
'/avrop/kommuner*': '/kommuner$1',
'/avrop*utforandeverksamhetId*': '/avrop$1utforandeVerksamhetId$2',
'/avrop*tjanstKod*': '/avrop$1tjanstekod$2',
'/deltagare?*': '/avrop?$1',
'/deltagare/:sokandeId/avrop': '/avrop?sokandeId=:sokandeId',
'/deltagare/:sokandeId/*': '/deltagare/:sokandeId',
@@ -48,6 +52,11 @@ router.render = (req, res) => {
return res.status(401).jsonp({ error: 'No valid access-token' });
}
if (method === 'PATCH') {
// Returning status 204 as this is the same as in the API, BUT we're not actually updating the mock-api
return res.status(204).jsonp();
}
// Return custom error when status is 404.
if (res.statusCode === 404) {
return res.status(404).jsonp({ error: `Can't find path: ${pathname}` });
@@ -91,11 +100,15 @@ router.render = (req, res) => {
if (params) {
const newData = [];
params.forEach((value, key) => {
if (key === 'kommunCodes') {
value = +value;
}
// if (key === 'kommunKod') {
// value = +value;
// }
newData.push(...data.filter(item => item[`related_${key}`].includes(value)));
newData.push(
...data.filter(item => {
return item[`related_${key}`].includes(value);
})
);
});
data = newData.filter((value, index, arr) => arr.findIndex(item => item.code === value.code) === index);
@@ -131,13 +144,13 @@ function appendMetaData(params, res) {
const limit = +params.get('limit');
const page = +params.get('page');
const count = res.get('X-Total-Count');
const totalPages = Math.ceil(count / limit);
const totalPage = Math.ceil(count / limit);
return {
meta: {
count,
limit,
page,
totalPages,
totalPage,
},
};
}