Skip to content

Commit

Permalink
Merge pull request #147 from flaxandteal/fix/excavation-license-number
Browse files Browse the repository at this point in the history
Modify conditions to generate a license number
  • Loading branch information
taylorn01 authored Feb 19, 2024
2 parents 0094d71 + 772b25e commit b7e0925
Show file tree
Hide file tree
Showing 6 changed files with 266 additions and 30 deletions.
31 changes: 27 additions & 4 deletions coral/functions/license_number_function.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@
import datetime
from django.db.models import Max

# ResourceInstance - arches/arches/app/models/models.py
# an example of post_save() - arches/arches/app/models/tile.py


LICENSE_GRAPH_ID = "cc5da227-24e7-4088-bb83-a564c4331efd"

Expand All @@ -23,6 +20,10 @@
STATUS_NODE = "a79fedae-bad5-11ee-900d-0242ac180006"
STATUS_FINAL_VALUE = "8c454982-c470-437d-a9c6-87460b07b3d9"

CUR_D_DECISION_NODEGROUP = "c9f504b4-c42d-11ee-94bf-0242ac180006"
CUR_D_DECISION_NODE = "2a5151f0-c42e-11ee-94bf-0242ac180006"
CUR_D_DECISION_APPROVED_VALUE = "0c888ace-b068-470a-91cb-9e5f57c660b4"

LICENSE_NUMBER_PREFIX = "AE"

details = {
Expand All @@ -31,7 +32,7 @@
"type": "node",
"description": "Automatically generates a new license number after checking the database",
"defaultconfig": {
"triggering_nodegroups": [SYSTEM_REF_NODEGROUP, STATUS_NODEGROUP]
"triggering_nodegroups": [SYSTEM_REF_NODEGROUP, STATUS_NODEGROUP, CUR_D_DECISION_NODEGROUP]
},
"classname": "LicenseNumberFunction",
"component": "",
Expand Down Expand Up @@ -184,7 +185,29 @@ def post_save(self, tile, request, context):
if tile_nodegroup_id == STATUS_NODEGROUP:
if tile.data.get(STATUS_NODE) != STATUS_FINAL_VALUE:
return
try:
cur_d_tile = Tile.objects.get(
resourceinstance_id=resource_instance_id,
nodegroup_id=CUR_D_DECISION_NODEGROUP,
)
if cur_d_tile.data.get(CUR_D_DECISION_NODE) != CUR_D_DECISION_APPROVED_VALUE:
return
except Tile.DoesNotExist:
return

if tile_nodegroup_id == CUR_D_DECISION_NODEGROUP:
if tile.data.get(CUR_D_DECISION_NODE) != CUR_D_DECISION_APPROVED_VALUE:
return
try:
status_tile = Tile.objects.get(
resourceinstance_id=resource_instance_id,
nodegroup_id=STATUS_NODEGROUP,
)
if status_tile.data.get(STATUS_NODE) != STATUS_FINAL_VALUE:
return
except Tile.DoesNotExist:
return

license_number = generate_license_number(resource_instance_id)

if not license_number:
Expand Down
27 changes: 23 additions & 4 deletions coral/media/js/views/components/plugins/licensing-workflow.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ define([
parameters: {
graphid: 'cc5da227-24e7-4088-bb83-a564c4331efd',
nodegroupid: 'b84fa9c6-bad2-11ee-b3f2-0242ac180006',
resourceid: "['init-step']['app-id'][0]['resourceid']['resourceInstanceId']"
resourceid: "['init-step']['app-id'][0]['resourceid']['resourceInstanceId']",
tileid: "['init-step']['app-id'][0]['resourceid']['cmRefTileId']",
}
},
{
Expand Down Expand Up @@ -110,7 +111,8 @@ define([
parameters: {
graphid: 'cc5da227-24e7-4088-bb83-a564c4331efd',
nodegroupid: '4f0f655c-48cf-11ee-8e4e-0242ac140007',
resourceid: "['init-step']['app-id'][0]['resourceid']['resourceInstanceId']"
resourceid: "['init-step']['app-id'][0]['resourceid']['resourceInstanceId']",
tileid: "['init-step']['app-id'][0]['resourceid']['applicationDetailsTileId']"
}
}
]
Expand Down Expand Up @@ -324,7 +326,7 @@ define([
}
},
{
componentName: 'default-card',
componentName: 'fetch-generated-license-number',
uniqueInstanceName: 'grade-d-decision',
tilesManaged: 'one',
parameters: {
Expand All @@ -345,6 +347,23 @@ define([
parenttileid: "['init-step']['app-id'][0]['resourceid']['decisionTileId']"
}
},
{
componentName: 'fetch-generated-license-number',
uniqueInstanceName: 'application-details',
tilesManaged: 'one',
parameters: {
graphid: 'cc5da227-24e7-4088-bb83-a564c4331efd',
nodegroupid: '4f0f655c-48cf-11ee-8e4e-0242ac140007',
resourceid: "['init-step']['app-id'][0]['resourceid']['resourceInstanceId']",
tileid: "['init-step']['app-id'][0]['resourceid']['applicationDetailsTileId']",
hiddenNodes: [
"777596ba-48cf-11ee-8e4e-0242ac140007",
"aec103a2-48cf-11ee-8e4e-0242ac140007",
"c2f40174-5dd5-11ee-ae2c-0242ac120008",
"3ff6e2ce-cf35-11ee-a12a-0242ac180006"
]
}
},
{
componentName: 'default-card',
uniqueInstanceName: 'license-number',
Expand All @@ -362,7 +381,7 @@ define([
graphid: 'cc5da227-24e7-4088-bb83-a564c4331efd',
nodegroupid: 'b84fa9c6-bad2-11ee-b3f2-0242ac180006',
resourceid: "['init-step']['app-id'][0]['resourceid']['resourceInstanceId']",
tileid: "['app-details-step']['cm-reference'][0]['tileId']"
tileid: "['init-step']['app-id'][0]['resourceid']['cmRefTileId']",
}
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,15 @@ define([
'js-cookie'
], function (_, ko, koMapping, uuid, arches, componentTemplate, AlertViewModel, Cookies) {
function viewModel(params) {
this.LICENSE_NUMBER_NODE = '9a9e198c-c502-11ee-af34-0242ac180006';

this.STATUS_NODEGROUP = '4f0f655c-48cf-11ee-8e4e-0242ac140007';
this.STATUS_NODE = 'a79fedae-bad5-11ee-900d-0242ac180006';
this.STATUS_FINAL_VALUE = '8c454982-c470-437d-a9c6-87460b07b3d9';
this.LICENSE_NUMBER_NODE = '9a9e198c-c502-11ee-af34-0242ac180006';

this.CUR_D_DECISION_NODEGROUP = 'c9f504b4-c42d-11ee-94bf-0242ac180006';
this.CUR_D_DECISION_NODE = '2a5151f0-c42e-11ee-94bf-0242ac180006';
this.CUR_D_DECISION_APPROVED_VALUE = '0c888ace-b068-470a-91cb-9e5f57c660b4';

const self = this;

Expand All @@ -37,6 +43,22 @@ define([
}
};

this.fetchStatusTile = async () => {
const tiles = await this.fetchTileData(this.resourceId(), this.STATUS_NODE);

if (tiles.length === 1) {
return tiles[0];
}
};

this.fetchDecisionTile = async () => {
const tiles = await this.fetchTileData(this.resourceId(), this.CUR_D_DECISION_NODE);

if (tiles.length === 1) {
return tiles[0];
}
};

this.getWorkflowHistoryData = async function (workflowid) {
const response = await fetch(arches.urls.workflow_history + workflowid, {
method: 'GET',
Expand Down Expand Up @@ -99,18 +121,44 @@ define([
};

this.processLicenseNumberTile = async () => {
if (self.tile().data[this.STATUS_NODE]() !== this.STATUS_FINAL_VALUE) {
let tile = null;
switch (self.tile().nodegroup_id) {
case this.STATUS_NODEGROUP:
if (self.tile().data[this.STATUS_NODE]() !== this.STATUS_FINAL_VALUE) {
params.form.complete(true);
params.form.saving(false);
return;
}
tile = await this.fetchDecisionTile();
if (!tile || tile.data[this.CUR_D_DECISION_NODE] !== this.CUR_D_DECISION_APPROVED_VALUE) {
params.form.complete(true);
params.form.saving(false);
return;
}
break;
case this.CUR_D_DECISION_NODEGROUP:
if (self.tile().data[this.CUR_D_DECISION_NODE]() !== this.CUR_D_DECISION_APPROVED_VALUE) {
params.form.complete(true);
params.form.saving(false);
return;
}
tile = await this.fetchStatusTile();
if (!tile || tile.data[this.STATUS_NODE] !== this.STATUS_FINAL_VALUE) {
params.form.complete(true);
params.form.saving(false);
return;
}
break;
}

const licenseNumberTile = await this.fetchLicenseNumberTile();
if (!licenseNumberTile) {
params.form.complete(true);
params.form.saving(false);
return;
}

const licenseNumberTile = await this.fetchLicenseNumberTile();
if (!licenseNumberTile) return;

await this.storeLicenseNumberTile(licenseNumberTile);

let licenseNumber =
const licenseNumber =
licenseNumberTile.data[this.LICENSE_NUMBER_NODE][arches.activeLanguage].value;

params.pageVm.alert(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ define([
self.actResourceId = params.form.savedData()?.activityResourceId;
self.licenseNameTileId = params.form.savedData()?.licenseNameTileId;
self.decisionTileId = params.form.savedData()?.decisionTileId;
self.applicationDetailsTileId = params.form.savedData()?.applicationDetailsTileId;
self.cmRefTileId = params.form.savedData()?.cmRefTileId;
// self.licenseNumberTileId = params.form.savedData()?.licenseNumberTileId;
self.applicationId = '';

Expand Down Expand Up @@ -54,7 +56,9 @@ define([
// getLicenseRefTileId(),
saveActivityLocation(),
saveRelationship(),
saveDecisionTile()
saveDecisionTile(),
saveApplicationDetailsTile(),
saveCmRefTile()
]);
if (responses.every((response) => response.ok)) {
params.form.savedData({
Expand All @@ -67,6 +71,8 @@ define([
activityResourceId: self.actResourceId,
activityLocationTileId: self.activityLocationTileId,
decisionTileId: self.decisionTileId,
applicationDetailsTileId: self.applicationDetailsTileId,
cmRefTileId: self.cmRefTileId,

// licenseNumberTileId: self.licenseNumberTileId
});
Expand Down Expand Up @@ -295,6 +301,84 @@ define([
}
};

const saveApplicationDetailsTile = async () => {
const tileTemplate = {
tileid: '',
data: {
'3ff6e2ce-cf35-11ee-a12a-0242ac180006': null,
'777596ba-48cf-11ee-8e4e-0242ac140007': 'daa4cddc-8636-4842-b836-eb2e10aabe18',
'916b5e7e-48cf-11ee-8e4e-0242ac140007': '6fbe3775-e51d-4f90-af53-5695dd204c9a',
'a79fedae-bad5-11ee-900d-0242ac180006': null,
'aec103a2-48cf-11ee-8e4e-0242ac140007': null,
'b407df02-bad5-11ee-900d-0242ac180006': 'c9bc15cc-46fe-4d34-a530-a228854845c8',
'c2f40174-5dd5-11ee-ae2c-0242ac120008': null
},
nodegroup_id: '4f0f655c-48cf-11ee-8e4e-0242ac140007',
parenttile_id: null,
resourceinstance_id: self.resourceId(),
sortorder: 0
};

if (!self.applicationDetailsTileId) {
self.applicationDetailsTileId = uuid.generate();
} else {
tileTemplate.tileid = self.applicationDetailsTileId;
}

const tile = await window.fetch(arches.urls.api_tiles(self.applicationDetailsTileId), {
method: 'POST',
credentials: 'include',
body: JSON.stringify(tileTemplate),
headers: {
'Content-Type': 'application/json'
}
});

if (tile?.ok) {
const tileJson = await tile.json();
self.applicationDetailsTileId = tileJson.tileid;
return tile;
}
};

const saveCmRefTile = async () => {
const tileTemplate = {
tileid: '',
data: {
'b84fb006-bad2-11ee-b3f2-0242ac180006': '6fbe3775-e51d-4f90-af53-5695dd204c9a',
'b84fb182-bad2-11ee-b3f2-0242ac180006': null,
'b84fb2fe-bad2-11ee-b3f2-0242ac180006': null,
'b84fb466-bad2-11ee-b3f2-0242ac180006': 'daa4cddc-8636-4842-b836-eb2e10aabe18',
'b84fb5e2-bad2-11ee-b3f2-0242ac180006': '19afd557-cc21-44b4-b1df-f32568181b2c'
},
nodegroup_id: 'b84fa9c6-bad2-11ee-b3f2-0242ac180006',
parenttile_id: null,
resourceinstance_id: self.resourceId(),
sortorder: 0
};

if (!self.cmRefTileId) {
self.cmRefTileId = uuid.generate();
} else {
tileTemplate.tileid = self.cmRefTileId;
}

const tile = await window.fetch(arches.urls.api_tiles(self.cmRefTileId), {
method: 'POST',
credentials: 'include',
body: JSON.stringify(tileTemplate),
headers: {
'Content-Type': 'application/json'
}
});

if (tile?.ok) {
const tileJson = await tile.json();
self.cmRefTileId = tileJson.tileid;
return tile;
}
};

const saveRelationship = async () => {
const activityNodeNodeGroup = 'a9f53f00-48b6-11ee-85af-0242ac140007';
const licenseActivityTileTemplate = {
Expand Down
Loading

0 comments on commit b7e0925

Please sign in to comment.