From 5f948f3bdfe971ead465c896cc1bb6ba711f4ef0 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Tue, 10 Dec 2024 15:07:01 -0800 Subject: [PATCH 01/28] AB#26819 - still very much in experiment phase --- .../Intake/BasicIntakeMappingTests.cs | 8 +- .../Intake/Mapping/basicReportSchema.json | 20613 ++++++++++++++++ .../Intake/Mapping/reportingFieldsSchema.json | 18019 ++++++++++++++ .../Mapping/reportingFieldsSubmission.json | 18359 ++++++++++++++ .../Intake/Mapping/tableReportSchema.json | 1717 ++ .../Intake/Mapping/tableReportSubmission.json | 1854 ++ .../Intake/ReportSchemaGenerationTests.cs | 218 + .../Unity.GrantManager.Domain.Tests.csproj | 15 + 8 files changed, 60800 insertions(+), 3 deletions(-) create mode 100644 applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/basicReportSchema.json create mode 100644 applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/reportingFieldsSchema.json create mode 100644 applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/reportingFieldsSubmission.json create mode 100644 applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/tableReportSchema.json create mode 100644 applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/tableReportSubmission.json create mode 100644 applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/ReportSchemaGenerationTests.cs diff --git a/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/BasicIntakeMappingTests.cs b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/BasicIntakeMappingTests.cs index 0c9b76747..229e6e833 100644 --- a/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/BasicIntakeMappingTests.cs +++ b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/BasicIntakeMappingTests.cs @@ -3,6 +3,7 @@ using NSubstitute; using Shouldly; using System; +using System.Collections.Generic; using System.IO; using Unity.GrantManager.Applications; using Unity.GrantManager.Intakes; @@ -36,8 +37,8 @@ public BasicIntakeMappingTests() [InlineData("basicdatagrid.json", 2)] [InlineData("panelinpaneldatagrid.json", 1)] public void TestBasicDataGridMapping(string filename, int expectedDatagridCount) - { - dynamic? formMapping = LoadTestData(filename); + { + dynamic? formMapping = LoadTestData(filename); string result = _intakeFormSubmissionMapper.InitializeAvailableFormFields(formMapping); result.ShouldNotBeNull(); @@ -52,7 +53,8 @@ public void TestBasicDataGridMapping(string filename, int expectedDatagridCount) datagridCount++; } } + Assert.Equal(expectedDatagridCount, datagridCount); - } + } } } diff --git a/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/basicReportSchema.json b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/basicReportSchema.json new file mode 100644 index 000000000..7ac7baf69 --- /dev/null +++ b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/basicReportSchema.json @@ -0,0 +1,20613 @@ +{ + "id": "61b6da41-a160-44a1-9110-dd3a34c4d3d4", + "formId": "719f2935-6138-48f0-ae1d-9849039f7c34", + "version": 1, + "schema": { + "type": "form", + "display": "form", + "components": [ + { + "id": "ecp79n", + "key": "applicantAgent", + "type": "hidden", + "input": true, + "label": "Please include this component for all Unity forms.", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "hidden", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "value = token", + "calculateServer": true, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eejiiw", + "key": "tabs", + "tags": [], + "tree": false, + "type": "tabs", + "input": false, + "label": "Tabs", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "key": "tab1", + "label": "1. INTRODUCTION", + "components": [ + { + "id": "evz7r1a", + "key": "html", + "tag": "p", + "tags": [], + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "overview", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "\r\n\r\nREDIP Application \r\n\r\n\r\n

Overview

\r\n

Stream 1-REDIP-EC: Economic Capacity

(Max. $100,000; up to 100% of eligible project costs)

\r\n", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "className": "", + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "er6xsyx", + "key": "instructions", + "html": "

PLEASE READ THE RURAL ECONOMIC DIVERSIFICATION AND INFRASTRUCTURE PROGRAM (REDIP) PROGRAM GUIDE before completing this application form. It is important to review the applicant, project and cost eligibility criteria. The REDIP Program Guide also includes an application scoring rubric for your reference.

This application form opened July 4, 2024 and will close on October 31, 2024 (11:59PM PST). Applications will not be accepted after this date. 

If you require technical support please contact program staff as soon as possible, before the application deadline (contact information provided below). 

How to save your progress: This application form will not time out. While you are working on the form, you can save your progress by clicking the blue diskette icon in the top righthand corner of the screen. Upon saving, you can exit the application and log back in at a later time. In \"My Forms\" you will see a list of your drafts, choose the most recent draft to continue editing.

Formatting: All text field questions can be answered in bullet form. Bullet lists can either be copy/pasted from your practice Word doc application, or you can use dashes to type your list into the text field directly. 

After submission: Upon submitting your application, you will receive an email with a link to view it in your web browser. The email will also contain a submission confirmation number. If you would like a PDF copy of your submitted application, please contact program staff at ruraldevelopment@gov.bc.ca and provide your submission confirmation number.

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e851t9", + "key": "contactInfo", + "html": "

REDIP Contact Information 

Rural Policy and Programs Branch 

Phone: (250) 356-7950  

Email: ruraldevelopment@gov.bc.ca  

Website: gov.bc.ca/REDIP  

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eslxu6f", + "key": "columns7", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "eze46li", + "key": "table13", + "rows": [ + [ + { + "components": [] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "enpcvwb", + "key": "table14", + "rows": [ + [ + { + "components": [ + { + "id": "eu3um5h", + "key": "next6", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "Eligibility", + "label": "2. ELIGIBILITY", + "components": [ + { + "id": "e7sism", + "key": "pleaseConfirmYourEligibility", + "html": "

*PLEASE CONFIRM YOUR ELIGIBILITY PRIOR TO COMPLETING THE REMAINDER OF THE APPLICATION* 

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ea19hb", + "key": "eligibilityCriteriaEC", + "html": "

This application is for the Economic Capacity stream: Building capacity in small rural communities and Indigenous communities.  

Please confirm you are eligible to apply for the Economic Capacity stream. 

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "edm63fb", + "key": "acceptanceOfEligibilityCriteria", + "name": "", + "type": "simplecheckbox", + "input": true, + "label": "I have read the eligibility criteria above and I am eligible to apply.", + "value": "", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "Confirmation is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "right", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ea7i129", + "key": "_confirmedScopingCall", + "name": "", + "type": "simplecheckbox", + "input": true, + "label": "Optional: I have spoken with REDIP staff or a Regional Manager about my project prior to applying.", + "value": "", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "This question is optional.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "right", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "emj3h", + "key": "columns8", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ef16vw", + "key": "table15", + "rows": [ + [ + { + "components": [ + { + "id": "ekf5pp8", + "key": "previous6", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e9vz49p", + "key": "table16", + "rows": [ + [ + { + "components": [ + { + "id": "ece7ev", + "key": "next7", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "applicantContactInformation", + "label": "3. APPLICANT CONTACT INFORMATION ", + "components": [ + { + "id": "e9d2m6", + "key": "_organizationName", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Organization Name", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eb2mlk", + "key": "headerPrimaryContact", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "HTML", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "\r\n\r\nREDIP\r\n\r\n\r\n

Primary Contact

\r\n\r\n", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "epps3ws", + "key": "_ContactName", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Primary Contact - Full Name", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Who should program staff contact if they have questions about this application?", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ea2h4r7", + "key": "_contactTitle", + "data": { + "url": "", + "json": "", + "custom": "", + "values": [ + { + "label": "Band Manager", + "value": "Band Manager" + }, + { + "label": "Chief", + "value": "Chief" + }, + { + "label": "Chief Executive Officer", + "value": "Chief Executive Officer" + }, + { + "label": "Chief Financial Officer (CFO)", + "value": "Chief Financial Officer (CFO)" + }, + { + "label": "Chief Human Resources Officer (CHRO)", + "value": "Chief Human Resources Officer (CHRO)" + }, + { + "label": "Chief Information Officer (CIO)", + "value": "Chief Information Officer (CIO)" + }, + { + "label": "Chief Marketing Officer (CMO)", + "value": "Chief Marketing Officer (CMO)" + }, + { + "label": "Chief Operating Officer (COO)", + "value": "Chief Operating Officer (COO)" + }, + { + "label": "Chief Technology Officer (CTO)", + "value": "Chief Technology Officer (CTO)" + }, + { + "label": "Consultant", + "value": "Consultant" + }, + { + "label": "Director of Operations", + "value": "Director of Operations" + }, + { + "label": "Economic Development Officer", + "value": "Economic Development Officer" + }, + { + "label": "Executive Director", + "value": "Executive Director" + }, + { + "label": "General Manager", + "value": "General Manager" + }, + { + "label": "Grant Writer", + "value": "Grant Writer" + }, + { + "label": "Managing Director", + "value": "Managing Director" + }, + { + "label": "President", + "value": "President" + }, + { + "label": "Program Director", + "value": "Program Director" + }, + { + "label": "Project Manager", + "value": "Project Manager" + }, + { + "label": "Other (Please Specify)", + "value": "Other" + } + ], + "resource": "" + }, + "tags": [], + "type": "simpleselectadvanced", + "input": true, + "label": "Primary Contact Title", + "limit": 100, + "logic": [], + "addons": [], + "errors": "", + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dataType": "", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": "", + "selectFields": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "refreshOnBlur": "", + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eg1jux", + "key": "otherContactTitle", + "case": "", + "mask": false, + "tags": [], + "type": "simpletextfieldadvanced", + "input": true, + "label": "Other 'Contact Title' (Please specify)", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "Other", + "json": "", + "show": true, + "when": "_contactTitle" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e5sqyz", + "key": "_contactEmail", + "case": "", + "mask": false, + "tags": [], + "type": "simpleemailadvanced", + "input": true, + "label": "Primary Contact - Email", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "kickbox": { + "enabled": false + }, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "email", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ex722um", + "key": "_contactPhoneNumberPrimary", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Primary Contact - Phone Number (Primary)", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ea2s0gg", + "key": "_contactPhoneNumberSecondary", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Primary Contact - Phone Number (Secondary)", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ezdbswo", + "key": "consentToReceiveEmailCommunications", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "In the future, would the primary contact person like to be informed about our programs via email communications?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "This field is optional.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ehwnuh", + "key": "_mailingAddressStreet1", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Mailing Address (Line 1)", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 200, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eiywkz", + "key": "_mailingAddressUnit", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Mailing Address (Unit Number or PO Box) ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e32yg2f", + "key": "_mailingAddressCity", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Mailing Address (City)", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eeripcc", + "key": "_mailingAddressProvince", + "data": { + "url": "", + "json": "", + "custom": "", + "values": [ + { + "label": "Alberta", + "value": "Alberta" + }, + { + "label": "British Columbia", + "value": "British Columbia" + }, + { + "label": "Manitoba", + "value": "Manitoba" + }, + { + "label": "New Brunswick", + "value": "New Brunswick" + }, + { + "label": "Newfoundland", + "value": "Newfoundland" + }, + { + "label": "Northwest Territories", + "value": "Northwest Territories" + }, + { + "label": "Nova Scotia", + "value": "Nova Scotia" + }, + { + "label": "Nunavut", + "value": "Nunavut" + }, + { + "label": "Ontario", + "value": "Ontario" + }, + { + "label": "Prince Edward Island", + "value": "Prince Edward Island" + }, + { + "label": "Quebec", + "value": "Quebec" + }, + { + "label": "Saskatchewan", + "value": "Saskatchewan" + }, + { + "label": "Yukon", + "value": "Yukon" + } + ], + "resource": "" + }, + "tags": [], + "type": "simpleselectadvanced", + "input": true, + "label": "Mailing Address (Province)", + "limit": 100, + "logic": [], + "addons": [], + "errors": "", + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dataType": "string", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": "British Columbia", + "selectFields": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "refreshOnBlur": "", + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ey6hwyq", + "key": "_mailingAddressCountry", + "case": "", + "mask": false, + "tags": [], + "type": "simpletextfieldadvanced", + "input": true, + "label": "Mailing Address (Country)", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "Canada", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ecy7n3ms", + "key": "_mailingAddressPostalCode", + "case": "", + "mask": false, + "tags": [], + "type": "simpletextfieldadvanced", + "input": true, + "label": "Mailing Address (Postal Code)", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "A9A 9A9", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false, + "inputMaskPlaceholderChar": "" + }, + { + "id": "e1c659gb", + "key": "pleaseAttachYourDirectDepositApplicationForm", + "url": "/files", + "type": "simplefile", + "image": false, + "input": true, + "label": "Please attach your direct deposit application form:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "webcam": false, + "widget": null, + "dbIndex": false, + "fileKey": "files", + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "storage": "chefs", + "tooltip": "This form can be found in 'Program Documents' on gov.bc.ca/REDIP.\r\nIf selected for funding, this form will ensure you are set up to receive payment via direct deposit.", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "The direct deposit application form is a mandatory attachment.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fileTypes": [ + { + "label": "", + "value": "" + } + ], + "hideLabel": false, + "imageSize": "200", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "uploadOnly": false, + "validateOn": "change", + "webcamSize": 320, + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "formio-component-file", + "description": "", + "fileMaxSize": "1GB", + "fileMinSize": "0KB", + "filePattern": "*", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "privateDownload": false, + "fileNameTemplate": "{{fileName}}", + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ek905pr", + "key": "headerFinancialDecisionMakingAuthority", + "tag": "p", + "tags": [], + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "HTML", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "\r\n\r\nREDIP\r\n\r\n\r\n

Financial/Decision Making Authority

\r\n\r\n", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "className": "", + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ekycxvh", + "key": "_signingAuthorityName", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Signing Authority - Full Name", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Who will sign the contribution agreement if the project is selected for funding?", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eqtbcg", + "key": "_signingAuthorityTitle", + "data": { + "url": "", + "json": "", + "custom": "", + "values": [ + { + "label": "Band Manager", + "value": "Band Manager" + }, + { + "label": "Chief", + "value": "Chief" + }, + { + "label": "Chief Executive Officer", + "value": "Chief Executive Officer" + }, + { + "label": "Chief Financial Officer (CFO)", + "value": "Chief Financial Officer (CFO)" + }, + { + "label": "Chief Human Resources Officer (CHRO)", + "value": "Chief Human Resources Officer (CHRO)" + }, + { + "label": "Chief Information Officer (CIO)", + "value": "Chief Information Officer (CIO)" + }, + { + "label": "Chief Marketing Officer (CMO)", + "value": "Chief Marketing Officer (CMO)" + }, + { + "label": "Chief Operating Officer (COO)", + "value": "Chief Operating Officer (COO)" + }, + { + "label": "Chief Technology Officer (CTO)", + "value": "Chief Technology Officer (CTO)" + }, + { + "label": "Consultant", + "value": "Consultant" + }, + { + "label": "Director of Operations", + "value": "Director of Operations" + }, + { + "label": "Economic Development Officer", + "value": "Economic Development Officer" + }, + { + "label": "Executive Director", + "value": "Executive Director" + }, + { + "label": "General Manager", + "value": "General Manager" + }, + { + "label": "Grant Writer", + "value": "Grant Writer" + }, + { + "label": "Managing Director", + "value": "Managing Director" + }, + { + "label": "President", + "value": "President" + }, + { + "label": "Program Director", + "value": "Program Director" + }, + { + "label": "Project Manager", + "value": "Project Manager" + }, + { + "label": "Other (Please Specify)", + "value": "Other" + } + ], + "resource": "" + }, + "tags": [], + "type": "simpleselectadvanced", + "input": true, + "label": "Signing Authority Title", + "limit": 100, + "logic": [], + "addons": [], + "errors": "", + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dataType": "", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": "", + "selectFields": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "refreshOnBlur": "", + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ez5nj6n", + "key": "otherSigningAuthorityTitle", + "case": "", + "mask": false, + "tags": [], + "type": "simpletextfieldadvanced", + "input": true, + "label": "Other 'Signing Authority Title' - please specify.", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "Other", + "json": "", + "show": true, + "when": "_signingAuthorityTitle" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eftw81b", + "key": "_signingAuthorityEmail", + "case": "", + "mask": false, + "tags": [], + "type": "simpleemailadvanced", + "input": true, + "label": "Signing Authority - Business Email", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "kickbox": { + "enabled": false + }, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "email", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e8m9onvm", + "key": "_signingAuthorityPhoneNumberPrimary", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Signing Authority - Business Phone Number (Primary)", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eyteuor", + "key": "_signingAuthorityPhoneNumberSecondary", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Signing Authority - Business Phone Number (Secondary)", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "Please provide a secondary business phone number for the Signing Authority.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "emmtsai", + "key": "columns9", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e5qnjbd", + "key": "table17", + "rows": [ + [ + { + "components": [ + { + "id": "eezfhyh", + "key": "previous7", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "elxvfue", + "key": "table18", + "rows": [ + [ + { + "components": [ + { + "id": "e2ocmf9", + "key": "next8", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "applicantInformation", + "label": "4. APPLICANT INFORMATION ", + "components": [ + { + "id": "eqmsgab", + "key": "whoIsTheLeadApplicantForThisProject", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Who is the lead applicant for this project?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Local Government", + "value": "Local Government", + "shortcut": "" + }, + { + "label": "Regional District", + "value": "Regional District", + "shortcut": "" + }, + { + "label": "Indigenous Government", + "value": "Indigenous Government", + "shortcut": "" + }, + { + "label": "Indigenous Development Corporation", + "value": "Indigenous Development Corporation", + "shortcut": "" + }, + { + "label": "Indigenous Not For Profit", + "value": "Indigenous Not For Profit", + "shortcut": "" + }, + { + "label": "Not For Profit", + "value": "Not For Profit", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": false, + "customMessage": "Please select an organization type for the lead applicant.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e1n778b", + "key": "keyEconomicDevelopmentPrioritiesOrGoals", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Please tell us about your organization and describe any key economic development priorities or goals.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 Words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "excsmfo", + "key": "areThereProjectPartners", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Are there project partners? ", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Partners must play an active role in project delivery. A Partnership Letter must be submitted from each partner listed, outlining their awareness of the REDIP application and the role that they will play.\r\nOther funding sources do not need to be listed as project partners if funding is their only contribution to the project. ", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "eksqjwg", + "key": "whoAreTheProjectPartners", + "data": { + "url": "" + }, + "type": "simplecheckboxes", + "input": true, + "label": "Who are the project partners? (Maximum 2 partners) ", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "​​Local Government", + "value": "localGovernment", + "shortcut": "" + }, + { + "label": "Indigenous Community or Organization", + "value": "indigenousCommunityOrOrganization", + "shortcut": "" + }, + { + "label": "​​​Regional District", + "value": "regionalDistrict", + "shortcut": "" + }, + { + "label": "Indigenous Development Corporation", + "value": "indigenousDevelopmentCorporation", + "shortcut": "" + }, + { + "label": "Industry Organization", + "value": "industryOrganization", + "shortcut": "" + }, + { + "label": "Not-For-Profit Organization", + "value": "notForProfitOrganization", + "shortcut": "" + }, + { + "label": "Business", + "value": "business", + "shortcut": "" + }, + { + "label": "Non-Indigenous Development Corporation", + "value": "nonIndigenousDevelopmentCorporation", + "shortcut": "" + }, + { + "label": "Community Foundation", + "value": "communityFoundation", + "shortcut": "" + }, + { + "label": "Post-Secondary Institution", + "value": "postSecondaryInstitution", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "maxSelectedCount": 2, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": { + "Business": false, + "business": false, + "localGovernment": false, + "regionalDistrict": false, + "federalGovernment": false, + "Federal Government": false, + "communityFoundation": false, + "Community Foundation": false, + "industryOrganization": false, + "provincialGovernment": false, + "Industry Organization": false, + "Provincial Government": false, + "​​Local Government": false, + "notForProfitOrganization": false, + "postSecondaryInstitution": false, + "Post-Secondary Institution": false, + "​​​Regional District": false, + "Not For Profit Organization": false, + "indigenousDevelopmentCorporation": false, + "indigenousCommunityOrOrganization": false, + "Indigenous Development Corporation": false, + "nonIndigenousDevelopmentCorporation": false, + "Indigenous Community or Organization": false, + "Non-Indigenous Development Corporation": false + }, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false, + "maxSelectedCountMessage": "", + "minSelectedCountMessage": "" + }, + { + "id": "ejcdjib", + "key": "hiddenWhoAreTheProjectPartners", + "tags": [], + "type": "hidden", + "input": true, + "label": "Hidden - Who are the project partners?", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "hidden", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var values = [];\r\nvar redip = data.whoAreTheProjectPartners;\r\nif (redip) {\r\n if (redip.localGovernment) values.push(\"​​Local Government\");\r\n if (redip.provincialGovernment) values.push(\"Provincial Government\");\r\n if (redip.federalGovernment) values.push(\"Federal Government\");\r\n if (redip.indigenousCommunityOrOrganization) values.push(\"Indigenous Community or Organization\");\r\n if (redip.regionalDistrict) values.push(\"​​​Regional District\");\r\n if (redip.indigenousDevelopmentCorporation) values.push(\"Indigenous Development Corporation\");\r\n if (redip.industryOrganization) values.push(\"​​Industry Organization\");\r\n if (redip.notForProfitOrganization) values.push(\"Not For Profit Organization\");\r\n if (redip.business) values.push(\"Business\");\r\n if (redip.nonIndigenousDevelopmentCorporation) values.push(\"Non-Indigenous Development Corporation\");\r\n if (redip.communityFoundation) values.push(\"Community Foundation\");\r\n if (redip.postSecondaryInstitution) values.push(\"Post-Secondary Institution\");\r\n}\r\nvar value = values.join(\"; \");", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e31ikrn", + "key": "provideTheNameAndContactInformationForTheTwoMostSignificantProjectPartners", + "tag": "p", + "tags": [], + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": " Project Partners", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "\r\n\r\nREDIP\r\n\r\n\r\n

Please provide the name and contact information for the two most significant project partners.

\r\n\r\n", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "className": "", + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ejb0e7a", + "key": "headerProjectPartner1", + "tag": "p", + "tags": [], + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Project Partner 1", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "\r\n\r\nREDIP\r\n\r\n\r\n

Project Partner 1

\r\n\r\n", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "className": "", + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ep7hdklj", + "key": "_partner1OrganizationName", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Partner Organization Name", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eaf9cpv", + "key": "partner1Location", + "data": { + "url": "https://unity-chefs-data.apps.silver.devops.gov.bc.ca/reference/common/locations-simple.json", + "json": "", + "custom": "", + "values": [ + { + "label": "", + "value": "" + } + ], + "headers": [ + { + "key": "", + "value": "" + } + ], + "resource": "" + }, + "type": "simpleselectadvanced", + "input": true, + "label": "Partner Location", + "limit": 100, + "addons": [], + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "url", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dataType": "auto", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.name }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": null, + "disableLimit": true, + "selectFields": "", + "selectValues": "locations", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "noRefreshOnScroll": false, + "allowMultipleMasks": false, + "customDefaultValue": "value = name", + "allowCalculateOverride": false + }, + { + "id": "edsbzgi", + "key": "_hiddenPartner1Location", + "tags": [], + "type": "hidden", + "input": true, + "label": "Hidden - Location: Project Partner 1", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "hidden", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var value = data.partner1Location ? data.partner1Location.name : undefined;", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e82ttg7", + "key": "_partner1PrimaryContactName", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Partner 1: Contact - First and Last Name", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eg8gw5a", + "key": "_partner1TitleOfPrimaryContact", + "data": { + "url": "", + "json": "", + "custom": "", + "values": [ + { + "label": "Band Manager", + "value": "Band Manager" + }, + { + "label": "Chief", + "value": "Chief" + }, + { + "label": "Chief Executive Officer", + "value": "Chief Executive Officer" + }, + { + "label": "Chief Financial Officer (CFO)", + "value": "Chief Financial Officer (CFO)" + }, + { + "label": "Chief Human Resources Officer (CHRO)", + "value": "Chief Human Resources Officer (CHRO)" + }, + { + "label": "Chief Information Officer (CIO)", + "value": "Chief Information Officer (CIO)" + }, + { + "label": "Chief Marketing Officer (CMO)", + "value": "Chief Marketing Officer (CMO)" + }, + { + "label": "Chief Operating Officer (COO)", + "value": "Chief Operating Officer (COO)" + }, + { + "label": "Chief Technology Officer (CTO)", + "value": "Chief Technology Officer (CTO)" + }, + { + "label": "Consultant", + "value": "Consultant" + }, + { + "label": "Director of Operations", + "value": "Director of Operations" + }, + { + "label": "Economic Development Officer", + "value": "Economic Development Officer" + }, + { + "label": "Executive Director", + "value": "Executive Director" + }, + { + "label": "General Manager", + "value": "General Manager" + }, + { + "label": "Grant Writer", + "value": "Grant Writer" + }, + { + "label": "Managing Director", + "value": "Managing Director" + }, + { + "label": "President", + "value": "President" + }, + { + "label": "Principal Investigator", + "value": "Principal Investigator" + }, + { + "label": "Program Director", + "value": "Program Director" + }, + { + "label": "Project Manager", + "value": "Project Manager" + }, + { + "label": "Other (please specify)", + "value": "Other" + } + ], + "resource": "" + }, + "tags": [], + "type": "simpleselectadvanced", + "input": true, + "label": "Partner 1: Contact Title", + "limit": 100, + "logic": [], + "addons": [], + "errors": "", + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dataType": "", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "Please provide the contact's title.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": "", + "selectFields": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "refreshOnBlur": "", + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ewimxcn", + "key": "otherPartner1TitlePleaseSpecify", + "case": "", + "mask": false, + "tags": [], + "type": "simpletextfieldadvanced", + "input": true, + "label": "Other 'Partner 1 Title' - please specify.", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "Other", + "json": "", + "show": true, + "when": "_partner1TitleOfPrimaryContact" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eyzk4w", + "key": "_partner1PrimaryContactEmailAddress", + "case": "", + "mask": false, + "tags": [], + "type": "simpleemailadvanced", + "input": true, + "label": "Partner 1: Contact Email Address", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "kickbox": { + "enabled": false + }, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "email", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ehczaxj", + "key": "_partner1PhoneNumberOfThePrimaryContact", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Partner 1: Contact Phone Number", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "et8qus9", + "key": "_partner1PartnershipLetterUpload", + "url": "/files", + "type": "simplefile", + "image": false, + "input": true, + "label": "Partnership Letter Attachment", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "webcam": false, + "widget": null, + "dbIndex": false, + "fileKey": "files", + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "storage": "chefs", + "tooltip": "This should be a letter from the partner noting their awareness of the partnership, the REDIP application and the role they will play in the project. ", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fileTypes": [ + { + "label": "", + "value": "" + } + ], + "hideLabel": false, + "imageSize": "200", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "uploadOnly": false, + "validateOn": "change", + "webcamSize": 320, + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "formio-component-file", + "description": "Partnership letters are required for each project partner listed.", + "fileMaxSize": "1GB", + "fileMinSize": "0KB", + "filePattern": "*", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "privateDownload": false, + "fileNameTemplate": "{{fileName}}", + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e3v81x", + "key": "headerProjectPartner2", + "tag": "p", + "tags": [], + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Project Partner 2", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "\r\n\r\nREDIP\r\n\r\n\r\n

Project Partner 2

\r\n\r\n", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "className": "", + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eiwotli", + "key": "_partner2OrganizationName", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Partner Organization Name", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "Please provide the partner organization name.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eywec1p", + "key": "partner2Location", + "data": { + "url": "https://unity-chefs-data.apps.silver.devops.gov.bc.ca/reference/common/locations-simple.json", + "json": "", + "custom": "", + "values": [ + { + "label": "", + "value": "" + } + ], + "headers": [ + { + "key": "", + "value": "" + } + ], + "resource": "" + }, + "type": "simpleselectadvanced", + "input": true, + "label": "Partner Location", + "limit": 100, + "addons": [], + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "url", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dataType": "auto", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.name }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "This field is optional. Please indicate the partner's location.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": null, + "disableLimit": true, + "selectFields": "", + "selectValues": "locations", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "noRefreshOnScroll": false, + "allowMultipleMasks": false, + "customDefaultValue": "value = name", + "allowCalculateOverride": false + }, + { + "id": "e4o33sn", + "key": "_hiddenPartner2Location", + "tags": [], + "type": "hidden", + "input": true, + "label": "Hidden - Location: Project Partner 2", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "hidden", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var value = data.partner2Location ? data.partner2Location.name : undefined;", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eic7r0t", + "key": "_partner2PrimaryContactName", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Partner 2: Contact - First and Last Name", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "Please provide the first and last name of the contact.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eiw2y3d", + "key": "_partner2TitleOfPrimaryContact", + "data": { + "url": "", + "json": "", + "custom": "", + "values": [ + { + "label": "Band Manager", + "value": "Band Manager" + }, + { + "label": "Chief", + "value": "Chief" + }, + { + "label": "Chief Executive Officer", + "value": "Chief Executive Officer" + }, + { + "label": "Chief Financial Officer (CFO)", + "value": "Chief Financial Officer (CFO)" + }, + { + "label": "Chief Human Resources Officer (CHRO)", + "value": "Chief Human Resources Officer (CHRO)" + }, + { + "label": "Chief Information Officer (CIO)", + "value": "Chief Information Officer (CIO)" + }, + { + "label": "Chief Marketing Officer (CMO)", + "value": "Chief Marketing Officer (CMO)" + }, + { + "label": "Chief Operating Officer (COO)", + "value": "Chief Operating Officer (COO)" + }, + { + "label": "Chief Technology Officer (CTO)", + "value": "Chief Technology Officer (CTO)" + }, + { + "label": "Consultant", + "value": "Consultant" + }, + { + "label": "Director of Operations", + "value": "Director of Operations" + }, + { + "label": "Economic Development Officer", + "value": "Economic Development Officer" + }, + { + "label": "Executive Director", + "value": "Executive Director" + }, + { + "label": "General Manager", + "value": "General Manager" + }, + { + "label": "Grant Writer", + "value": "Grant Writer" + }, + { + "label": "Managing Director", + "value": "Managing Director" + }, + { + "label": "President", + "value": "President" + }, + { + "label": "Principal Investigator", + "value": "Principal Investigator" + }, + { + "label": "Program Director", + "value": "Program Director" + }, + { + "label": "Project Manager", + "value": "Project Manager" + }, + { + "label": "Other (please specify)", + "value": "Other" + } + ], + "resource": "" + }, + "tags": [], + "type": "simpleselectadvanced", + "input": true, + "label": "Partner 2: Contact Title ", + "limit": 100, + "logic": [], + "addons": [], + "errors": "", + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dataType": "", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "Please provide the contact's title.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": "", + "selectFields": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "refreshOnBlur": "", + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eg4zrp7", + "key": "otherPartner2TitlePleaseSpecify", + "case": "", + "mask": false, + "tags": [], + "type": "simpletextfieldadvanced", + "input": true, + "label": "Other 'Partner 2 Title' - please specify.", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "Please provide the partner contact's title.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "Other", + "json": "", + "show": true, + "when": "_partner2TitleOfPrimaryContact" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "en9sjib", + "key": "_partner2PrimaryContactEmailAddress", + "case": "", + "mask": false, + "tags": [], + "type": "simpleemailadvanced", + "input": true, + "label": "Partner 2: Contact Email Address", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "kickbox": { + "enabled": false + }, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "Please provide the contact's email address.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "email", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "efkcos", + "key": "_partner2PhoneNumberOfThePrimaryContact", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Partner 2: Contact Phone Number", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "Please provide the contact's phone number.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "erh0bk", + "key": "_partner2PartnershipLetterUpload", + "url": "/files", + "type": "simplefile", + "image": false, + "input": true, + "label": "Partnership Letter Attachment", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "webcam": false, + "widget": null, + "dbIndex": false, + "fileKey": "files", + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "storage": "chefs", + "tooltip": "This should be a letter from the partner noting their awareness of the partnership, the REDIP application and the role they will play in the project. ", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "Please provide the partnership letter.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fileTypes": [ + { + "label": "", + "value": "" + } + ], + "hideLabel": false, + "imageSize": "200", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "uploadOnly": false, + "validateOn": "change", + "webcamSize": 320, + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "formio-component-file", + "description": "Partnership letters are required for each project partner listed.", + "fileMaxSize": "1GB", + "fileMinSize": "0KB", + "filePattern": "*", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "privateDownload": false, + "fileNameTemplate": "{{fileName}}", + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ejg73h", + "key": "describeTheRoleOfAllPartnersListed", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Project partners must have an active role in the project but are not required to contribute financially. Please describe the role of all partners listed.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "areThereProjectPartners" + }, + "customClass": "", + "description": "Maximum 250 Words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ey7okdk", + "key": "columns10", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e2xkum", + "key": "table19", + "rows": [ + [ + { + "components": [ + { + "id": "e1skn3", + "key": "previous8", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ebpqn2i", + "key": "table20", + "rows": [ + [ + { + "components": [ + { + "id": "e34kmqt", + "key": "next9", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "projectBackground", + "label": "5. PROJECT INFORMATION", + "components": [ + { + "id": "e2t5hh", + "key": "_projectTitle", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Project Title:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 200, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e6xs1n", + "key": "pleaseBrieflyDescribeYourProject", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Please briefly describe your project in 1-2 sentences. (This answer may be used for public communications).", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 100, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e15s86", + "key": "whatProjectTypeBestDescribesYourProject", + "data": { + "url": "", + "json": "", + "custom": "", + "values": [ + { + "label": "Community assessment", + "value": "communityAssessment" + }, + { + "label": "Capacity building", + "value": "capacityBuilding" + }, + { + "label": "Engagement", + "value": "engagement" + }, + { + "label": "Staff recruitment and/or retention", + "value": "staffRecruitmentAndOrRetention" + }, + { + "label": "Other (please specify)", + "value": "other" + } + ], + "resource": "" + }, + "tags": [], + "type": "simpleselectadvanced", + "input": true, + "label": "What project type best describes your project?", + "limit": 100, + "logic": [], + "addons": [], + "errors": "", + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dataType": "", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": "", + "selectFields": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "refreshOnBlur": "", + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "em3okyf", + "key": "other", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "If 'other', please explain.", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "other", + "json": "", + "show": true, + "when": "whatProjectTypeBestDescribesYourProject" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eo06q6", + "key": "projectLocationDetailed", + "data": { + "url": "https://unity-chefs-data.apps.silver.devops.gov.bc.ca/reference/common/locations-detailed.json", + "json": "", + "custom": "", + "values": [ + { + "label": "", + "value": "" + } + ], + "headers": [ + { + "key": "", + "value": "" + } + ], + "resource": "" + }, + "type": "simpleselectadvanced", + "input": true, + "label": "Select the primary community where the project will take place.", + "limit": 100, + "addons": [], + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "url", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.location}}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": null, + "disableLimit": true, + "selectFields": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "noRefreshOnScroll": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "enbjce", + "key": "_EconomicRegionHidden", + "type": "hidden", + "input": true, + "label": "Hidden Component - Economic Region", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "_StringEconomicRegion", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "hidden", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var value = data.projectLocationDetailed ? data.projectLocationDetailed.economic_region : undefined;\nconsole.info('economic_region:true');", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "en2rm", + "key": "_RegionalDistrictHidden", + "type": "hidden", + "input": true, + "label": "Hidden Component - Regional District", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "_RegionalDistrict", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "hidden", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var value = data.projectLocationDetailed ? data.projectLocationDetailed.regional_district : undefined;\r\nconsole.info('regional_district:true');", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e2fgsu", + "key": "_CommunityHidden", + "type": "hidden", + "input": true, + "label": "Hidden Component - Community", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "_StringEconomicRegion", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "hidden", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var value = data.projectLocationDetailed ? data.projectLocationDetailed.community : undefined;\r\nconsole.info('community:true');", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e4zpl0f", + "key": "_placeHidden", + "type": "hidden", + "input": true, + "label": "Hidden Component - Place", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "_StringEconomicRegion", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "hidden", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var value = data.projectLocationDetailed ? data.projectLocationDetailed.place_name : undefined;\r\nconsole.info('place_name:true');", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ehricq9", + "key": "willOtherCommunitiesInBritishColumbiaDirectlyBenefit", + "data": { + "url": "" + }, + "tags": [], + "type": "simpleradioadvanced", + "input": true, + "label": "Will other communities in British Columbia directly benefit from the project?", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "valueProperty": "", + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e11zgn", + "key": "_Community1Location", + "data": { + "url": "https://unity-chefs-data.apps.silver.devops.gov.bc.ca/reference/common/locations-simple.json", + "json": "", + "custom": "", + "values": [ + { + "label": "", + "value": "" + } + ], + "headers": [ + { + "key": "", + "value": "" + } + ], + "resource": "" + }, + "sort": "", + "tags": [], + "type": "simpleselectadvanced", + "input": true, + "label": "Community 1", + "limit": 100, + "logic": [], + "addons": [], + "errors": "", + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "url", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dataType": "auto", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.name }}", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customMessage": "", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "willOtherCommunitiesInBritishColumbiaDirectlyBenefit" + }, + "customClass": "", + "description": "", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": {}, + "disableLimit": true, + "selectFields": "", + "selectValues": "locations", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "refreshOnBlur": "", + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "customConditional": "", + "noRefreshOnScroll": false, + "allowMultipleMasks": false, + "customDefaultValue": "value = name", + "allowCalculateOverride": false + }, + { + "id": "ecup9jp", + "key": "_Community2Location", + "data": { + "url": "https://unity-chefs-data.apps.silver.devops.gov.bc.ca/reference/common/locations-simple.json", + "json": "", + "custom": "", + "values": [ + { + "label": "", + "value": "" + } + ], + "headers": [ + { + "key": "", + "value": "" + } + ], + "resource": "" + }, + "sort": "", + "tags": [], + "type": "simpleselectadvanced", + "input": true, + "label": "Community 2", + "limit": 100, + "logic": [], + "addons": [], + "errors": "", + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "url", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dataType": "auto", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.name }}", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customMessage": "", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "willOtherCommunitiesInBritishColumbiaDirectlyBenefit" + }, + "customClass": "", + "description": "", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": {}, + "disableLimit": true, + "selectFields": "", + "selectValues": "locations", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "refreshOnBlur": "", + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "customConditional": "", + "noRefreshOnScroll": false, + "allowMultipleMasks": false, + "customDefaultValue": "value = name", + "allowCalculateOverride": false + }, + { + "id": "ewc98lg", + "key": "_Community3Location", + "data": { + "url": "https://unity-chefs-data.apps.silver.devops.gov.bc.ca/reference/common/locations-simple.json", + "json": "", + "custom": "", + "values": [ + { + "label": "", + "value": "" + } + ], + "headers": [ + { + "key": "", + "value": "" + } + ], + "resource": "" + }, + "sort": "", + "tags": [], + "type": "simpleselectadvanced", + "input": true, + "label": "Community 3", + "limit": 100, + "logic": [], + "addons": [], + "errors": "", + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "url", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dataType": "auto", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.name }}", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "json": "", + "show": true, + "when": "willOtherCommunitiesInBritishColumbiaDirectlyBenefit" + }, + "customClass": "", + "description": "", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": {}, + "disableLimit": true, + "selectFields": "", + "selectValues": "locations", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "refreshOnBlur": "", + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "customConditional": "", + "noRefreshOnScroll": false, + "allowMultipleMasks": false, + "customDefaultValue": "value = name", + "allowCalculateOverride": false + }, + { + "id": "esjo8", + "key": "hiddenComponentOtherCommunities", + "tags": [], + "type": "hidden", + "input": true, + "label": "Hidden Component - Other Communities", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "hidden", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var values = [1, 2, 3]\r\n .map(i => data[`_Community${i}Location`] && data[`_Community${i}Location`].community)\r\n .filter(Boolean);\r\n\r\nvar value = values.join(\"; \");\r\n", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "esrlb53hj", + "key": "pleaseTellUsAboutTheCommunities", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Please tell us about the community(ies). In particular, what are they key economic sectors or drivers within the community(ies)?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eovad3", + "key": "whatCommunityNeedAreYouTryingToAddress", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "What community need or opportunity are you trying to address? ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 200 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e4olbcj", + "key": "whatAreTheIntendedOutcomesOfTheProject", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "What are the intended outcomes of the project?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": " Provide separate lists of immediate outcomes/deliverables and indirect, longer-term outcomes.\r\nExamples - Immediate Outcomes:\r\n- Workplan developed for new economic development officer role\r\n- 1 new staff member hired\r\n- Software acquired to support new role\r\n- 30 community members engaged \r\n- 1 feasibility study created\r\n- Training delivered to 10 staff members; all participants professional certified to complete X job\r\n- 1 succession plan completed\r\n\r\nExamples - Indirect Outcomes:\r\n- Organization equipped to apply to and receives 3 more grants a year\r\n- Increased organizational capacity to deliver 1 new program\r\n-Organization has clear, strategic vision for next five years\r\n-Increased organizational resilience in the case of staff turnover", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 200 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e47ehs", + "key": "keyProjectActivities", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Please list the key project activities and how they relate to the intended outcomes.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "emq9zsq", + "key": "columns2", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ein8q2", + "key": "table5", + "rows": [ + [ + { + "components": [ + { + "id": "ex0br98", + "key": "previous1", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "eg2638f", + "key": "table4", + "rows": [ + [ + { + "components": [ + { + "id": "eqc463a", + "key": "next2", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "projectTimelinesAndBudget", + "label": "6. PROJECT TIMELINES ", + "components": [ + { + "id": "e3vrb2", + "key": "projectTimeline", + "tree": false, + "type": "simplecols2", + "input": false, + "label": "Project timeline", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e29ctj", + "key": "_projectStartDate", + "type": "simpledatetime", + "input": true, + "label": "Project Start Date", + "addons": [], + "format": "yyyy-MM-dd hh:mm a", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "yyyy-MM-dd", + "locale": "en", + "maxDate": "2027-03-31T12:00:00-07:00", + "minDate": "2025-03-01T00:00:00-08:00", + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Funding decisions will be communicated March 2025. The project timeline should reflect this. \r\nREDIP funding can only go towards activities conducted after you've been notified of approval for funding. ", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": "2027-03-31T12:00:00-07:00", + "maxMode": "year", + "minDate": "2025-03-01T00:00:00-08:00", + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "All projects should begin March 2025 at the earliest and be completed by March 2027.", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "customConditional": "", + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e4gddh7", + "key": "_projectEndDate", + "type": "simpledatetime", + "input": true, + "label": "Project Completion Date", + "addons": [], + "format": "yyyy-MM-dd hh:mm a", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "yyyy-MM-dd", + "locale": "en", + "maxDate": "2027-03-31T12:00:00-07:00", + "minDate": "2025-03-01T12:00:00-08:00", + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": "2027-03-31T12:00:00-07:00", + "maxMode": "year", + "minDate": "2025-03-01T12:00:00-08:00", + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "All projects should begin March 2025 at the earliest and be completed by March 2027.", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "customConditional": "", + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": false, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "hideOnChildrenHidden": false, + "allowCalculateOverride": false + }, + { + "id": "ek0i5nw", + "key": "simplecontent13", + "html": "

Please provide a project timeline with up to ten project milestones. If your project requires obtaining permits and approvals include the time required to obtain them in the project timeline.

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eb7u62u", + "key": "dataGridProjectTimelineMilestones", + "tags": [], + "tree": true, + "type": "datagrid", + "input": true, + "label": "Project Timeline Milestones", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "Milestones should reflect key project activities and align clearly with items outlined in the project budget. \r\n\r\nDon't forget to include preliminary items (such as the development of a workplan and hiring processes) where relevant.", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "maxLength": "10", + "minLength": "", + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "addAnother": "", + "attributes": {}, + "components": [ + { + "id": "er51wvj", + "key": "columns2DataGrid", + "tree": false, + "type": "simplecols2", + "input": false, + "label": "Estimated Date", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "eyn7hm8", + "key": "milestoneDate", + "type": "simpledatetime", + "input": true, + "label": "Milestone Date", + "addons": [], + "format": "yyyy-MM-dd hh:mm a", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "yyyy-MM-dd", + "locale": "en", + "maxDate": "2027-03-31T12:00:00-07:00", + "minDate": "2025-03-01T00:00:00-08:00", + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Funding decisions will be communicated March 2025. The project timeline should reflect this. \r\nREDIP funding can only go towards activities conducted after you've been notified of approval for funding. ", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": "2027-03-31T12:00:00-07:00", + "maxMode": "year", + "minDate": "2025-03-01T00:00:00-08:00", + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "All projects should begin March 2025 at the earliest and be completed by March 2027.", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "customConditional": "", + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ehb2wa", + "key": "milestoneDescription", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Milestone Description", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Describe the milestone.", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": false, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "hideOnChildrenHidden": false, + "allowCalculateOverride": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "milestoneDescription": "", + "organizationStartOperatingDate": "", + "_organizationStartOperatingDate": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "customConditional": "", + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "conditionalAddButton": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "eslf0fs", + "key": "columns3", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "eadza39", + "key": "table6", + "rows": [ + [ + { + "components": [ + { + "id": "eu7mbo", + "key": "previous2", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e5yabxd", + "key": "table7", + "rows": [ + [ + { + "components": [ + { + "id": "ezdwvzi", + "key": "next3", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "projectBudget", + "label": "7. PROJECT BUDGET ", + "components": [ + { + "id": "eo902w", + "key": "completedBudgetFormUpload", + "url": "/files", + "type": "simplefile", + "image": false, + "input": true, + "label": "Please attach your completed Budget Form below (template can be found at gov.bc.ca/REDIP).", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "webcam": false, + "widget": null, + "dbIndex": false, + "fileKey": "files", + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "storage": "chefs", + "tooltip": "Please use this to attach completed Budget Form. Uploaded files must be smaller than 25 MB.", + "disabled": false, + "multiple": true, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": true, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fileTypes": [ + { + "label": "", + "value": "" + } + ], + "hideLabel": false, + "imageSize": "200", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "uploadOnly": false, + "validateOn": "change", + "webcamSize": 320, + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "formio-component-file", + "description": "Uploaded files must be smaller than 25 MB.", + "fileMaxSize": "1GB", + "fileMinSize": "0KB", + "filePattern": "*", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "privateDownload": false, + "fileNameTemplate": "{{fileName}}", + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "edmofg", + "key": "projectCost", + "tree": false, + "type": "simplecols2", + "input": false, + "label": "Project Cost", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e3t874m", + "key": "_totalProjectCost", + "case": "", + "mask": false, + "tags": [], + "type": "simplecurrencyadvanced", + "input": true, + "label": "Total Project Cost", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "json": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Please specify amount in CAD.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "$", + "autocomplete": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "etdx90s", + "key": "_requestedAmount", + "case": "", + "mask": false, + "tags": [], + "type": "simplecurrencyadvanced", + "input": true, + "label": "Funding Request from REDIP", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "CAD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "json": "", + "step": "any", + "custom": "var valid = (input >= 0 && input <= 100000);", + "unique": false, + "integer": "", + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "Please enter a number between $0 and $100,000 inclusive.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Please specify amount in CAD.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "$", + "autocomplete": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": false, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "hideOnChildrenHidden": false, + "allowCalculateOverride": false + }, + { + "id": "emdbfw9", + "key": "headerOtherSourcesOfFunding", + "tag": "p", + "tags": [], + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Other Sources Of Funding", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "\r\n\r\nREDIP\r\n\r\n\r\n
\r\n

Other Sources of Funding (if applicable)

\r\n\r\n", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "className": "", + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eu53tih", + "key": "_columnsOtherFundingSources", + "tree": false, + "type": "simplecols2", + "input": false, + "label": "Columns - Other Funding Sources", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "elk8sch", + "key": "source1FundingDescription", + "data": { + "url": "", + "json": "", + "custom": "", + "values": [ + { + "label": "Federal Government", + "value": "Federal Government" + }, + { + "label": "Provincial Government", + "value": "Provincial Government" + }, + { + "label": "Local Government", + "value": "Local Government" + }, + { + "label": "Economic Trust", + "value": "Economic Trust" + }, + { + "label": "Bank (Credit Union)", + "value": "Bank (Credit Union)" + }, + { + "label": "Other (Please Specify)", + "value": "Other" + } + ], + "resource": "" + }, + "tags": [], + "type": "simpleselectadvanced", + "input": true, + "label": "Other Funding Source", + "limit": 100, + "logic": [], + "addons": [], + "errors": "", + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dataType": "", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "Please select a funding source.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Please select a funding source.", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": "", + "selectFields": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "refreshOnBlur": "", + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e2dq114", + "key": "source1AmountOfFunding", + "case": "", + "mask": false, + "tags": [], + "type": "simplecurrencyadvanced", + "input": true, + "label": "Funding Amount", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "CAD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "json": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customMessage": "Please state the funding amount.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Please provide funding amount in CAD.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "$", + "autocomplete": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": false, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "hideOnChildrenHidden": false, + "allowCalculateOverride": false + }, + { + "id": "e2qpmb", + "key": "pleaseProvideADescriptionForTheFundingSource1YouveSelectedAbove", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide a description for the funding source you've selected above.", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 400, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "Please describe the funding source.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "Other", + "json": "", + "show": true, + "when": "source1FundingDescription" + }, + "customClass": "", + "description": "Maximum 400 Words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ev5n51m", + "key": "_columns2OtherFundingSources", + "tree": false, + "type": "simplecols2", + "input": false, + "label": "Columns - Other Funding Sources", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e0r93p", + "key": "source2FundingDescription", + "data": { + "url": "", + "json": "", + "custom": "", + "values": [ + { + "label": "Federal Government", + "value": "Federal Government" + }, + { + "label": "Economic Trust", + "value": "Economic Trust" + }, + { + "label": "Local Government", + "value": "Local Government" + }, + { + "label": "Bank (Credit Union)", + "value": "Bank (Credit Union)" + }, + { + "label": "Other (Please Specify)", + "value": "Other" + } + ], + "resource": "" + }, + "tags": [], + "type": "simpleselectadvanced", + "input": true, + "label": "Other Funding Source", + "limit": 100, + "logic": [], + "addons": [], + "errors": "", + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dataType": "", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "Please select a funding source.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Please select a funding source.", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": "", + "selectFields": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "refreshOnBlur": "", + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ebuf5bl", + "key": "source2AmountOfFunding", + "case": "", + "mask": false, + "tags": [], + "type": "simplecurrencyadvanced", + "input": true, + "label": "Funding Amount", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "json": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "Please state the funding amount.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Please provide funding amount in CAD.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "$", + "autocomplete": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": false, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "hideOnChildrenHidden": false, + "allowCalculateOverride": false + }, + { + "id": "ezehikr", + "key": "pleaseProvideADescriptionForTheFundingSource2YouveSelectedAbove", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide a description for the funding source you've selected above.", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 400, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "Please describe the funding source.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "Other", + "json": "", + "show": true, + "when": "source2FundingDescription" + }, + "customClass": "", + "description": "Maximum 400 Words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e0ld4fjk", + "key": "_columns3OtherFundingSources", + "tree": false, + "type": "simplecols2", + "input": false, + "label": "Columns - Other Funding Sources", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e521f4", + "key": "source3FundingDescription", + "data": { + "url": "", + "json": "", + "custom": "", + "values": [ + { + "label": "Federal Government", + "value": "Federal Government" + }, + { + "label": "Economic Trust", + "value": "Economic Trust" + }, + { + "label": "Local Government", + "value": "Local Government" + }, + { + "label": "Bank (Credit Union)", + "value": "Bank (Credit Union)" + }, + { + "label": "Other (Please Specify)", + "value": "Other" + } + ], + "resource": "" + }, + "type": "simpleselectadvanced", + "input": true, + "label": "Other Funding Source", + "limit": 100, + "addons": [], + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "Please select a funding source.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Please select a funding source.", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": null, + "selectFields": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "em720ek", + "key": "source3AmountOfFunding", + "mask": false, + "type": "simplecurrencyadvanced", + "input": true, + "label": "Funding Amount", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "Please state the funding amount.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Please provide funding amount in CAD.", + "inputFormat": "plain", + "placeholder": "$", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": false, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "hideOnChildrenHidden": false, + "allowCalculateOverride": false + }, + { + "id": "et2aho", + "key": "pleaseProvideADescriptionForTheFundingSource4YouveSelectedAbove", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide a description for the funding source you've selected above.", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 400, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "Please describe the funding source.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "Other", + "json": "", + "show": true, + "when": "source3FundingDescription" + }, + "customClass": "", + "description": "Maximum 400 Words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e9ujqzq", + "key": "_columns4OtherFundingSources", + "tree": false, + "type": "simplecols2", + "input": false, + "label": "Columns - Other Funding Sources", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ev0r4ndv", + "key": "source4FundingDescription", + "data": { + "url": "", + "json": "", + "custom": "", + "values": [ + { + "label": "Federal Government", + "value": "Federal Government" + }, + { + "label": "Economic Trust", + "value": "Economic Trust" + }, + { + "label": "Local Government", + "value": "Local Government" + }, + { + "label": "Bank (Credit Union)", + "value": "Bank (Credit Union)" + }, + { + "label": "Other (Please Specify)", + "value": "Other" + } + ], + "resource": "" + }, + "type": "simpleselectadvanced", + "input": true, + "label": "Other Funding Source", + "limit": 100, + "addons": [], + "filter": "", + "hidden": false, + "idPath": "id", + "prefix": "", + "suffix": "", + "unique": false, + "widget": "choicesjs", + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "Please select a funding source.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "indexeddb": { + "filter": {} + }, + "minSearch": 0, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Please select a funding source.", + "fuseOptions": { + "include": "score", + "threshold": 0.3 + }, + "ignoreCache": false, + "placeholder": "", + "searchField": "", + "authenticate": false, + "defaultValue": null, + "selectFields": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "readOnlyValue": false, + "searchEnabled": true, + "showCharCount": false, + "showWordCount": false, + "uniqueOptions": false, + "valueProperty": "", + "calculateValue": "", + "clearOnRefresh": false, + "searchDebounce": 0.3, + "useExactSearch": false, + "calculateServer": false, + "selectThreshold": 0.3, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "eulrnx", + "key": "source4AmountOfFunding", + "mask": false, + "type": "simplecurrencyadvanced", + "input": true, + "label": "Funding Amount", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "Please state the funding amount.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Please provide funding amount in CAD.", + "inputFormat": "plain", + "placeholder": "$", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": false, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "hideOnChildrenHidden": false, + "allowCalculateOverride": false + }, + { + "id": "et183ar", + "key": "pleaseProvideADescriptionForTheFundingSource3YouveSelectedAbove1", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide a description for the funding source you've selected above.", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 400, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "Please describe the funding source.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "Other", + "json": "", + "show": true, + "when": "source4FundingDescription" + }, + "customClass": "", + "description": "Maximum 400 Words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eoluii", + "key": "columns6", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e3hb1bf", + "key": "table11", + "rows": [ + [ + { + "components": [ + { + "id": "e1pb1if", + "key": "previous5", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e8fgs8d", + "key": "table12", + "rows": [ + [ + { + "components": [ + { + "id": "e3d3un", + "key": "next5", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "projectRiskandFeasibility ", + "label": "8. PROJECT RISK AND FEASIBILITY ", + "components": [ + { + "id": "e5cspz", + "key": "levelOfPreparedness", + "html": "

The information in this section is used to assess the level of preparedness of the applicant to identify and mitigate potential risks to the project implementation and completion.

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eios0n", + "key": "detailsAboutHowTheBudgetWasPrepared", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Please provide any relevant details about how the budget was prepared (e.g., from where did you receive quotes, how recent are the quotes etc.)?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "This information helps program staff determine the strength and accuracy of the budget estimates. \r\nYou can include information about quotes received, industry standard wages, and any other data or experience that supports the accuracy of the budget estimate.", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 200 words ", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eo9o39d", + "key": "howWillYouAddressAnOverrunInProjectCosts", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "How will you address an overrun in project costs that meets or exceeds the contingency provided in the budget?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Successful applicants will have a contractual obligation to address costs overruns to ensure project delivery, and additional funding through this program will not be available.\nThis may include reserve funds, loan options, flexibility of specific deliverables etc.", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 200 words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e4ps2bq", + "key": "simplecontent15", + "html": "", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e1do0z", + "key": "projectRisks", + "data": { + "url": "" + }, + "type": "simplecheckboxes", + "input": true, + "label": "Please select (minimum of two) project risks from the list provided. Provide your plan to mitigate and address each risk if it occurs.", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "​​Timeline risks/delays", + "value": "timelineRisksDelays", + "shortcut": "" + }, + { + "label": "​​Permit/approvals risks", + "value": "permitApprovalsRisks", + "shortcut": "" + }, + { + "label": "Financial risks/other sources of funding", + "value": "financialRisksOtherSourcesOfFunding", + "shortcut": "" + }, + { + "label": "Staff capacity/availability", + "value": "staffCapacityAvailability", + "shortcut": "" + }, + { + "label": "​​Availability of materials/supplies", + "value": "availabilityOfMaterialsSupplies", + "shortcut": "" + }, + { + "label": "Conflicts of interest", + "value": "conflictsOfInterest", + "shortcut": "" + }, + { + "label": "Potential scope changes", + "value": "potentialScopeChanges", + "shortcut": "" + }, + { + "label": "Lack of community support", + "value": "lackOfCommunitySupport", + "shortcut": "" + }, + { + "label": "​​​Natural disasters", + "value": "naturalDisasters", + "shortcut": "" + }, + { + "label": "​​Changes in organizational/community priorities", + "value": "changesInOrganizationalCommunityPriorities", + "shortcut": "" + }, + { + "label": " Other [please specify]", + "value": "otherPleaseSpecify", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Select all that apply; select a minimum of two.", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": false, + "customMessage": "This field is required.", + "customPrivate": false, + "minSelectedCount": 2, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": { + "naturalDisasters": false, + "otherPleaseSpecify": false, + "conflictsOfInterest": false, + "timelineRisksDelays": false, + "permitApprovalsRisks": false, + "potentialScopeChanges": false, + "lackOfCommunitySupport": false, + "staffCapacityAvailability": false, + "availabilityOfMaterialsSupplies": false, + "financialRisksOtherSourcesOfFunding": false, + "changesInOrganizationalCommunityPriorities": false + }, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false, + "maxSelectedCountMessage": "", + "minSelectedCountMessage": "Please select a minimum of two project risks from this list." + }, + { + "id": "e9o22fc", + "key": "dataExtractProjectRisks", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Data Extract - Project Risks", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": true, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var riskTypes = {\r\n timelineRisksDelays: \"Timeline risks/delays\",\r\n permitApprovalsRisks: \"Permit/approvals risks\",\r\n financialRisksOtherSourcesOfFunding: \"Financial risks/other sources of funding\",\r\n staffCapacityAvailability: \"Staff capacity/availability\",\r\n availabilityOfMaterialsSupplies: \"Availability of materials/supplies\",\r\n conflictsOfInterest: \"Conflicts of interest\",\r\n potentialScopeChanges: \"Potential scope changes\",\r\n lackOfCommunitySupport: \"Lack of community support\",\r\n naturalDisasters: \"Natural disasters\",\r\n changesInOrganizationalCommunityPriorities: \"Changes in organizational/community priorities\",\r\n otherPleaseSpecify: \"Other\"\r\n};\r\n\r\nvar values = Object.keys(riskTypes)\r\n .filter(key => data.projectRisks && data.projectRisks[key])\r\n .map(key => riskTypes[key]);\r\n\r\nvar value = values.join(\", \");\r\n", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "es4y16g", + "key": "_hiddenProjectRisks", + "type": "hidden", + "input": true, + "label": "Hidden - Project Risks", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "hidden", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var values = [];\r\nif (data.projectRisks && data.projectRisks.timelineRisksDelays) {\r\n values.push(\"​​Timeline risks/delays\");\r\n}\r\nif (data.projectRisks && data.projectRisks.permitApprovalsRisks) {\r\n values.push(\"​​Permit/approvals risks\");\r\n}\r\nif (data.projectRisks && data.projectRisks.financialRisksOtherSourcesOfFunding) {\r\n values.push(\"Financial risks/other sources of funding\");\r\n}\r\nif (data.projectRisks && data.projectRisks.staffCapacityAvailability) {\r\n values.push(\"Staff capacity/availability\");\r\n}\r\nif (data.projectRisks && data.projectRisks.availabilityOfMaterialsSupplies) {\r\n values.push(\"​​Availability of materials/supplies\");\r\n}\r\nif (data.projectRisks && data.projectRisks.conflictsOfInterest) {\r\n values.push(\"Conflicts of interest\");\r\n}\r\nif (data.projectRisks && data.projectRisks.potentialScopeChanges) {\r\n values.push(\"Potential scope changes\");\r\n}\r\nif (data.projectRisks && data.projectRisks.lackOfCommunitySupport) {\r\n values.push(\"Lack of community support\");\r\n}\r\nif (data.projectRisks && data.projectRisks.naturalDisasters) {\r\n values.push(\"​​​Natural disasters\");\r\n}\r\nif (data.projectRisks && data.projectRisks.changesInOrganizationalCommunityPriorities) {\r\n values.push(\"​​Changes in organizational/community priorities\");\r\n}\r\nif (data.projectRisks && data.projectRisks.otherPleaseSpecify) {\r\n values.push(\"Other\");\r\n}\r\n\r\nvar value = values.join(\", \");", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ezuasx", + "key": "riskMitigationConsiderationsTimeline", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide mitigation considerations for the identified project risk: ​​Timeline risks/delays", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Please provide mitigation considerations for the project risk you identified.", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "show = data.projectRisks.timelineRisksDelays;", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e0kjkp7", + "key": "riskMitigationConsiderationsPermits", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide mitigation considerations for the identified project risk: ​​​​Permit/approvals risks", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Please provide mitigation considerations for the project risk you identified.", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "show = data.projectRisks.permitApprovalsRisks;", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e9b3d3e", + "key": "riskMitigationConsiderationsFinancial", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide mitigation considerations for the identified project risk: ​​Financial risks/other sources of funding", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Please provide mitigation considerations for the project risk you identified.", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "show = data.projectRisks.financialRisksOtherSourcesOfFunding;", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ecestsq", + "key": "riskMitigationConsiderationsStaff", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide mitigation considerations for the identified project risk: ​​Staff capacity/availability", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Please provide mitigation considerations for the project risk you identified.", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "show = data.projectRisks.staffCapacityAvailability;", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "es9vppa", + "key": "riskMitigationConsiderationMaterials", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide mitigation considerations for the identified project risk: ​​​​Availability of materials/supplies", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Please provide mitigation considerations for the project risk you identified.", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "show = data.projectRisks.availabilityOfMaterialsSupplies;", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e9f47y", + "key": "riskMitigationConsiderationsConflictOfInterest", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide mitigation considerations for the identified project risk: Conflicts of interest", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Please provide mitigation considerations for the project risk you identified.", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "show = data.projectRisks.conflictsOfInterest;", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eyulqg8", + "key": "riskMitigationConsiderationsScopeChange", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide mitigation considerations for the identified project risk: Potential scope changes", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Please provide mitigation considerations for the project risk you identified.", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "show = data.projectRisks.potentialScopeChanges;", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ez06dga", + "key": "riskMitigationConsiderationsCommunitySupport", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide mitigation considerations for the identified project risk: ​​Lack of community support", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Please provide mitigation considerations for the project risk you identified.", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "show = data.projectRisks.lackOfCommunitySupport;", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e8cbw27", + "key": "riskMitigationConsiderationsNaturalDisasters", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide mitigation considerations for the identified project risk: ​​​​​Natural disasters", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Please provide mitigation considerations for the project risk you identified.", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "show = data.projectRisks.naturalDisasters;", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ezzt4le", + "key": "riskMitigationConsiderationsChangingPriorities", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide mitigation considerations for the identified project risk: ​​Changes in organizational/community priorities", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Please provide mitigation considerations for the project risk you identified.", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "show = data.projectRisks.changesInOrganizationalCommunityPriorities;", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ef1m5i8", + "key": "riskMitigationConsiderationsOther", + "case": "", + "mask": false, + "rows": 3, + "tags": [], + "type": "simpletextareaadvanced", + "input": true, + "label": "Please provide mitigation considerations for the identified project risk: Other", + "logic": [], + "addons": [], + "editor": "", + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "Please provide mitigation considerations for the project risk you identified.", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "show = data.projectRisks.otherPleaseSpecify;", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ers03mn", + "key": "columns11", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "encf6sk", + "key": "table21", + "rows": [ + [ + { + "components": [ + { + "id": "ey3dzii", + "key": "previous9", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e6fahyu", + "key": "table22", + "rows": [ + [ + { + "components": [ + { + "id": "eiag9m", + "key": "next10", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "CommunitySupportPlanning", + "label": "9. COMMUNITY SUPPORT/PLANNING", + "components": [ + { + "id": "egbfz1k", + "key": "howDoesTheProjectSupportExistingCommunityOrEconomicPlans", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "How does the project support existing community or economic plans?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 200 words ", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ex6blj4", + "key": "isThereCommunitySupportForTheProject", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Is there community support for the project either through public consultation or letters of support?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "Yes", + "shortcut": "" + }, + { + "label": "In Progress", + "value": "In Progress", + "shortcut": "" + }, + { + "label": "No", + "value": "No", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "eoepywo", + "key": "describeCommunitySupport", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Please describe this support and how it is demonstrated.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "No", + "json": "", + "show": true, + "when": "isThereCommunitySupportForTheProject" + }, + "customClass": "", + "description": "Maximum 200 words ", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "if (data.isThereCommunitySupportForTheProject == \"Yes\" || data.isThereCommunitySupportForTheProject == \"In Progress\") {\r\n show = true;\r\n} else {\r\n show = false;\r\n}", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eloxhyc", + "key": "explainBarriersToAcquiringCommunitySupport", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Please explain why not. Are there barriers to acquiring community support or engaging in public consultation?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "No", + "json": "", + "show": true, + "when": "isThereCommunitySupportForTheProject" + }, + "customClass": "", + "description": "Maximum 200 words ", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e4dmxog", + "key": "columns12", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "evz3p01", + "key": "table23", + "rows": [ + [ + { + "components": [ + { + "id": "eu5jmvu", + "key": "previous10", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e5t3zec", + "key": "table24", + "rows": [ + [ + { + "components": [ + { + "id": "eowpq5", + "key": "next11", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "additionalDocumentation", + "label": "10. ADDITIONAL DOCUMENTATION", + "components": [ + { + "id": "eiodw6a", + "key": "simplecontent3", + "html": "

If applicable, you may attach any of the following documents in support of your project if they have been acquired. 

Examples include: 

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "enf3so", + "key": "simplefile", + "url": "/files", + "type": "simplefile", + "image": false, + "input": true, + "label": "File Upload", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "webcam": false, + "widget": null, + "dbIndex": false, + "fileKey": "files", + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "storage": "chefs", + "tooltip": "Letters of support should be current and directly reference the REDIP application. Letters of support are of most value when provided by communities/organizations that will be directly impacted by the project (such as neighbouring First Nations or the community in which the project will take place). ", + "disabled": false, + "multiple": true, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fileTypes": [ + { + "label": "", + "value": "" + } + ], + "hideLabel": false, + "imageSize": "200", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "uploadOnly": false, + "validateOn": "change", + "webcamSize": 320, + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "formio-component-file", + "description": "", + "fileMaxSize": "1GB", + "fileMinSize": "0KB", + "filePattern": "*", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "privateDownload": false, + "fileNameTemplate": "{{fileName}}", + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eofeiih", + "key": "columns4", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ejsy45", + "key": "table8", + "rows": [ + [ + { + "components": [ + { + "id": "ee5gos5", + "key": "previous3", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "emsc1e1", + "key": "table9", + "rows": [ + [ + { + "components": [ + { + "id": "eaoncca", + "key": "next4", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "diversityInclusionandReconciliation ", + "label": "11. DIVERSITY, INCLUSION AND RECONCILIATION ", + "components": [ + { + "id": "enesi0zi", + "key": "orgPolicyOnDiversityInclusionAndIndigenousReconciliation", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Does your organization have policy or guiding principles related to diversity, inclusion and/or Indigenous reconciliation?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "Yes", + "shortcut": "" + }, + { + "label": "No", + "value": "No", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "epb0gt8", + "key": "describePolicyForDiversityInclusionReconciliation", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "If yes, please describe the policy or guiding principles and how this project will strengthen diversity, inclusion and/or Indigenous reconciliation.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "Yes", + "json": "", + "show": true, + "when": "orgPolicyOnDiversityInclusionAndIndigenousReconciliation" + }, + "customClass": "", + "description": "Maximum 200 words ", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "egtedx", + "key": "howWillThisProjectStrengthenDiversityInclusionReconciliation", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "If no, please describe how this project will help strengthen diversity, inclusion and/or Indigenous reconciliation within your organization and community?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "No", + "json": "", + "show": true, + "when": "orgPolicyOnDiversityInclusionAndIndigenousReconciliation" + }, + "customClass": "", + "description": "Maximum 200 words ", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eykccye", + "key": "columns13", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "eidu1yk", + "key": "table25", + "rows": [ + [ + { + "components": [ + { + "id": "eytqlx", + "key": "previous11", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e3e1a1n", + "key": "table26", + "rows": [ + [ + { + "components": [ + { + "id": "e3nnobr", + "key": "next12", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "applicantSelfAssessment", + "label": "12. APPLICANT SELF-ASSESSMENT ", + "components": [ + { + "id": "ebb7wh6", + "key": "selfAssessment", + "html": "

REDIP is committed to promoting the inclusive growth of Indigenous and non-Indigenous rural communities and organizations. This self-assessment will help us understand potential and real capacity challenges faced by applicants.

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ebt15or", + "key": "whatBarriersHaveYouExperienced", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "What barriers have you experienced or anticipate experiencing in accessing funding and delivering programs/projects/services? ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "The REDIP-EC prioritizes funding communities with the highest need. Applicants are encouraged to identify barriers where possible. ", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 200 words ", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eywucv", + "key": "staffAndVolunteerCapacity", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Please describe your staff and volunteer capacity. How many people are involved? Are skillsets missing that you are looking to fill through this funding? ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 200 words ", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "esde5zk", + "key": "hasYourOrganizationExperiencedChallenges", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Has your organization experienced challenges over the recent years that have impacted its ability to retain staff?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": true, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 200 words ", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ey3pgi", + "key": "columns14", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "escemlr", + "key": "table27", + "rows": [ + [ + { + "components": [ + { + "id": "e766wzr", + "key": "previous12", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e0hfq1v", + "key": "table28", + "rows": [ + [ + { + "components": [ + { + "id": "ejknn4i", + "key": "next13", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "forestSectorImpacts", + "label": "13. FOREST-SECTOR IMPACTS", + "components": [ + { + "id": "edvmtt", + "key": "forestSectorImpacts", + "html": "

Your responses to the Forest-Sector Impacts section will not impact your overall application score. 

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eb0ggmt", + "key": "howDependentIsYourCommunityOnTheForestrySector", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "How dependent is your community on the forestry sector?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Not at all", + "value": "Not at all", + "shortcut": "" + }, + { + "label": "Little", + "value": "Little", + "shortcut": "" + }, + { + "label": "Moderately", + "value": "Moderately", + "shortcut": "" + }, + { + "label": "Dependent", + "value": "Dependent", + "shortcut": "" + }, + { + "label": "Very Dependent", + "value": "Very Dependent", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ebde3qo", + "key": "panelInstructionsPleaseAnswerTheTwoFollowingQuestions", + "tree": false, + "type": "panel", + "input": false, + "label": "Panel", + "theme": "default", + "title": "Please answer the two following questions if you answered moderately, dependent, or very dependent.", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "breadcrumb": "default", + "components": [ + { + "id": "ezen7dj", + "key": "pleaseDescribeTheForestrySectorsRoleInYourCommunity", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Please describe the forestry sector’s role in your community.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is optional.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 200 words ", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ena30np", + "key": "forestSectorImpactDueToClosuresOrCurtailments", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Has the forestry sector in your community been impacted, or is it projected to be impacted, by closures or curtailments within the sector or recent regulatory changes such as old growth deferrals and pauses in BC Timber Sales? If yes, please explain these impacts.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is optional.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 200 words ", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "collapsible": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "show = [\"Moderately\", \"Dependent\", \"Very Dependent\"].includes(data.howDependentIsYourCommunityOnTheForestrySector);", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ek5dr9", + "key": "columns15", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "e54jqn6", + "key": "table29", + "rows": [ + [ + { + "components": [ + { + "id": "eo45orp", + "key": "previous13", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ekre6jo", + "key": "table30", + "rows": [ + [ + { + "components": [ + { + "id": "e98zif7", + "key": "next14", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "ApplicantFeedback ", + "label": "14. APPLICANT FEEDBACK ", + "components": [ + { + "id": "efxn5ih", + "key": "howDidYouLearnAboutREDIP", + "data": { + "url": "" + }, + "tags": [], + "type": "simpleselectboxesadvanced", + "input": true, + "label": "How did you learn about REDIP?
(Select all that apply.)", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Press/Media announcement", + "value": "pressMediaAnnouncement", + "shortcut": "" + }, + { + "label": "Regional economic trust", + "value": "regionalEconomicTrust", + "shortcut": "" + }, + { + "label": "Community organization", + "value": "communityOrganization", + "shortcut": "" + }, + { + "label": "Government of BC Regional Manager", + "value": "governmentOfBcRegionalManager", + "shortcut": "" + }, + { + "label": "Word of mouth", + "value": "wordOfMouth", + "shortcut": "" + }, + { + "label": "Other [please specify]", + "value": "other", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "This field is required.", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": { + "1": false, + "other": false, + "wordOfMouth": false, + "communityOrganization": false, + "regionalEconomicTrust": false, + "pressMediaAnnouncement": false, + "governmentOfBcRegionalManager": false + }, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "valueProperty": "", + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false, + "maxSelectedCountMessage": "", + "minSelectedCountMessage": "" + }, + { + "id": "eq38vha4", + "key": "ifOtherPleaseSpecify", + "case": "", + "mask": false, + "tags": [], + "type": "simpletextfieldadvanced", + "input": true, + "label": "If 'other', please specify.", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "var show = data.howDidYouLearnAboutREDIP && data.howDidYouLearnAboutREDIP.other ? true : false;", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e0r0oh", + "key": "ifCommunityOrganizationPleaseSpecify", + "case": "", + "mask": false, + "tags": [], + "type": "simpletextfieldadvanced", + "input": true, + "label": "If 'Community Organization', please specify.", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": true, + "maxLength": 100, + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": true, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "var show = data.howDidYouLearnAboutREDIP && data.howDidYouLearnAboutREDIP.communityOrganization ? true : false;", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "etangid", + "key": "dataExtractHowDidYouLearnAboutRedip", + "case": "", + "mask": false, + "tags": [], + "type": "simpletextfieldadvanced", + "input": true, + "label": "Data Extract - How did you learn about REDIP?", + "logic": [], + "addons": [], + "errors": "", + "hidden": true, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var values = [];\r\nvar redip = data.howDidYouLearnAboutREDIP;\r\nif (redip) {\r\n if (redip.pressMediaAnnouncement) values.push(\"Press/Media announcement\");\r\n if (redip.regionalEconomicTrust) values.push(\"Regional economic trust\");\r\n if (redip.communityOrganization) values.push(\"Community organization\");\r\n if (redip.governmentOfBcRegionalManager) values.push(\"Government of BC Regional Manager\");\r\n if (redip.wordOfMouth) values.push(\"Word of mouth\");\r\n if (redip.other) values.push(\"Other\");\r\n}\r\nvar value = values.join(\"; \");", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eqv7mkt", + "key": "hiddenHowDidYouLearnAboutRedip", + "tags": [], + "type": "hidden", + "input": true, + "label": "Hidden - How did you learn about REDIP?", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "hidden", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var values = [];\r\nvar redip = data.howDidYouLearnAboutREDIP;\r\nif (redip) {\r\n if (redip.pressMediaAnnouncement) values.push(\"Press/Media announcement\");\r\n if (redip.regionalEconomicTrust) values.push(\"Regional economic trust\");\r\n if (redip.communityOrganization) values.push(\"Community organization\");\r\n if (redip.governmentOfBcRegionalManager) values.push(\"Government of BC Regional Manager\");\r\n if (redip.wordOfMouth) values.push(\"Word of mouth\");\r\n if (redip.other) values.push(\"Other\");\r\n}\r\nvar value = values.join(\"; \");", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eyj723i", + "key": "simpleselectboxesadvanced", + "data": { + "url": "" + }, + "tags": [], + "type": "simpleselectboxesadvanced", + "input": true, + "label": "Have you applied to any these provincial rural economic develop programs in the past?
(Select all that apply.)", + "logic": [], + "addons": [], + "errors": { + "required": "This field is required." + }, + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Rural Dividend", + "value": "ruralDividend", + "shortcut": "" + }, + { + "label": "Community Economic Recovery Infrastructure Program", + "value": "communityEconomicRecoveryInfrastructureProgram", + "shortcut": "" + }, + { + "label": "Rural Economic Diversification and Infrastructure Program", + "value": "ruralEconomicDiversificationAndInfrastructureProgram", + "shortcut": "" + }, + { + "label": "None of the Above", + "value": "noneOfTheAbove", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "json": "", + "custom": "var valid;\r\nvar applied = input;\r\n\r\nif (applied) {\r\n if (applied.noneOfTheAbove) {\r\n // If \"noneOfTheAbove\" is selected, no other option should be selected\r\n valid = (applied.ruralDividend || applied.communityEconomicRecoveryInfrastructureProgram || applied.ruralEconomicDiversificationAndInfrastructureProgram) ? 'If \"None of the above\" is selected, no other option should be selected' : true;\r\n } else {\r\n // If \"noneOfTheAbove\" is not selected, at least one other option should be selected\r\n valid = (applied.ruralDividend || applied.communityEconomicRecoveryInfrastructureProgram || applied.ruralEconomicDiversificationAndInfrastructureProgram) ? true : 'At least one option must be selected';\r\n }\r\n} else {\r\n valid = 'required';\r\n}", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": { + "1": false, + "ruralDividend": false, + "noneOfTheAbove": false, + "communityEconomicRecoveryInfrastructureProgram": false, + "ruralEconomicDiversificationAndInfrastructureProgram": false + }, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "valueProperty": "", + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false, + "maxSelectedCountMessage": "", + "minSelectedCountMessage": "" + }, + { + "id": "e1pe0jl", + "key": "dataExtractAppliedInThePast", + "case": "", + "mask": false, + "tags": [], + "type": "simpletextfieldadvanced", + "input": true, + "label": "Data Extract - Applied in the Past", + "logic": [], + "addons": [], + "errors": "", + "hidden": true, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var values = [];\r\nif (data.appliedInThePast && data.appliedInThePast.ruralDividend) {\r\n values.push(\"Rural Dividend\");\r\n}\r\nif (data.appliedInThePast && data.appliedInThePast.communityEconomicRecoveryInfrastructureProgram) {\r\n values.push(\"​​Community Economic Recovery Infrastructure Program\");\r\n}\r\nif (data.appliedInThePast && data.appliedInThePast.ruralEconomicDiversificationAndInfrastructureProgram) {\r\n values.push(\"Rural Economic Diversification and Infrastructure Program\");\r\n}\r\nif (data.appliedInThePast && data.appliedInThePast.noneOfTheAbove) {\r\n values.push(\"None of the Above\");\r\n}\r\n\r\nvar value = values.join(\"; \");", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eu254tj", + "key": "hiddenAppliedInThePast", + "tags": [], + "type": "hidden", + "input": true, + "label": "Hidden - Applied in the past", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "hidden", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "var values = [];\r\nif (data.appliedInThePast && data.appliedInThePast.ruralDividend) {\r\n values.push(\"Rural Dividend\");\r\n}\r\nif (data.appliedInThePast && data.appliedInThePast.communityEconomicRecoveryInfrastructureProgram) {\r\n values.push(\"​​Community Economic Recovery Infrastructure Program\");\r\n}\r\nif (data.appliedInThePast && data.appliedInThePast.ruralEconomicDiversificationAndInfrastructureProgram) {\r\n values.push(\"Rural Economic Diversification and Infrastructure Program\");\r\n}\r\n\r\nvar value = values.join(\"; \");", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "etm6fd", + "key": "wereYouSuccessfulAtReceivingFunding", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Were you successful at receiving funding?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "Yes", + "shortcut": "" + }, + { + "label": "No", + "value": "No", + "shortcut": "" + }, + { + "label": "Some applications were successful", + "value": "someApplicationsWereSuccessful", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "This field is required.", + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "var show = data.appliedInThePast && (\r\n data.appliedInThePast.ruralDividend || \r\n data.appliedInThePast.communityEconomicRecoveryInfrastructureProgram || \r\n data.appliedInThePast.ruralEconomicDiversificationAndInfrastructureProgram\r\n);\r\n", + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "evx9dnj", + "key": "additionalCommentsAboutTheApplicationProcess", + "case": "", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Do you have any additional comments about the application process?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": true, + "customMessage": "This field is optional.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words ", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e52az78", + "key": "howLongDidThisApplicationTakeYouToComplete", + "mask": false, + "tags": [], + "type": "simplenumberadvanced", + "input": true, + "label": "How long did this application take you to complete? (In hours)", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": 200, + "min": 0, + "json": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": true, + "customMessage": "Please enter a number between 0 and 200.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "applyMaskOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Please enter a number between 0 and 200.", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "autocomplete": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eq3u", + "key": "simplecols4", + "tree": false, + "type": "simplecols2", + "input": false, + "label": "navigationColumnsApplicantFeedback", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "eitxgcs", + "key": "table31", + "rows": [ + [ + { + "components": [ + { + "id": "exihk3l", + "key": "previous14", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "epbafdf", + "key": "table32", + "rows": [ + [ + { + "components": [ + { + "id": "en49s3", + "key": "next15", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": false, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "hideOnChildrenHidden": false, + "allowCalculateOverride": false + } + ] + }, + { + "key": "attestation", + "label": "15. ATTESTATION", + "components": [ + { + "id": "e4psso4", + "key": "simplecontent1", + "html": "

By submitting this application, I confirm that I have the authority to submit this request and agree to the conditions described below.

(a)   All information contained herein is correct and complete to the best of my knowledge;

(b)   Awarding of funding to successful applicants will be conditional upon finalization of a grant agreement that sets out the terms and conditions of the funding;

(c)   I consent to receiving email notifications regarding this application and any subsequent emails from the Rural Economic Diversification and Infrastructure Program or those working on behalf of the Rural Economic Diversification and Infrastructure Program that relate to this application. 

Applications submitted under the program are subject to the Freedom of Information and Protection of Privacy Act. The information being collected is for the purpose of administering the program and will be used for the purpose of evaluating eligibility under the program. 

Information collected through the application process may be disclosed to Government of British Columbia staff outside the Rural Policy and Programs Branch in order to conduct due diligence on this application.

In addition, the applicant organization’s name, location, funded activity, and award amount may be made publicly available, including worldwide by way of the Internet, should funding be awarded.

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e7236im", + "key": "IConfirmThatIHaveTheAuthorityToSubmitThisRequestAndAgreeToTheConditionsDescribedAbove", + "name": "", + "type": "simplecheckbox", + "input": true, + "label": "I have read the Attestation above and agree to all terms therein. ", + "value": "", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": true, + "customMessage": "Confirmation is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "right", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "emy4fzn", + "key": "iHaveTheSupportOfTheLeadApplicantsLeadershipToSubmitThisApplicationAndCanProvideDocumentationUponRequest", + "name": "", + "type": "simplecheckbox", + "input": true, + "label": "I have the support of the lead applicant’s leadership to submit this application and can provide documentation upon request.", + "value": "", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": false, + "customMessage": "Confirmation is required.", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "right", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "elwepah", + "key": "submit", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "SUBMIT", + "theme": "primary", + "action": "submit", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "saveOnEnter": false, + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "emkrxsd", + "key": "columns5", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "es0vx9l", + "key": "table10", + "rows": [ + [ + { + "components": [ + { + "id": "exgjere", + "key": "previous4", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ], + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "verticalLayout": false, + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + "createdBy": "AGONCALV@idir", + "createdAt": "2024-07-03T18:05:03.936Z", + "updatedBy": null, + "updatedAt": "2024-07-03T18:05:03.934Z", + "published": true +} \ No newline at end of file diff --git a/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/reportingFieldsSchema.json b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/reportingFieldsSchema.json new file mode 100644 index 000000000..8d5804328 --- /dev/null +++ b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/reportingFieldsSchema.json @@ -0,0 +1,18019 @@ +{ + "id": "8dab3e65-6439-4e50-9354-adf22c0d9b68", + "formId": "9f9036ed-3e97-4916-97cc-3fa775b65c07", + "version": 1, + "schema": { + "type": "form", + "display": "form", + "components": [ + { + "id": "eelx9cq", + "key": "tabs", + "tags": [], + "tree": false, + "type": "tabs", + "input": false, + "label": "Tabs", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "key": "executiveSummary", + "label": "EXECUTIVE SUMMARY", + "components": [ + { + "id": "eguaywd9", + "key": "simplecontent", + "html": "

Please note that information entered in this section may be shared publicly if funding is awarded. 

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ekd3au5", + "key": "organizationLegalName", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Organization Legal Name (the lead applicant overseeing the project):", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eusf15", + "key": "projectTitle", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Project Title:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "efz6hlq", + "key": "projectLocation", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Project Location: ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eif5svvkj", + "key": "eligibleCost", + "mask": false, + "type": "simplecurrencyadvanced", + "input": true, + "label": "Total Eligible Project Costs:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eqk040n", + "key": "totalRequestToMjf", + "mask": false, + "type": "simplecurrencyadvanced", + "input": true, + "label": "Total Request to MJF: \t", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e1ma7nb", + "key": "totalRequestOfEligibleProjectCosts1", + "mask": false, + "type": "simplenumberadvanced", + "input": true, + "label": "Total Request % of Eligible Project Costs:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "%", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "value = data.totalRequestToMjf / data.eligibleCost * 100", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "etdbkc", + "key": "simplecontent1", + "html": "

Brief Project Description 

Summarize the proposed project including:

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "efueshi", + "key": "simpletextarea", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Multi-line Text", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 400, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": true, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 400 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eqfpn9r", + "key": "columns3", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "eroa68h", + "key": "table4", + "rows": [ + [ + { + "components": [ + { + "id": "eer0hq", + "key": "previous", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "emq9fi", + "key": "table5", + "rows": [ + [ + { + "components": [ + { + "id": "ec62k3", + "key": "next", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "applicantInformation", + "label": "APPLICANT INFORMATION", + "components": [ + { + "id": "eddn1eq", + "key": "bcBusinessIncorporationRegistrationNumber", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "BC Business Incorporation/Registration Number: ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e978i6", + "key": "simplecontent2", + "html": "

Please confirm the main contact for your project: 

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "es8zeon", + "key": "contactName", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Contact Name:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ec7d5lk", + "key": "contactTitle", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Contact Title:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "esx5hxr", + "key": "contactPhoneNumber", + "mask": false, + "type": "simplephonenumber", + "input": true, + "label": "Contact Phone Number:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputMode": "decimal", + "inputType": "tel", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ebqcw1a", + "key": "contactEmail", + "mask": false, + "type": "simpleemail", + "input": true, + "label": "Contact Email:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "kickbox": { + "enabled": false + }, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "email", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ejb6yrh", + "key": "simplecontent3", + "html": "

Enter the contact information of the person with signing authority at your organization. This is the person that will sign the Contribution Agreement on your organization’s behalf if your project is approved for funding. If same as above, indicate that. 

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eupo7a", + "key": "signingAuthorityName", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Signing Authority Name:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "etcaxw8", + "key": "signingAuthorityTitle", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Signing Authority Title:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eurjebl", + "key": "signingAuthorityPhoneNumber", + "mask": false, + "type": "simplephonenumber", + "input": true, + "label": "Signing Authority Phone Number:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputMode": "decimal", + "inputType": "tel", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "enuv60n", + "key": "signingAuthorityEmail", + "mask": false, + "type": "simpleemail", + "input": true, + "label": "Signing Authority Email:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "kickbox": { + "enabled": false + }, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "email", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "epfrjgg", + "key": "whoAreTheOwnersOfTheOrganization", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Who are the owners of the organization?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 100, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e97wgb", + "key": "doesYourOrganizationHaveABoardOrOtherGoverningBody", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Does your organization have a board or other governing body?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e2913ws", + "key": "dataGrid", + "tree": true, + "type": "datagrid", + "input": true, + "label": "If yes, please list your board member names and their roles. Add more lines as needed or append a list to your application. ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "eq6eq6e", + "key": "boardMember", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Board Member", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eeh865e", + "key": "role", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Role", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "doesYourOrganizationHaveABoardOrOtherGoverningBody" + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "role": "", + "boardMember": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "e5l4fi", + "key": "doesYourOrganizationHaveAParentCompany", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Does your organization have a parent company?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "epgh9e8", + "key": "ifYesNameOfParentCompany", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "If yes, name of parent company:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "doesYourOrganizationHaveAParentCompany" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ezufrbn", + "key": "doesYourOrganizationHaveAnySubsidiaryAffiliatedOrRelatedCompanies", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Does your organization have any subsidiary, affiliated or related companies?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e03egfw", + "key": "ifYesProvideTheFollowingInformationForEach", + "tree": true, + "type": "datagrid", + "input": true, + "label": "If yes, provide the following information for each: ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "e5bdqz9", + "key": "businessName", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Business Name", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e8u5ay6", + "key": "purposeMission", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Purpose/Mission", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eubod2", + "key": "relationshipToYourOrganization", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Relationship to your Organization", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "doesYourOrganizationHaveAnySubsidiaryAffiliatedOrRelatedCompanies" + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "businessName": "", + "purposeMission": "", + "relationshipToYourOrganization": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "eykwvna", + "key": "ifApplicableIncludeAListOfMajorShareholdersThatHoldMoreThan10OwnershipOfYourBusiness", + "tree": true, + "type": "datagrid", + "input": true, + "label": "If applicable, include a list of major shareholders that hold more than 10% ownership of your business.", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "evaul37", + "key": "name", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Name", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e8olaga8", + "key": "indigenousWorkForce1", + "mask": false, + "type": "number", + "input": true, + "label": "Ownership Percentage", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "%", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 2, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "evun9hi", + "key": "hasYourOrganizationPreviouslyReceivedFederalOrProvincialLoansGrantsOrOtherFormsOfGovernmentFundingIfSoPleaseListBelow", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Has your organization previously received federal or provincial loans, grants or other forms of government funding? If so, please list below. ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "e2wuz6", + "key": "programSource", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Program/Source", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eoqf7za", + "key": "yearReceived1", + "type": "simplenumber", + "input": true, + "label": "Year Received", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "enxw17b", + "key": "amountReceived1", + "mask": false, + "type": "simplecurrencyadvanced", + "input": true, + "label": "Amount Received", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "ee8bkh5", + "key": "employeeList", + "rows": [ + [ + { + "components": [ + { + "id": "er5afgf", + "key": "simplecontent14", + "html": "

How many employees does your organization currently employ?

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ebn4xbd", + "key": "fullTime3", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

In B.C.

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ecklnks", + "key": "fullTime4", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Outside B.C.

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "esna6b8", + "key": "fullTime", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Full-time

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ef04sr", + "key": "fulltimeInBC", + "mask": false, + "type": "number", + "input": true, + "label": "Employee", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + }, + { + "components": [ + { + "id": "efiroew", + "key": "fulltimeoutsidebc", + "mask": false, + "type": "number", + "input": true, + "label": "Employee", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "ev619pq", + "key": "fullTime2", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Part-time

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "etqrc1", + "key": "parttimeinbc", + "mask": false, + "type": "number", + "input": true, + "label": "Employee", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + }, + { + "components": [ + { + "id": "emv7smp", + "key": "parttimeoutsidebc", + "mask": false, + "type": "number", + "input": true, + "label": "Employee", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "e7tx6j", + "key": "fullTime1", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Seasonal/Contractor

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ezvsm2", + "key": "seasonalinbc", + "mask": false, + "type": "number", + "input": true, + "label": "Employee", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + }, + { + "components": [ + { + "id": "ezz0caa", + "key": "seasonaloutsidebc", + "mask": false, + "type": "number", + "input": true, + "label": "Employee", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "How many employees does your organization currently employ in BC?", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 3, + "numRows": 4, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eftfxhg", + "key": "employeeList1", + "rows": [ + [ + { + "components": [ + { + "id": "emdscy8", + "key": "simplecontent15", + "html": "

To the best of your knowledge, approximately what percentage of your current workforce and management identity as: 

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ewh2t56", + "key": "fullTime5", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Percent

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "eu47qk", + "key": "fullTime7", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Workforce", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Indigenous Peoples: First Nations (status or non-status), Métis, or Inuit

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "essl4w5e", + "key": "indigenousWorkForce", + "mask": false, + "type": "number", + "input": true, + "label": "Percentage", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "%", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 2, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "exdzhto", + "key": "fullTime8", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Racialized persons (not including Indigenous Peoples)

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "e91ug8k", + "key": "womenWorkForce1", + "mask": false, + "type": "number", + "input": true, + "label": "Percentage", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "%", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 2, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "el5ugj", + "key": "fullTime9", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Women

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "emagqqd", + "key": "peopleofcolourWorkForce2", + "mask": false, + "type": "number", + "input": true, + "label": "Percentage", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "%", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 2, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "How many employees does your organization currently employ in BC?", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 2, + "numRows": 4, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ei7wkgn", + "key": "describeTheTypeAndQualityOfEmploymentThatYourOrganizationOffersIncludingAnyDetailsAboutHowYourOrganizationCreatesAndSustainsLongLastingWellPayingJobOpportunitiesForLocalWorkers", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Describe the type and quality of employment that your organization offers, including any details about how your organization creates and sustains long-lasting, well-paying job opportunities for local workers.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ecu4yg", + "key": "columns", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "eb8ufb", + "key": "table", + "rows": [ + [ + { + "components": [ + { + "id": "e8u25pc", + "key": "previous1", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ep951x", + "key": "table6", + "rows": [ + [ + { + "components": [ + { + "id": "ej7am26", + "key": "next1", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "projectInformation", + "label": "PROJECT INFORMATION", + "components": [ + { + "id": "exe3dtl", + "key": "provideADetailedDescriptionOfTheProjectsOverallObjectivesAndDesiredOutcomes", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Provide a detailed description of the project’s overall objectives and desired outcomes.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 400, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 400 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eswno4l", + "key": "whatIsAreTheProductSThatWillBeManufacturedAsAResultOfTheCapitalProject", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "What is/are the product(s) that will be manufactured as a result of the capital project?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 100, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ej6yo3rr", + "key": "willTheCapitalProjectRequireTheUseOfNewTechnologiesOrProcesses", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Will the capital project require the use of new, technologies or processes? ", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes – please describe below", + "value": "yesPleaseDescribeBelow", + "shortcut": "" + }, + { + "label": "Somewhat – please describe below ", + "value": "somewhatPleaseDescribeBelow", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ehz69d", + "key": "ifYesOrSomewhatPleaseDescribeThePotentialRisksAndHowThoseWillBeMitigated", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "If Yes or Somewhat, please describe the potential risks and how those will be mitigated: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eujhygn", + "key": "indicateWhichProcessListedBelowBestAlignsWithYourOrganizationsOperationsChooseAllThatApply", + "data": { + "url": "" + }, + "type": "simplecheckboxes", + "input": true, + "label": "Indicate which process listed below best aligns with your organization’s operations (choose all that apply):", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Cultivation/extraction (i.e. logging, plant cultivation, mining) ", + "value": "cultivationExtractionIELoggingPlantCultivationMining", + "shortcut": "" + }, + { + "label": "Primary processing of raw materials (i.e. initial treatment of raw material to prepare them for shipment for further processing, such as manufacturing lumber from raw logs)", + "value": "primaryProcessingOfRawMaterialsIEInitialTreatmentOfRawMaterialToPrepareThemForShipmentForFurtherProcessingSuchAsManufacturingLumberFromRawLogs", + "shortcut": "" + }, + { + "label": "Secondary processing (processes used to further modify the output of primary processing to improve the material’s properties, appearance, and dimensions, such as using lumber to create wooden pallets, cabinets and countertops, veneer, etc.)", + "value": "secondaryProcessingProcessesUsedToFurtherModifyTheOutputOfPrimaryProcessingToImproveTheMaterialsPropertiesAppearanceAndDimensionsSuchAsUsingLumberToCreateWoodenPalletsCabinetsAndCountertopsVeneerEtc", + "shortcut": "" + }, + { + "label": "Advanced manufacturing (the use of innovative technology such as robotics, 3D printing, automation or other advanced technologies to create value-added products such as mass timber, or bioproducts, etc.)", + "value": "advancedManufacturingTheUseOfInnovativeTechnologySuchAsRobotics3DPrintingAutomationOrOtherAdvancedTechnologiesToCreateValueAddedProductsSuchAsMassTimberOrBioproductsEtc", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e1mkhr", + "key": "brieflyExplain", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Briefly explain: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ekpvpf4", + "key": "whoAreTheKeyManagementStaffThatWillDeliverCompleteTheProjectProvideTheirNamesTheirRolesOnTheProjectAndAShortDescriptionOfAnyRelevantExperienceAndQualifications", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Who are the key management staff that will deliver/complete the project? Provide their names, their roles on the project, and a short description of any relevant experience and qualifications. You are encouraged to attach the resumes/bios of the key management staff on the project. ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "ehfhx0j", + "key": "name1", + "mask": false, + "rows": 3, + "type": "simpletextareaadvanced", + "input": true, + "label": "Name", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "el3cpi7", + "key": "role1", + "mask": false, + "rows": 3, + "type": "simpletextareaadvanced", + "input": true, + "label": "Role", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eqe8hws", + "key": "relevantExperience1", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Relevant Experience", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "name1": "", + "role1": "", + "relevantExperience1": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "ejjx7t", + "key": "ifYourOrganizationHasExperienceImplementingSimilarCapitalProjectsDescribeThePurposeOfTheProjectWhenItWasCompletedAndTheTotalProjectBudget", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "If your organization has experience implementing similar capital projects, describe the purpose of the project, when it was completed and the total project budget. ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e07c30t", + "key": "listAnyProjectPartnersThatHaveAStakeOrRoleInTheProjectFinancialOrSimilarIncludingTheirSpecificRolesAndContributionsToTheProject", + "tree": true, + "type": "datagrid", + "input": true, + "label": "List any project partners that have a stake or role in the project (financial or similar) including their specific roles and contributions to the project.", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "eil0uof", + "key": "projectPartner1", + "mask": false, + "rows": 3, + "type": "simpletextareaadvanced", + "input": true, + "label": "Project Partner", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e2d270l", + "key": "role1", + "mask": false, + "rows": 3, + "type": "simpletextareaadvanced", + "input": true, + "label": "Role", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e49wqbw", + "key": "simpletextareaadvanced", + "mask": false, + "rows": 3, + "type": "simpletextareaadvanced", + "input": true, + "label": "Contact Name", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "edevf7j", + "key": "simpletextareaadvanced1", + "mask": false, + "rows": 3, + "type": "simpletextareaadvanced", + "input": true, + "label": "Contact Email", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ewshcp", + "key": "contactPhoneNumber", + "mask": false, + "type": "simplephonenumber", + "input": true, + "label": "Contact Phone Number", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputMode": "decimal", + "inputType": "tel", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "row justify-content-around", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "role1": "", + "projectPartner1": "", + "contactPhoneNumber": "", + "simpletextareaadvanced": "", + "simpletextareaadvanced1": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "ej3i6n", + "key": "doWeHavePermissionToContactThemAsNeeded", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Do we have permission to contact them as needed? ", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No (please explain): ", + "value": "noPleaseExplain", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ekar938", + "key": "simpletextarea2", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Multi-line Text", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 100, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": true, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "noPleaseExplain", + "show": true, + "when": "doWeHavePermissionToContactThemAsNeeded" + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eo8eee", + "key": "willNewIntellectualPropertyIpBeCreatedAsAResultOfThisProjectIntellectualPropertyIsUsedToDefineAConceptInWhichIntellectualCreativePursuitsSuchAsInventionsDesignsConceptsSoftwareTradeSecretsEtcAreTreatedAsProperty", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Will new Intellectual Property (IP) be created as a result of this project? Intellectual Property is used to define a concept in which intellectual/creative pursuits – such as inventions, designs, concepts, software, trade secrets, etc. – are treated as property. ", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e71opl", + "key": "ifYesWillYourOrganizationOwnTheIp", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "If yes – will your organization own the IP? ", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes, fully", + "value": "yesFully", + "shortcut": "" + }, + { + "label": "Yes, partially ", + "value": "yesPartially", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e1gn2bq", + "key": "ifApplicableBrieflyDescribeTheIpStrategyTheOrganizationWillUseToManageItAndWhatTheOwnershipStructureLooksLikeIfYouDontOwnItExplainWhoTheOwnerIsAndHowYourOrganizationHasRightsToUseIt", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "If applicable, briefly describe the IP strategy the organization will use to manage it and what the ownership structure looks like. If you don’t own it, explain who the owner is and how your organization has rights to use it.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "efi00sc", + "key": "simplecontent4", + "html": "

Project Schedule 

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "evzimme", + "key": "simplecontent5", + "html": "

Complete this schedule for all major project stages and milestones. We will use this information to track the progress of the project if a Contribution Agreement is signed. 

Please confirm your project’s targeted start and end date:

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "esyzv1m", + "key": "simpleday", + "type": "simpleday", + "input": true, + "label": "Start Date", + "addons": [], + "fields": { + "day": { + "hide": false, + "type": "select", + "required": false, + "placeholder": "" + }, + "year": { + "hide": false, + "type": "select", + "minYear": 2023, + "required": false, + "placeholder": "" + }, + "month": { + "hide": false, + "type": "select", + "required": false, + "placeholder": "" + } + }, + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "minYear": 2023, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dayFirst": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": "00/00/0000", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "hideInputLabels": false, + "customConditional": " $(document).on(\"keydown\", function(e) {\r\n if(e.keyCode == 69 ) {\r\n e.stopImmediatePropagation();\r\n return;\r\n }\r\n });", + "allowMultipleMasks": false, + "customDefaultValue": "", + "inputsLabelPosition": "top", + "allowCalculateOverride": false + }, + { + "id": "en84ex", + "key": "completionDate", + "type": "simpleday", + "input": true, + "label": "Completion Date ", + "addons": [], + "fields": { + "day": { + "hide": false, + "type": "select", + "required": false, + "placeholder": "" + }, + "year": { + "hide": false, + "type": "select", + "minYear": 2023, + "required": false, + "placeholder": "" + }, + "month": { + "hide": false, + "type": "select", + "required": false, + "placeholder": "" + } + }, + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "minYear": 2023, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dayFirst": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": "00/00/0000", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "hideInputLabels": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "inputsLabelPosition": "top", + "allowCalculateOverride": false + }, + { + "id": "eya6pdm", + "key": "simplecontent10", + "html": "

Project Stage #1

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "elx2d3l", + "key": "simpletextarea1", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Describe:", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "etj3ts9", + "key": "projectStage1", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Project Stage #1", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "ex07hbs9", + "key": "stage1MajorProjectMilestones1", + "mask": false, + "rows": 3, + "type": "simpletextareaadvanced", + "input": true, + "label": "Stage #1: Major Project Milestones", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e2aolqa", + "key": "simpledatetimeadvanced", + "type": "simpledatetimeadvanced", + "input": true, + "label": "Anticipated Start (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "egxytvi", + "key": "simpledatetimeadvanced1", + "type": "simpledatetimeadvanced", + "input": true, + "label": "Anticipated Completion (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "ej26y3h", + "key": "approximateCost", + "mask": false, + "type": "simplecurrencyadvanced", + "input": true, + "label": "Approximate Cost", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "anticipatedStartMmDdYy": "", + "anticipatedCompletionMmDdYy": "", + "stage1MajorProjectMilestones": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "eompwi", + "key": "simplecontent11", + "html": "

Project Stage #2

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "exhn1f4", + "key": "describe1", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Describe: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e3wpo3j", + "key": "projectStage2", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Project Stage #2", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "enchiyf", + "key": "stage2MajorProjectMilestones", + "mask": false, + "rows": 3, + "type": "simpletextareaadvanced", + "input": true, + "label": "Stage #2: Major Project Milestones", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "enb8t9", + "key": "simpledatetimeadvanced2", + "type": "simpledatetimeadvanced", + "input": true, + "label": "Anticipated Start (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "endot7t", + "key": "simpledatetimeadvanced3", + "type": "simpledatetimeadvanced", + "input": true, + "label": "Anticipated Completion (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "emdu5fe", + "key": "approximateCost", + "mask": false, + "type": "simplecurrencyadvanced", + "input": true, + "label": "Approximate Cost", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "anticipatedStartMmDdYy": "", + "anticipatedStartMmDdYy1": "", + "stage1MajorProjectMilestones": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "euxluyb", + "key": "simplecontent12", + "html": "

Project Stage #3

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ebyree2", + "key": "describe2", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Describe: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e6v5eli", + "key": "projectStage3", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Project Stage #3", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "e2e5u7c", + "key": "stage3MajorProjectMilestones1", + "mask": false, + "rows": 3, + "type": "simpletextareaadvanced", + "input": true, + "label": "Stage #3: Major Project Milestones", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ed5zl18", + "key": "simpledatetimeadvanced4", + "type": "simpledatetimeadvanced", + "input": true, + "label": "Anticipated Start (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "e77iiri", + "key": "simpledatetimeadvanced5", + "type": "simpledatetimeadvanced", + "input": true, + "label": "Anticipated Completion (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "e6df3c2", + "key": "approximateCost", + "mask": false, + "type": "simplecurrencyadvanced", + "input": true, + "label": "Approximate Cost", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "anticipatedStartMmDdYy": "", + "anticipatedCompletionMmDdYy": "", + "stage3MajorProjectMilestones": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "ei6z8in", + "key": "simplecontent17", + "html": "

Project Stage #4

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e1jvd3o", + "key": "describe3", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Describe: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "en94amn", + "key": "projectStage4", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Project Stage #4", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "e8t6pfc", + "key": "stage3MajorProjectMilestones1", + "mask": false, + "rows": 3, + "type": "simpletextareaadvanced", + "input": true, + "label": "Stage #3: Major Project Milestones", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ecvpu79", + "key": "simpledatetimeadvanced6", + "type": "simpledatetimeadvanced", + "input": true, + "label": "Anticipated Start (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "e8tnuiq", + "key": "simpledatetimeadvanced7", + "type": "simpledatetimeadvanced", + "input": true, + "label": "Anticipated Completion (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "e7j5wrk", + "key": "approximateCost", + "mask": false, + "type": "simplecurrencyadvanced", + "input": true, + "label": "Approximate Cost", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "anticipatedStartMmDdYy": "", + "anticipatedCompletionMmDdYy": "", + "stage3MajorProjectMilestones": "", + "stage3MajorProjectMilestones1": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "es5uval", + "key": "isTheProposedProjectPartOfALargerCapitalProject", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Is the proposed project part of a larger capital project?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e6dxne", + "key": "ifYesOutlineTheScopeOfTheLargerProjectAndHowItRelatesToAndOrDiffersFromThisPhaseOfTheProject", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "If yes, outline the scope of the larger project and how it relates to and/or differs from this phase of the project.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 100, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "isTheProposedProjectPartOfALargerCapitalProject" + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "egu37fs", + "key": "haveYouEngagedTheMunicipalityToBeginTheProcessToObtainAnyRequiredPermitsRegulatoryApprovalsForTheProjectPleaseDescribeIncludingWhenPermitsAreExpected", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Have you engaged the municipality to begin the process to obtain any required permits/regulatory approvals for the project? Please describe, including when permits are expected.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "esczt", + "key": "whatActivitiesHaveAlreadyBeenCompletedToPrepareForTheCapitalProjectEGEngineeringDesignPlansEnvironmentalAssessmentsFundingConfirmationsPermitsEtc", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "What activities have already been completed to prepare for the capital project (e.g., engineering/design plans, environmental assessments, funding confirmations, permits, etc.)? ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ec35lqp", + "key": "whatRemainingActivitiesNeedToBeCompletedBeforeYouCanBeginTheCapitalProjectEGEngineeringDesignPlansEnvironmentalAssessmentsFundingConfirmationsPermits", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "What remaining activities need to be completed before you can begin the capital project (e.g., engineering/design plans, environmental assessments, funding confirmations, permits)? ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "egpmbtq", + "key": "haveYouEngagedTheLocalCommunityWhereYourProjectWillOccurToConfirmTheirSupport", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Have you engaged the local community where your project will occur to confirm their support?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ere398a", + "key": "ifYesDoYouHaveCommunitySupportEndorsementWhetherFormalOrInformalPleaseAttachAnySupportingDocumentationEGLettersOfSupportLettersOfUnderstandingCouncilResolutionsEtc", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "If yes, do you have community support/endorsement, whether formal or informal? Please attach any supporting documentation (e.g., letters of support, letters of understanding, Council resolutions, etc.).", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "haveYouEngagedTheLocalCommunityWhereYourProjectWillOccurToConfirmTheirSupport" + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e65q9fo", + "key": "dataGrid1", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Data Grid", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "ebw13t8", + "key": "supporter", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Supporter ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eir0q4o", + "key": "descriptionOfTypeOfSupport", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Description of Type of Support", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "ifYesDoYouHaveCommunitySupportEndorsementWhetherFormalOrInformalPleaseAttachAnySupportingDocumentationEGLettersOfSupportLettersOfUnderstandingCouncilResolutionsEtc" + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "supporter": "", + "descriptionOfTypeOfSupport": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "eqje7zb", + "key": "hasYourOrganizationEngagedWithLocalFirstNationSRegardingTheProject", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Has your organization engaged with local First Nation(s) regarding the project?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "erugrrp", + "key": "ifYesDescribeTheEngagementThatTookPlaceAndWhetherYouHaveSupportForTheProjectIfNotExplainWhyNoEngagementHasTakenPlacePleaseAttachAnySupportingDocumentationEGLettersOfSupportLettersOfUnderstandingCouncilResolutionsEtc", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "If yes, describe the engagement that took place and whether you have support for the project. If not, explain why no engagement has taken place. Please attach any supporting documentation (e.g., letters of support, letters of understanding, Council resolutions, etc.)", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "hasYourOrganizationEngagedWithLocalFirstNationSRegardingTheProject" + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "etg2ot", + "key": "dataGrid2", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Identify the key operational or financial risks/barriers to your projects’ success (i.e. litigation, duties and tariffs, challenges with accessing sufficient workforce or supplies, operational or equipment-related challenges, financing plan risks, etc.) and any mitigation strategies that are in place.", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "e7bblwc", + "key": "risk", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Risk", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e6vq4c9", + "key": "mitigationStrategy", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Mitigation Strategy", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "eaxr8ui", + "key": "columns4", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "enkowqm", + "key": "table7", + "rows": [ + [ + { + "components": [ + { + "id": "evql68", + "key": "previous2", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ey8315g", + "key": "table8", + "rows": [ + [ + { + "components": [ + { + "id": "ezakmr", + "key": "next2", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "projectMarketAssessment", + "label": "PROJECT MARKET ASSESSMENT", + "components": [ + { + "id": "enrua5", + "key": "whereWillTheProductsThatAreManufacturedAsAResultOfThisProjectBeDistributedSelectAllThatApply", + "data": { + "url": "" + }, + "type": "simplecheckboxes", + "input": true, + "label": "Where will the products that are manufactured as a result of this project be distributed? Select all that apply.", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Within same community/region", + "value": "withinSameCommunityRegion", + "shortcut": "" + }, + { + "label": "Throughout B.C.", + "value": "throughoutBC", + "shortcut": "" + }, + { + "label": "Within Canada", + "value": "withinCanada", + "shortcut": "" + }, + { + "label": "Within North America", + "value": "withinNorthAmerica", + "shortcut": "" + }, + { + "label": "Internationally ", + "value": "internationally", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "eietg9m", + "key": "haveYouConductedAnAnalysisOfTheMarketToConfirmAStableAndOngoingDemandForYourProductsIfYesPleaseAttachAnyDocumentationOutliningTheMarketAssessment", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Have you conducted an analysis of the market to confirm a stable and ongoing demand for your products? If yes, please attach any documentation outlining the market assessment.", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + }, + { + "label": "In progress", + "value": "inProgress", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e84qpxu", + "key": "provideABriefIndustryOverviewThatIncludesCurrentConditionAndFutureOutlookForTheSectorYourOrganizationIsIn", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Provide a brief industry overview that includes current condition and future outlook for the sector your organization is in.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e170rvd", + "key": "whoIsTheTargetMarketForTheProductSBeingCreatedAsAResultOfTheCapitalProject", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Who is the target market for the product(s) being created as a result of the capital project? ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 100, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e1gm83", + "key": "provideARationaleThatThereIsMarketDemandForTheSpecificProductSYourOrganizationIsCreatingDescribeExistingVendorCustomerRelationshipsIfRelevant", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Provide a rationale that there is market demand for the specific product(s) your organization is creating. Describe existing vendor/customer relationships if relevant.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e95sz4j", + "key": "provideYourTopFiveCustomersInTermsOfRevenueAndTheApproximatePercentageShareOfTotalRevenueThatEachCustomerRepresentsForTheMostRecentCompletedFiscalYear", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Provide your top five customers in terms of revenue and the approximate percentage share of total revenue that each customer represents for the most recent completed fiscal year. ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "eo3o0ur", + "key": "customer", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Customer", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "exaes7", + "key": "simplecurrencyadvanced", + "mask": false, + "type": "simplecurrencyadvanced", + "input": true, + "label": "Revenue", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ebokg2s", + "key": "ofTotalRevenue", + "type": "simplenumber", + "input": true, + "label": "% of Total Revenue", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "eordn94", + "key": "identifyYourKeyCompetitorsAndTheirMarketShare", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Identify your key competitors and their market share: ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "e7upryo6", + "key": "keyCompetitor", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Key Competitor", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e5ugrw", + "key": "marketShare", + "type": "simplenumber", + "input": true, + "label": "Market Share", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "e7utypt", + "key": "simplenumber", + "type": "simplenumber", + "input": true, + "label": "Your own market share %", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e99pgpa", + "key": "howDoesYourOrganizationDifferFromOthersInTheMarketplaceAndWhatIsUniqueAboutYourProductOrganizationIEWhatMakesYourOrganizationCompetitiveInTheMarket", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "How does your organization differ from others in the marketplace and what is unique about your product/organization (i.e. what makes your organization competitive in the market)? ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ey4cw2l", + "key": "listTheSpecificInputMaterialsSuppliesYourOrganizationRequiresForTheProductSCreatedInTheCapitalProjectIncludeWhereTheMaterialsSuppliesAreSourcedFrom", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "List the specific input materials/supplies your organization requires for the product(s) created in the capital project. Include where the materials/supplies are sourced from.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ehvlqb", + "key": "simplecontent6", + "html": "

Forestry Sector Questions*

Skip the following four questions if your organization does not process wood materials. 

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ero9noi", + "key": "whatAreYourSourcesOfForestInputMaterials", + "data": { + "url": "" + }, + "type": "simplecheckboxes", + "input": true, + "label": "What are your sources of forest input materials?*", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Community Forests", + "value": "communityForests", + "shortcut": "" + }, + { + "label": "Forest Tenures ", + "value": "forestTenures", + "shortcut": "" + }, + { + "label": "BC Timber Sales", + "value": "bcTimberSales", + "shortcut": "" + }, + { + "label": "Open market fibre purchases", + "value": "openMarketFibrePurchases", + "shortcut": "" + }, + { + "label": "Other – please describe below", + "value": "otherPleaseDescribeBelow", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e0a1hp9", + "key": "otherPleaseDescribeBelow", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Other – please describe below", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": true, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ekkp3a", + "key": "ifApplicableWhatIsYourForestTenureVolume", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "If applicable, what is your forest tenure volume?*", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 100, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e07h9uq", + "key": "whatAreYourApproximateAnnualFibreWoodRequirementsForYourOperationsInBoardFeetCubicMetresOrOtherUnitsAsApplicable", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "What are your approximate annual fibre/wood requirements for your operations (in board feet, cubic metres, or other units as applicable)?*", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "et3zas", + "key": "howConcernedAreYouAboutYourOrganizationsAbilityToAccessAConsistentFibreSupplyToMeetYourProductionNeeds", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "How concerned are you about your organization’s ability to access a consistent fibre supply to meet your production needs?*", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Very concerned", + "value": "veryConcerned", + "shortcut": "" + }, + { + "label": "Somewhat concerned", + "value": "somewhatConcerned", + "shortcut": "" + }, + { + "label": "Not at all concerned ", + "value": "notAtAllConcerned", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ebz9dxi", + "key": "provideDetail", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Provide detail:", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "er4wv75", + "key": "columns5", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "edeivm", + "key": "table9", + "rows": [ + [ + { + "components": [ + { + "id": "e7eb21r", + "key": "previous3", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ewp25u8", + "key": "table10", + "rows": [ + [ + { + "components": [ + { + "id": "e5atorh", + "key": "next3", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "impactAndAlignmentWithProgramGoals", + "label": " IMPACT AND ALIGNMENT WITH PROGRAM GOALS ", + "components": [ + { + "id": "enouymo", + "key": "willThisProjectProceedIfItDoesNotReceiveFundingUnderTheManufacturingJobsFundSelectAllThatApply", + "data": { + "url": "" + }, + "type": "simplecheckboxes", + "input": true, + "label": "Will this project proceed if it does not receive funding under the Manufacturing Jobs Fund? (Select all that apply)", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "The project will not be undertaken", + "value": "theProjectWillNotBeUndertaken", + "shortcut": "" + }, + { + "label": "The project will be undertaken, but not in B.C.", + "value": "theProjectWillBeUndertakenButNotInBC", + "shortcut": "" + }, + { + "label": "The project will be undertaken, but at a slower pace", + "value": "theProjectWillBeUndertakenButAtASlowerPace", + "shortcut": "" + }, + { + "label": "The project will be undertaken, but with a reduced scope or objectives", + "value": "theProjectWillBeUndertakenButWithAReducedScopeOrObjectives", + "shortcut": "" + }, + { + "label": "The project will be undertaken as planned", + "value": "theProjectWillBeUndertakenAsPlanned", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ef7cmsc", + "key": "describe", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Describe:", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ehjfdiq", + "key": "isYourOrganizationInImmediateRiskOfClosingReducingOperationsOrLayingOffStaffIEWithinTheNext6Months", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Is your organization in immediate risk of closing, reducing operations, or laying-off staff? (i.e. within the next 6 months)", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "eb2hk6", + "key": "ifYesIndicateTheApproximateNumberOfStaffWhoWillBeImpactedViaPermanentOrTemporaryLayOffs", + "type": "simplenumber", + "input": true, + "label": "If yes, indicate the approximate number of staff who will be impacted via permanent or temporary lay-offs:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "isYourOrganizationInImmediateRiskOfClosingReducingOperationsOrLayingOffStaffIEWithinTheNext6Months" + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e9id8y", + "key": "provideDetail1", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Provide detail: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "em9i7il", + "key": "employeeList2", + "rows": [ + [ + { + "components": [ + { + "id": "e1u8xch", + "key": "howManyDirectPermanentJobsWillBeCreatedAtTheProjectLocationAsAResultOfTheCapitalProject", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "How many direct permanent jobs will be created at the project location as a result of the capital project?", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ewsptmi", + "key": "simplecontent13", + "html": "

How many direct permanent jobs will be created at the project location as a result of the capital project?

", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ezyhg2b", + "key": "fullTime6", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "ep51xdg", + "key": "fullTime11", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Management-Level or Senior Roles (For example, over $70,000 per year)

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ea5umi", + "key": "jobsCreatedInProjectLocation", + "mask": false, + "type": "number", + "input": true, + "label": "# of Jobs", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "erzjcnx", + "key": "fullTime12", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Skilled/Mid-level Roles (For example, between $45,000 – $70,000 per year)

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "edkub16", + "key": "jobsMaintainedInProjectLocation", + "mask": false, + "type": "number", + "input": true, + "label": "# of Jobs", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "es188l", + "key": "html1", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "HTML", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Entry-Level Jobs (For example, less than $45,000 per year)

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "e7yu9bb", + "key": "jobsMaintainedInProjectLocation1", + "mask": false, + "type": "number", + "input": true, + "label": "# of Jobs", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eief8rt", + "key": "html2", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "# of Jobs", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "How many employees does your organization currently employ in BC?", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 2, + "numRows": 4, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eoptin8", + "key": "describeHowYourOrganizationWillEnsureItCanAccessTheWorkforceNeededToAchieveAndSustainYourOrganizationsGrowthPlansConsiderAreThereAnyCurrentOrAnticipatedWorkforceGapsOrChallengesThatMightImpactImplementationOfThisProjectAreThereAnySkillsOrJobsWhichWillBeAChallengeToRecruitFor", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Describe how your organization will ensure it can access the workforce needed to achieve and sustain your organization’s growth plans. Consider: Are there any current or anticipated workforce gaps or challenges that might impact implementation of this project? Are there any skills or jobs which will be a challenge to recruit for?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e0cyt7q", + "key": "whatTrainingAndSkillsDevelopmentOpportunitiesWillBeOfferedToYourCurrentAndOrNewWorkforceAsAResultOfThisProjectIncludeHowTheProjectWillCreateOpportunitiesForCareerGrowthAndUpskillingOfCurrentWorkforceIntoNewRolesAsApplicable", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": " What training and skills development opportunities will be offered to your current and/or new workforce as a result of this project? Include how the project will create opportunities for career growth and upskilling of current workforce into new roles, as applicable. ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eie6y3t", + "key": "willYourProjectCreateOpportunitiesForIndigenousPeoplesOrFirstNationsSelectAllThatApply", + "data": { + "url": "" + }, + "type": "simplecheckboxes", + "input": true, + "label": "Will your project create opportunities for Indigenous Peoples or First Nations? (Select all that apply)", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "My organization is Indigenous or First Nation-led (with 51% or more controlling interest).", + "value": "myOrganizationIsIndigenousOrFirstNationLedWith51OrMoreControllingInterest", + "shortcut": "" + }, + { + "label": "My project will create an ongoing business opportunity for an Indigenous-led entity or First Nation-led enterprise (including as investor or partner with 50% or less controlling-interest).", + "value": "myProjectWillCreateAnOngoingBusinessOpportunityForAnIndigenousLedEntityOrFirstNationLedEnterpriseIncludingAsInvestorOrPartnerWith50OrLessControllingInterest", + "shortcut": "" + }, + { + "label": "My project creates a time-limited business opportunity for at least one Indigenous business (i.e. a contracting business used for the capital project).", + "value": "myProjectCreatesATimeLimitedBusinessOpportunityForAtLeastOneIndigenousBusinessIEAContractingBusinessUsedForTheCapitalProject", + "shortcut": "" + }, + { + "label": "My project brings benefits to an Indigenous community including through existing revenue sharing agreements and purchasing fibre from tenures. ", + "value": "myProjectBringsBenefitsToAnIndigenousCommunityIncludingThroughExistingRevenueSharingAgreementsAndPurchasingFibreFromTenures", + "shortcut": "" + }, + { + "label": "None of the above/not applicable", + "value": "noneOfTheAboveNotApplicable", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "emdvtzm", + "key": "brieflyExplain2", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": " Briefly explain:", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ex7evh5", + "key": "doesYourOrganizationHavePoliciesAndPracticesToAttractAndRetainIndigenousWorkersAndUnderrepresentedMarginalizedGroupsIncludingSpecificTrainingAndEducationProgramOrWrapAroundServices", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Does your organization have policies and practices to attract and retain Indigenous workers and underrepresented/marginalized groups, including specific training and education program or wrap-around services? ", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + }, + { + "label": "No, but are currently developing these policies and practices", + "value": "noButAreCurrentlyDevelopingThesePoliciesAndPractices", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e5lf7bq", + "key": "provideDetails", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Provide details:", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "efoc7n", + "key": "willTheProjectResultInIncreasedJobOpportunitiesForTheFollowingGroupsCheckAllThatApply", + "data": { + "url": "" + }, + "type": "simplecheckboxes", + "input": true, + "label": "Will the project result in increased job opportunities for the following groups? (Check all that apply):", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Forestry displaced workers", + "value": "forestryDisplacedWorkers", + "shortcut": "" + }, + { + "label": "Youth (under 25 years), co-ops or interns ", + "value": "youthUnder25YearsCoOpsOrInterns", + "shortcut": "" + }, + { + "label": "Indigenous Peoples ", + "value": "indigenousPeoples", + "shortcut": "" + }, + { + "label": "Other marginalized/equity deserving groups", + "value": "otherMarginalizedEquityDeservingGroups", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ewk4k3an", + "key": "brieflyExplain1", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Briefly explain:", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ecmmczc", + "key": "doesYourOrganizationCurrentlyHaveEstablishedPoliciesAndOrPracticesToSupportADiverseEquitableAndInclusiveWorkforce", + "data": { + "url": "" + }, + "type": "simpleradios", + "input": true, + "label": "Does your organization currently have established policies and/or practices to support a diverse, equitable, and inclusive workforce?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes (please include proof of this as supplemental documentation)", + "value": "yesPleaseIncludeProofOfThisAsSupplementalDocumentation", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + }, + { + "label": "No, but are currently developing these policies and practices", + "value": "noButAreCurrentlyDevelopingThesePoliciesAndPractices", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "eoo0wpb", + "key": "pleaseExplainHowYourOrganizationDemonstratesDiversityEquityAndInclusionInYourPractices", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Please explain how your organization demonstrates diversity, equity and inclusion in your practices. ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "egu6rcv", + "key": "asideFromJobsDescribeAnyOtherBenefitsTheProjectAndOrYourOrganizationBringToTheLocalCommunity", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Aside from jobs, describe any other benefits the project and/or your organization bring to the local community.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eaqassa", + "key": "whichSupplyChainsIndustryPartnersAndOrEstablishedClustersWillBenefitFromTheProjectEitherDirectlyOrIndirectly", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": "Which supply chains, industry partners, and/or established clusters will benefit from the project, either directly or indirectly?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e5nv7lr", + "key": "withRespectToCleanSustainableAndInnovativeManufacturingProcessesPleaseSelectAnyOfTheFollowingThatApplyToYourOperationsAndOrThisProject", + "data": { + "url": "" + }, + "type": "simplecheckboxes", + "input": true, + "label": "With respect to clean, sustainable and innovative manufacturing processes, please select any of the following that apply to your operations and/or this project:", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Adopts or is innovating to create low or zero-carbon intensity products, processes, or methods of production as a part of the project", + "value": "adoptsOrIsInnovatingToCreateLowOrZeroCarbonIntensityProductsProcessesOrMethodsOfProductionAsAPartOfTheProject", + "shortcut": "" + }, + { + "label": "Uses or creates biomaterials to decarbonize products such as concrete, asphalt and plastic components (beyond conventional lumber, pulp, paper, veneers and furniture)", + "value": "usesOrCreatesBiomaterialsToDecarbonizeProductsSuchAsConcreteAsphaltAndPlasticComponentsBeyondConventionalLumberPulpPaperVeneersAndFurniture", + "shortcut": "" + }, + { + "label": "Uses or is innovating to use low carbon fuels such as biodiesel or hydrogen", + "value": "usesOrIsInnovatingToUseLowCarbonFuelsSuchAsBiodieselOrHydrogen", + "shortcut": "" + }, + { + "label": "Uses zero-emission or low carbon fuel vehicles to transport goods ", + "value": "usesZeroEmissionOrLowCarbonFuelVehiclesToTransportGoods", + "shortcut": "" + }, + { + "label": "Creates bioenergy as a secondary benefit of the project (for own use or sale)", + "value": "createsBioenergyAsASecondaryBenefitOfTheProjectForOwnUseOrSale", + "shortcut": "" + }, + { + "label": "Creates or contributes to a circular economy by reusing, repairing, refurbishing, remanufacturing, repurposing, or recycling products and materials ", + "value": "createsOrContributesToACircularEconomyByReusingRepairingRefurbishingRemanufacturingRepurposingOrRecyclingProductsAndMaterials", + "shortcut": "" + }, + { + "label": "Reduces other negative environmental impacts including responsible end-of-life product management and/or uses sustainable packaging options", + "value": "reducesOtherNegativeEnvironmentalImpactsIncludingResponsibleEndOfLifeProductManagementAndOrUsesSustainablePackagingOptions", + "shortcut": "" + }, + { + "label": "Other – please explain ", + "value": "otherPleaseExplain", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e4cog4p", + "key": "provideDetailForAllThatYouSelectedAboveAndSpecifyIfAnyAreRelatedToTheCapitalProject", + "mask": false, + "rows": 3, + "type": "simpletextarea", + "input": true, + "label": " Provide detail for all that you selected above and specify if any are related to the capital project: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 200 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e4couj9", + "key": "columns6", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "edtx2un", + "key": "table11", + "rows": [ + [ + { + "components": [ + { + "id": "ejb35gi", + "key": "previous4", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "enmqif", + "key": "table12", + "rows": [ + [ + { + "components": [ + { + "id": "e9u4xve", + "key": "next4", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "submission", + "label": "SUBMISSION", + "components": [ + { + "id": "efrkjm", + "key": "simplecontent7", + "html": "

Thank you for completing the detailed application form for Stream 2 – Capital Investment of the BC Manufacturing Jobs Fund. Program staff will follow up to request any additional information required to complete the funding assessment. 

Attestation

By submitting this form, I confirm that I have the authority to submit this request and agree to the conditions described below.

  1. All information contained herein is correct and complete to the best of my knowledge;
  2. Awarding of funding to successful applicants will be conditional upon finalization of a contribution agreement that sets out the terms and conditions of the funding (“Funds”);
  3. I consent to receiving email communications regarding this application from the Province of B.C. in relation to the BC Manufacturing Jobs Fund;
  4. I agree to retain supporting documentation and information including but not limited to invoices and receipts, for all expenditures made using the Funds (collectively, the “Supporting Documentation”) for a period of seven years from the date of receipt of the Funds;
  5. I agree that I will provide the Province with additional Supporting Documentation relating to my application or to the use of the Funds received, and agree that the Province may, at any reasonable time and on reasonable notice, attend at my place of business or other premises to inspect, and, at the Province’s discretion, review, copy and audit any records and other materials comprising or relating to the Supporting Documentation, whether produced by or provided to my business, where such records and other materials are the result of or related to the use of Funds and that I will provide reasonable assistance to the Province in exercising these rights; and
  6. I agree that repayment of Funds may be required if the Funds, or any part of them, are used for purposes other than those identified in the program materials as eligible expenses, or if my business is found to be ineligible or if any information provided in this application is not true and accurate.
", + "type": "simplecontent", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "edxkh6s", + "key": "iConfirmThatIHaveTheAuthorityToSubmitThisRequestAndAgreeToTheConditionsDescribedAbove", + "name": "", + "type": "simplecheckbox", + "input": true, + "label": "I confirm that I have the authority to submit this request and agree to the conditions described above. ", + "value": "", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "right", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e3icwcz", + "key": "submit", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "SUBMIT", + "theme": "primary", + "action": "submit", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "saveOnEnter": false, + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ec91s2k", + "key": "columns7", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ej3s4jf", + "key": "table13", + "rows": [ + [ + { + "components": [ + { + "id": "elgu1pj", + "key": "previous5", + "size": "md", + "type": "simplebuttonadvanced", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ], + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "verticalLayout": false, + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + "createdBy": "DVARGHES@idir", + "createdAt": "2024-03-12T21:41:23.721Z", + "updatedBy": null, + "updatedAt": "2024-03-12T21:41:23.670Z", + "published": true +} \ No newline at end of file diff --git a/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/reportingFieldsSubmission.json b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/reportingFieldsSubmission.json new file mode 100644 index 000000000..4354b42c5 --- /dev/null +++ b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/reportingFieldsSubmission.json @@ -0,0 +1,18359 @@ +{ + "form": { + "id": "9f9036ed-3e97-4916-97cc-3fa775b65c07", + "name": "Developer Testing", + "snake": "developer_testing", + "active": true, + "labels": [], + "useCase": "collection", + "ministry": "JEDI", + "schedule": null, + "createdAt": "2024-03-12T21:41:18.021Z", + "createdBy": "DVARGHES@idir", + "subscribe": null, + "updatedAt": "2024-03-12T21:41:17.96Z", + "updatedBy": null, + "description": "", + "formMetadata": null, + "apiIntegration": true, + "wideFormLayout": false, + "deploymentLevel": "test", + "reminder_enabled": false, + "identityProviders": [ + { + "idp": "public", + "code": "public", + "extra": {}, + "login": false, + "roles": null, + "active": true, + "display": "Public", + "primary": false, + "tokenmap": null, + "createdAt": "2020-10-19T17:52:44.383Z", + "createdBy": "migration-002", + "updatedAt": "2020-10-19T17:52:44.383Z", + "updatedBy": null, + "permissions": [] + } + ], + "enableStatusUpdates": false, + "enableSubmitterDraft": false, + "enableDocumentTemplates": false, + "submissionReceivedEmails": [], + "allowSubmitterToUploadFile": false, + "showSubmissionConfirmation": true, + "sendSubmissionReceivedEmail": false, + "enableCopyExistingSubmission": false + }, + "version": { + "id": "8dab3e65-6439-4e50-9354-adf22c0d9b68", + "formId": "9f9036ed-3e97-4916-97cc-3fa775b65c07", + "schema": { + "type": "form", + "display": "form", + "components": [ + { + "id": "eelx9cq", + "key": "tabs", + "tags": [], + "tree": false, + "type": "tabs", + "input": false, + "label": "Tabs", + "logic": [], + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "key": "executiveSummary", + "label": "EXECUTIVE SUMMARY", + "components": [ + { + "id": "eguaywd9", + "key": "content", + "html": "

Please note that information entered in this section may be shared publicly if funding is awarded. 

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ekd3au5", + "key": "organizationLegalName", + "mask": false, + "type": "textfield", + "input": true, + "label": "Organization Legal Name (the lead applicant overseeing the project):", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eusf15", + "key": "projectTitle", + "mask": false, + "type": "textfield", + "input": true, + "label": "Project Title:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "efz6hlq", + "key": "projectLocation", + "mask": false, + "type": "textfield", + "input": true, + "label": "Project Location: ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eif5svvkj", + "key": "eligibleCost", + "mask": false, + "type": "currency", + "input": true, + "label": "Total Eligible Project Costs:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eqk040n", + "key": "totalRequestToMjf", + "mask": false, + "type": "currency", + "input": true, + "label": "Total Request to MJF: \t", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e1ma7nb", + "key": "totalRequestOfEligibleProjectCosts1", + "mask": false, + "type": "number", + "input": true, + "label": "Total Request % of Eligible Project Costs:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "%", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": true, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "value = data.totalRequestToMjf / data.eligibleCost * 100", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "etdbkc", + "key": "simplecontent1", + "html": "

Brief Project Description 

Summarize the proposed project including:

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "efueshi", + "key": "textarea", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Multi-line Text", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 400, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": true, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 400 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eqfpn9r", + "key": "columns3", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "eroa68h", + "key": "table4", + "rows": [ + [ + { + "components": [ + { + "id": "eer0hq", + "key": "previous", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "emq9fi", + "key": "table5", + "rows": [ + [ + { + "components": [ + { + "id": "ec62k3", + "key": "next", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "applicantInformation", + "label": "APPLICANT INFORMATION", + "components": [ + { + "id": "eddn1eq", + "key": "bcBusinessIncorporationRegistrationNumber", + "mask": false, + "type": "textfield", + "input": true, + "label": "BC Business Incorporation/Registration Number: ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e978i6", + "key": "simplecontent2", + "html": "

Please confirm the main contact for your project: 

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "es8zeon", + "key": "contactName", + "mask": false, + "type": "textfield", + "input": true, + "label": "Contact Name:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ec7d5lk", + "key": "contactTitle", + "mask": false, + "type": "textfield", + "input": true, + "label": "Contact Title:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "esx5hxr", + "key": "contactPhoneNumber", + "mask": false, + "type": "phoneNumber", + "input": true, + "label": "Contact Phone Number:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputMode": "decimal", + "inputType": "tel", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ebqcw1a", + "key": "contactEmail", + "mask": false, + "type": "email", + "input": true, + "label": "Contact Email:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "kickbox": { + "enabled": false + }, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "email", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ejb6yrh", + "key": "simplecontent3", + "html": "

Enter the contact information of the person with signing authority at your organization. This is the person that will sign the Contribution Agreement on your organization’s behalf if your project is approved for funding. If same as above, indicate that. 

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eupo7a", + "key": "signingAuthorityName", + "mask": false, + "type": "textfield", + "input": true, + "label": "Signing Authority Name:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "etcaxw8", + "key": "signingAuthorityTitle", + "mask": false, + "type": "textfield", + "input": true, + "label": "Signing Authority Title:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eurjebl", + "key": "signingAuthorityPhoneNumber", + "mask": false, + "type": "phoneNumber", + "input": true, + "label": "Signing Authority Phone Number:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputMode": "decimal", + "inputType": "tel", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "enuv60n", + "key": "signingAuthorityEmail", + "mask": false, + "type": "email", + "input": true, + "label": "Signing Authority Email:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "kickbox": { + "enabled": false + }, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "email", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "epfrjgg", + "key": "whoAreTheOwnersOfTheOrganization", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Who are the owners of the organization?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 100, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e97wgb", + "key": "doesYourOrganizationHaveABoardOrOtherGoverningBody", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "Does your organization have a board or other governing body?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e2913ws", + "key": "dataGrid", + "tree": true, + "type": "datagrid", + "input": true, + "label": "If yes, please list your board member names and their roles. Add more lines as needed or append a list to your application. ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "eq6eq6e", + "key": "boardMember", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Board Member", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eeh865e", + "key": "role", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Role", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "doesYourOrganizationHaveABoardOrOtherGoverningBody" + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "role": "", + "boardMember": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "e5l4fi", + "key": "doesYourOrganizationHaveAParentCompany", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "Does your organization have a parent company?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "epgh9e8", + "key": "ifYesNameOfParentCompany", + "mask": false, + "type": "textfield", + "input": true, + "label": "If yes, name of parent company:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "doesYourOrganizationHaveAParentCompany" + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ezufrbn", + "key": "doesYourOrganizationHaveAnySubsidiaryAffiliatedOrRelatedCompanies", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "Does your organization have any subsidiary, affiliated or related companies?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e03egfw", + "key": "ifYesProvideTheFollowingInformationForEach", + "tree": true, + "type": "datagrid", + "input": true, + "label": "If yes, provide the following information for each: ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "e5bdqz9", + "key": "businessName", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Business Name", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e8u5ay6", + "key": "purposeMission", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Purpose/Mission", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eubod2", + "key": "relationshipToYourOrganization", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Relationship to your Organization", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "doesYourOrganizationHaveAnySubsidiaryAffiliatedOrRelatedCompanies" + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "businessName": "", + "purposeMission": "", + "relationshipToYourOrganization": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "eykwvna", + "key": "ifApplicableIncludeAListOfMajorShareholdersThatHoldMoreThan10OwnershipOfYourBusiness", + "tree": true, + "type": "datagrid", + "input": true, + "label": "If applicable, include a list of major shareholders that hold more than 10% ownership of your business.", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "evaul37", + "key": "name", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Name", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e8olaga8", + "key": "indigenousWorkForce1", + "mask": false, + "type": "number", + "input": true, + "label": "Ownership Percentage", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "%", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 2, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "evun9hi", + "key": "hasYourOrganizationPreviouslyReceivedFederalOrProvincialLoansGrantsOrOtherFormsOfGovernmentFundingIfSoPleaseListBelow", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Has your organization previously received federal or provincial loans, grants or other forms of government funding? If so, please list below. ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "e2wuz6", + "key": "programSource", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Program/Source", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eoqf7za", + "key": "yearReceived1", + "type": "number", + "input": true, + "label": "Year Received", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "enxw17b", + "key": "amountReceived1", + "mask": false, + "type": "currency", + "input": true, + "label": "Amount Received", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "ee8bkh5", + "key": "employeeList", + "rows": [ + [ + { + "components": [ + { + "id": "er5afgf", + "key": "simplecontent14", + "html": "

How many employees does your organization currently employ?

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ebn4xbd", + "key": "fullTime3", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

In B.C.

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ecklnks", + "key": "fullTime4", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Outside B.C.

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "esna6b8", + "key": "fullTime", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Full-time

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ef04sr", + "key": "fulltimeInBC", + "mask": false, + "type": "number", + "input": true, + "label": "Employee", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + }, + { + "components": [ + { + "id": "efiroew", + "key": "fulltimeoutsidebc", + "mask": false, + "type": "number", + "input": true, + "label": "Employee", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "ev619pq", + "key": "fullTime2", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Part-time

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "etqrc1", + "key": "parttimeinbc", + "mask": false, + "type": "number", + "input": true, + "label": "Employee", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + }, + { + "components": [ + { + "id": "emv7smp", + "key": "parttimeoutsidebc", + "mask": false, + "type": "number", + "input": true, + "label": "Employee", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "e7tx6j", + "key": "fullTime1", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Seasonal/Contractor

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ezvsm2", + "key": "seasonalinbc", + "mask": false, + "type": "number", + "input": true, + "label": "Employee", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + }, + { + "components": [ + { + "id": "ezz0caa", + "key": "seasonaloutsidebc", + "mask": false, + "type": "number", + "input": true, + "label": "Employee", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "How many employees does your organization currently employ in BC?", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 3, + "numRows": 4, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eftfxhg", + "key": "employeeList1", + "rows": [ + [ + { + "components": [ + { + "id": "emdscy8", + "key": "simplecontent15", + "html": "

To the best of your knowledge, approximately what percentage of your current workforce and management identity as: 

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ewh2t56", + "key": "fullTime5", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Percent

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "eu47qk", + "key": "fullTime7", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Workforce", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Indigenous Peoples: First Nations (status or non-status), Métis, or Inuit

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "essl4w5e", + "key": "indigenousWorkForce", + "mask": false, + "type": "number", + "input": true, + "label": "Percentage", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "%", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 2, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "exdzhto", + "key": "fullTime8", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Racialized persons (not including Indigenous Peoples)

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "e91ug8k", + "key": "womenWorkForce1", + "mask": false, + "type": "number", + "input": true, + "label": "Percentage", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "%", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 2, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "el5ugj", + "key": "fullTime9", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Women

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "emagqqd", + "key": "peopleofcolourWorkForce2", + "mask": false, + "type": "number", + "input": true, + "label": "Percentage", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "%", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 2, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "How many employees does your organization currently employ in BC?", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 2, + "numRows": 4, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ei7wkgn", + "key": "describeTheTypeAndQualityOfEmploymentThatYourOrganizationOffersIncludingAnyDetailsAboutHowYourOrganizationCreatesAndSustainsLongLastingWellPayingJobOpportunitiesForLocalWorkers", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Describe the type and quality of employment that your organization offers, including any details about how your organization creates and sustains long-lasting, well-paying job opportunities for local workers.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ecu4yg", + "key": "columns", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "eb8ufb", + "key": "table", + "rows": [ + [ + { + "components": [ + { + "id": "e8u25pc", + "key": "previous1", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ep951x", + "key": "table6", + "rows": [ + [ + { + "components": [ + { + "id": "ej7am26", + "key": "next1", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "projectInformation", + "label": "PROJECT INFORMATION", + "components": [ + { + "id": "exe3dtl", + "key": "provideADetailedDescriptionOfTheProjectsOverallObjectivesAndDesiredOutcomes", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Provide a detailed description of the project’s overall objectives and desired outcomes.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 400, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 400 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eswno4l", + "key": "whatIsAreTheProductSThatWillBeManufacturedAsAResultOfTheCapitalProject", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "What is/are the product(s) that will be manufactured as a result of the capital project?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 100, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ej6yo3rr", + "key": "willTheCapitalProjectRequireTheUseOfNewTechnologiesOrProcesses", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "Will the capital project require the use of new, technologies or processes? ", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes – please describe below", + "value": "yesPleaseDescribeBelow", + "shortcut": "" + }, + { + "label": "Somewhat – please describe below ", + "value": "somewhatPleaseDescribeBelow", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ehz69d", + "key": "ifYesOrSomewhatPleaseDescribeThePotentialRisksAndHowThoseWillBeMitigated", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "If Yes or Somewhat, please describe the potential risks and how those will be mitigated: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eujhygn", + "key": "indicateWhichProcessListedBelowBestAlignsWithYourOrganizationsOperationsChooseAllThatApply", + "data": { + "url": "" + }, + "type": "selectboxes", + "input": true, + "label": "Indicate which process listed below best aligns with your organization’s operations (choose all that apply):", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Cultivation/extraction (i.e. logging, plant cultivation, mining) ", + "value": "cultivationExtractionIELoggingPlantCultivationMining", + "shortcut": "" + }, + { + "label": "Primary processing of raw materials (i.e. initial treatment of raw material to prepare them for shipment for further processing, such as manufacturing lumber from raw logs)", + "value": "primaryProcessingOfRawMaterialsIEInitialTreatmentOfRawMaterialToPrepareThemForShipmentForFurtherProcessingSuchAsManufacturingLumberFromRawLogs", + "shortcut": "" + }, + { + "label": "Secondary processing (processes used to further modify the output of primary processing to improve the material’s properties, appearance, and dimensions, such as using lumber to create wooden pallets, cabinets and countertops, veneer, etc.)", + "value": "secondaryProcessingProcessesUsedToFurtherModifyTheOutputOfPrimaryProcessingToImproveTheMaterialsPropertiesAppearanceAndDimensionsSuchAsUsingLumberToCreateWoodenPalletsCabinetsAndCountertopsVeneerEtc", + "shortcut": "" + }, + { + "label": "Advanced manufacturing (the use of innovative technology such as robotics, 3D printing, automation or other advanced technologies to create value-added products such as mass timber, or bioproducts, etc.)", + "value": "advancedManufacturingTheUseOfInnovativeTechnologySuchAsRobotics3DPrintingAutomationOrOtherAdvancedTechnologiesToCreateValueAddedProductsSuchAsMassTimberOrBioproductsEtc", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e1mkhr", + "key": "brieflyExplain", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Briefly explain: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ekpvpf4", + "key": "whoAreTheKeyManagementStaffThatWillDeliverCompleteTheProjectProvideTheirNamesTheirRolesOnTheProjectAndAShortDescriptionOfAnyRelevantExperienceAndQualifications", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Who are the key management staff that will deliver/complete the project? Provide their names, their roles on the project, and a short description of any relevant experience and qualifications. You are encouraged to attach the resumes/bios of the key management staff on the project. ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "ehfhx0j", + "key": "name1", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Name", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "el3cpi7", + "key": "role1", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Role", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eqe8hws", + "key": "relevantExperience1", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Relevant Experience", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "name1": "", + "role1": "", + "relevantExperience1": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "ejjx7t", + "key": "ifYourOrganizationHasExperienceImplementingSimilarCapitalProjectsDescribeThePurposeOfTheProjectWhenItWasCompletedAndTheTotalProjectBudget", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "If your organization has experience implementing similar capital projects, describe the purpose of the project, when it was completed and the total project budget. ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e07c30t", + "key": "listAnyProjectPartnersThatHaveAStakeOrRoleInTheProjectFinancialOrSimilarIncludingTheirSpecificRolesAndContributionsToTheProject", + "tree": true, + "type": "datagrid", + "input": true, + "label": "List any project partners that have a stake or role in the project (financial or similar) including their specific roles and contributions to the project.", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "eil0uof", + "key": "projectPartner1", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Project Partner", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e2d270l", + "key": "role1", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Role", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e49wqbw", + "key": "textarea", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Contact Name", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "edevf7j", + "key": "simpletextareaadvanced1", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Contact Email", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ewshcp", + "key": "contactPhoneNumber", + "mask": false, + "type": "phoneNumber", + "input": true, + "label": "Contact Phone Number", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputMode": "decimal", + "inputType": "tel", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "row justify-content-around", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "role1": "", + "textarea": "", + "projectPartner1": "", + "contactPhoneNumber": "", + "simpletextareaadvanced1": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "ej3i6n", + "key": "doWeHavePermissionToContactThemAsNeeded", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "Do we have permission to contact them as needed? ", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No (please explain): ", + "value": "noPleaseExplain", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ekar938", + "key": "simpletextarea2", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Multi-line Text", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 100, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": true, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "noPleaseExplain", + "show": true, + "when": "doWeHavePermissionToContactThemAsNeeded" + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eo8eee", + "key": "willNewIntellectualPropertyIpBeCreatedAsAResultOfThisProjectIntellectualPropertyIsUsedToDefineAConceptInWhichIntellectualCreativePursuitsSuchAsInventionsDesignsConceptsSoftwareTradeSecretsEtcAreTreatedAsProperty", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "Will new Intellectual Property (IP) be created as a result of this project? Intellectual Property is used to define a concept in which intellectual/creative pursuits – such as inventions, designs, concepts, software, trade secrets, etc. – are treated as property. ", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e71opl", + "key": "ifYesWillYourOrganizationOwnTheIp", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "If yes – will your organization own the IP? ", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes, fully", + "value": "yesFully", + "shortcut": "" + }, + { + "label": "Yes, partially ", + "value": "yesPartially", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e1gn2bq", + "key": "ifApplicableBrieflyDescribeTheIpStrategyTheOrganizationWillUseToManageItAndWhatTheOwnershipStructureLooksLikeIfYouDontOwnItExplainWhoTheOwnerIsAndHowYourOrganizationHasRightsToUseIt", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "If applicable, briefly describe the IP strategy the organization will use to manage it and what the ownership structure looks like. If you don’t own it, explain who the owner is and how your organization has rights to use it.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "efi00sc", + "key": "simplecontent4", + "html": "

Project Schedule 

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "evzimme", + "key": "simplecontent5", + "html": "

Complete this schedule for all major project stages and milestones. We will use this information to track the progress of the project if a Contribution Agreement is signed. 

Please confirm your project’s targeted start and end date:

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "esyzv1m", + "key": "day", + "type": "day", + "input": true, + "label": "Start Date", + "addons": [], + "fields": { + "day": { + "hide": false, + "type": "select", + "required": false, + "placeholder": "" + }, + "year": { + "hide": false, + "type": "select", + "minYear": 2023, + "required": false, + "placeholder": "" + }, + "month": { + "hide": false, + "type": "select", + "required": false, + "placeholder": "" + } + }, + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "minYear": 2023, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dayFirst": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": "00/00/0000", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "hideInputLabels": false, + "customConditional": " $(document).on(\"keydown\", function(e) {\r\n if(e.keyCode == 69 ) {\r\n e.stopImmediatePropagation();\r\n return;\r\n }\r\n });", + "allowMultipleMasks": false, + "customDefaultValue": "", + "inputsLabelPosition": "top", + "allowCalculateOverride": false + }, + { + "id": "en84ex", + "key": "completionDate", + "type": "day", + "input": true, + "label": "Completion Date ", + "addons": [], + "fields": { + "day": { + "hide": false, + "type": "select", + "required": false, + "placeholder": "" + }, + "year": { + "hide": false, + "type": "select", + "minYear": 2023, + "required": false, + "placeholder": "" + }, + "month": { + "hide": false, + "type": "select", + "required": false, + "placeholder": "" + } + }, + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "minYear": 2023, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "dayFirst": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": "00/00/0000", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "hideInputLabels": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "inputsLabelPosition": "top", + "allowCalculateOverride": false + }, + { + "id": "eya6pdm", + "key": "simplecontent10", + "html": "

Project Stage #1

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "elx2d3l", + "key": "simpletextarea1", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Describe:", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "etj3ts9", + "key": "projectStage1", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Project Stage #1", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "ex07hbs9", + "key": "stage1MajorProjectMilestones1", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Stage #1: Major Project Milestones", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e2aolqa", + "key": "datetime", + "type": "datetime", + "input": true, + "label": "Anticipated Start (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "egxytvi", + "key": "simpledatetimeadvanced1", + "type": "datetime", + "input": true, + "label": "Anticipated Completion (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "ej26y3h", + "key": "approximateCost", + "mask": false, + "type": "currency", + "input": true, + "label": "Approximate Cost", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "anticipatedStartMmDdYy": "", + "anticipatedCompletionMmDdYy": "", + "stage1MajorProjectMilestones": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "eompwi", + "key": "simplecontent11", + "html": "

Project Stage #2

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "exhn1f4", + "key": "describe1", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Describe: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e3wpo3j", + "key": "projectStage2", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Project Stage #2", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "enchiyf", + "key": "stage2MajorProjectMilestones", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Stage #2: Major Project Milestones", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "enb8t9", + "key": "simpledatetimeadvanced2", + "type": "datetime", + "input": true, + "label": "Anticipated Start (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "endot7t", + "key": "simpledatetimeadvanced3", + "type": "datetime", + "input": true, + "label": "Anticipated Completion (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "emdu5fe", + "key": "approximateCost", + "mask": false, + "type": "currency", + "input": true, + "label": "Approximate Cost", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "anticipatedStartMmDdYy": "", + "anticipatedStartMmDdYy1": "", + "stage1MajorProjectMilestones": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "euxluyb", + "key": "simplecontent12", + "html": "

Project Stage #3

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ebyree2", + "key": "describe2", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Describe: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e6v5eli", + "key": "projectStage3", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Project Stage #3", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "e2e5u7c", + "key": "stage3MajorProjectMilestones1", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Stage #3: Major Project Milestones", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ed5zl18", + "key": "simpledatetimeadvanced4", + "type": "datetime", + "input": true, + "label": "Anticipated Start (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "e77iiri", + "key": "simpledatetimeadvanced5", + "type": "datetime", + "input": true, + "label": "Anticipated Completion (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "e6df3c2", + "key": "approximateCost", + "mask": false, + "type": "currency", + "input": true, + "label": "Approximate Cost", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "anticipatedStartMmDdYy": "", + "anticipatedCompletionMmDdYy": "", + "stage3MajorProjectMilestones": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "ei6z8in", + "key": "simplecontent17", + "html": "

Project Stage #4

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e1jvd3o", + "key": "describe3", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Describe: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "en94amn", + "key": "projectStage4", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Project Stage #4", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "e8t6pfc", + "key": "stage3MajorProjectMilestones1", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Stage #3: Major Project Milestones", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ecvpu79", + "key": "simpledatetimeadvanced6", + "type": "datetime", + "input": true, + "label": "Anticipated Start (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "e8tnuiq", + "key": "simpledatetimeadvanced7", + "type": "datetime", + "input": true, + "label": "Anticipated Completion (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "e7j5wrk", + "key": "approximateCost", + "mask": false, + "type": "currency", + "input": true, + "label": "Approximate Cost", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "anticipatedStartMmDdYy": "", + "anticipatedCompletionMmDdYy": "", + "stage3MajorProjectMilestones": "", + "stage3MajorProjectMilestones1": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "es5uval", + "key": "isTheProposedProjectPartOfALargerCapitalProject", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "Is the proposed project part of a larger capital project?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e6dxne", + "key": "ifYesOutlineTheScopeOfTheLargerProjectAndHowItRelatesToAndOrDiffersFromThisPhaseOfTheProject", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "If yes, outline the scope of the larger project and how it relates to and/or differs from this phase of the project.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 100, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "isTheProposedProjectPartOfALargerCapitalProject" + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "egu37fs", + "key": "haveYouEngagedTheMunicipalityToBeginTheProcessToObtainAnyRequiredPermitsRegulatoryApprovalsForTheProjectPleaseDescribeIncludingWhenPermitsAreExpected", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Have you engaged the municipality to begin the process to obtain any required permits/regulatory approvals for the project? Please describe, including when permits are expected.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "esczt", + "key": "whatActivitiesHaveAlreadyBeenCompletedToPrepareForTheCapitalProjectEGEngineeringDesignPlansEnvironmentalAssessmentsFundingConfirmationsPermitsEtc", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "What activities have already been completed to prepare for the capital project (e.g., engineering/design plans, environmental assessments, funding confirmations, permits, etc.)? ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ec35lqp", + "key": "whatRemainingActivitiesNeedToBeCompletedBeforeYouCanBeginTheCapitalProjectEGEngineeringDesignPlansEnvironmentalAssessmentsFundingConfirmationsPermits", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "What remaining activities need to be completed before you can begin the capital project (e.g., engineering/design plans, environmental assessments, funding confirmations, permits)? ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "egpmbtq", + "key": "haveYouEngagedTheLocalCommunityWhereYourProjectWillOccurToConfirmTheirSupport", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "Have you engaged the local community where your project will occur to confirm their support?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ere398a", + "key": "ifYesDoYouHaveCommunitySupportEndorsementWhetherFormalOrInformalPleaseAttachAnySupportingDocumentationEGLettersOfSupportLettersOfUnderstandingCouncilResolutionsEtc", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "If yes, do you have community support/endorsement, whether formal or informal? Please attach any supporting documentation (e.g., letters of support, letters of understanding, Council resolutions, etc.).", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "haveYouEngagedTheLocalCommunityWhereYourProjectWillOccurToConfirmTheirSupport" + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e65q9fo", + "key": "dataGrid1", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Data Grid", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "ebw13t8", + "key": "supporter", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Supporter ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eir0q4o", + "key": "descriptionOfTypeOfSupport", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Description of Type of Support", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "ifYesDoYouHaveCommunitySupportEndorsementWhetherFormalOrInformalPleaseAttachAnySupportingDocumentationEGLettersOfSupportLettersOfUnderstandingCouncilResolutionsEtc" + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "supporter": "", + "descriptionOfTypeOfSupport": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "eqje7zb", + "key": "hasYourOrganizationEngagedWithLocalFirstNationSRegardingTheProject", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "Has your organization engaged with local First Nation(s) regarding the project?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "erugrrp", + "key": "ifYesDescribeTheEngagementThatTookPlaceAndWhetherYouHaveSupportForTheProjectIfNotExplainWhyNoEngagementHasTakenPlacePleaseAttachAnySupportingDocumentationEGLettersOfSupportLettersOfUnderstandingCouncilResolutionsEtc", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "If yes, describe the engagement that took place and whether you have support for the project. If not, explain why no engagement has taken place. Please attach any supporting documentation (e.g., letters of support, letters of understanding, Council resolutions, etc.)", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "hasYourOrganizationEngagedWithLocalFirstNationSRegardingTheProject" + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "etg2ot", + "key": "dataGrid2", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Identify the key operational or financial risks/barriers to your projects’ success (i.e. litigation, duties and tariffs, challenges with accessing sufficient workforce or supplies, operational or equipment-related challenges, financing plan risks, etc.) and any mitigation strategies that are in place.", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "e7bblwc", + "key": "risk", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Risk", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e6vq4c9", + "key": "mitigationStrategy", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Mitigation Strategy", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "eaxr8ui", + "key": "columns4", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "enkowqm", + "key": "table7", + "rows": [ + [ + { + "components": [ + { + "id": "evql68", + "key": "previous2", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ey8315g", + "key": "table8", + "rows": [ + [ + { + "components": [ + { + "id": "ezakmr", + "key": "next2", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "projectMarketAssessment", + "label": "PROJECT MARKET ASSESSMENT", + "components": [ + { + "id": "enrua5", + "key": "whereWillTheProductsThatAreManufacturedAsAResultOfThisProjectBeDistributedSelectAllThatApply", + "data": { + "url": "" + }, + "type": "selectboxes", + "input": true, + "label": "Where will the products that are manufactured as a result of this project be distributed? Select all that apply.", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Within same community/region", + "value": "withinSameCommunityRegion", + "shortcut": "" + }, + { + "label": "Throughout B.C.", + "value": "throughoutBC", + "shortcut": "" + }, + { + "label": "Within Canada", + "value": "withinCanada", + "shortcut": "" + }, + { + "label": "Within North America", + "value": "withinNorthAmerica", + "shortcut": "" + }, + { + "label": "Internationally ", + "value": "internationally", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "eietg9m", + "key": "haveYouConductedAnAnalysisOfTheMarketToConfirmAStableAndOngoingDemandForYourProductsIfYesPleaseAttachAnyDocumentationOutliningTheMarketAssessment", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "Have you conducted an analysis of the market to confirm a stable and ongoing demand for your products? If yes, please attach any documentation outlining the market assessment.", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + }, + { + "label": "In progress", + "value": "inProgress", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e84qpxu", + "key": "provideABriefIndustryOverviewThatIncludesCurrentConditionAndFutureOutlookForTheSectorYourOrganizationIsIn", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Provide a brief industry overview that includes current condition and future outlook for the sector your organization is in.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e170rvd", + "key": "whoIsTheTargetMarketForTheProductSBeingCreatedAsAResultOfTheCapitalProject", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Who is the target market for the product(s) being created as a result of the capital project? ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 100, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e1gm83", + "key": "provideARationaleThatThereIsMarketDemandForTheSpecificProductSYourOrganizationIsCreatingDescribeExistingVendorCustomerRelationshipsIfRelevant", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Provide a rationale that there is market demand for the specific product(s) your organization is creating. Describe existing vendor/customer relationships if relevant.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 300, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 300 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e95sz4j", + "key": "provideYourTopFiveCustomersInTermsOfRevenueAndTheApproximatePercentageShareOfTotalRevenueThatEachCustomerRepresentsForTheMostRecentCompletedFiscalYear", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Provide your top five customers in terms of revenue and the approximate percentage share of total revenue that each customer represents for the most recent completed fiscal year. ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "eo3o0ur", + "key": "customer", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Customer", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "exaes7", + "key": "currency", + "mask": false, + "type": "currency", + "input": true, + "label": "Revenue", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ebokg2s", + "key": "ofTotalRevenue", + "type": "number", + "input": true, + "label": "% of Total Revenue", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "eordn94", + "key": "identifyYourKeyCompetitorsAndTheirMarketShare", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Identify your key competitors and their market share: ", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "e7upryo6", + "key": "keyCompetitor", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Key Competitor", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e5ugrw", + "key": "marketShare", + "type": "number", + "input": true, + "label": "Market Share", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "e7utypt", + "key": "number", + "type": "number", + "input": true, + "label": "Your own market share %", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e99pgpa", + "key": "howDoesYourOrganizationDifferFromOthersInTheMarketplaceAndWhatIsUniqueAboutYourProductOrganizationIEWhatMakesYourOrganizationCompetitiveInTheMarket", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "How does your organization differ from others in the marketplace and what is unique about your product/organization (i.e. what makes your organization competitive in the market)? ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ey4cw2l", + "key": "listTheSpecificInputMaterialsSuppliesYourOrganizationRequiresForTheProductSCreatedInTheCapitalProjectIncludeWhereTheMaterialsSuppliesAreSourcedFrom", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "List the specific input materials/supplies your organization requires for the product(s) created in the capital project. Include where the materials/supplies are sourced from.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ehvlqb", + "key": "simplecontent6", + "html": "

Forestry Sector Questions*

Skip the following four questions if your organization does not process wood materials. 

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ero9noi", + "key": "whatAreYourSourcesOfForestInputMaterials", + "data": { + "url": "" + }, + "type": "selectboxes", + "input": true, + "label": "What are your sources of forest input materials?*", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Community Forests", + "value": "communityForests", + "shortcut": "" + }, + { + "label": "Forest Tenures ", + "value": "forestTenures", + "shortcut": "" + }, + { + "label": "BC Timber Sales", + "value": "bcTimberSales", + "shortcut": "" + }, + { + "label": "Open market fibre purchases", + "value": "openMarketFibrePurchases", + "shortcut": "" + }, + { + "label": "Other – please describe below", + "value": "otherPleaseDescribeBelow", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e0a1hp9", + "key": "otherPleaseDescribeBelow", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Other – please describe below", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": true, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ekkp3a", + "key": "ifApplicableWhatIsYourForestTenureVolume", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "If applicable, what is your forest tenure volume?*", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 100, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 100 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e07h9uq", + "key": "whatAreYourApproximateAnnualFibreWoodRequirementsForYourOperationsInBoardFeetCubicMetresOrOtherUnitsAsApplicable", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "What are your approximate annual fibre/wood requirements for your operations (in board feet, cubic metres, or other units as applicable)?*", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "et3zas", + "key": "howConcernedAreYouAboutYourOrganizationsAbilityToAccessAConsistentFibreSupplyToMeetYourProductionNeeds", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "How concerned are you about your organization’s ability to access a consistent fibre supply to meet your production needs?*", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Very concerned", + "value": "veryConcerned", + "shortcut": "" + }, + { + "label": "Somewhat concerned", + "value": "somewhatConcerned", + "shortcut": "" + }, + { + "label": "Not at all concerned ", + "value": "notAtAllConcerned", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ebz9dxi", + "key": "provideDetail", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Provide detail:", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "er4wv75", + "key": "columns5", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "edeivm", + "key": "table9", + "rows": [ + [ + { + "components": [ + { + "id": "e7eb21r", + "key": "previous3", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ewp25u8", + "key": "table10", + "rows": [ + [ + { + "components": [ + { + "id": "e5atorh", + "key": "next3", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "impactAndAlignmentWithProgramGoals", + "label": " IMPACT AND ALIGNMENT WITH PROGRAM GOALS ", + "components": [ + { + "id": "enouymo", + "key": "willThisProjectProceedIfItDoesNotReceiveFundingUnderTheManufacturingJobsFundSelectAllThatApply", + "data": { + "url": "" + }, + "type": "selectboxes", + "input": true, + "label": "Will this project proceed if it does not receive funding under the Manufacturing Jobs Fund? (Select all that apply)", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "The project will not be undertaken", + "value": "theProjectWillNotBeUndertaken", + "shortcut": "" + }, + { + "label": "The project will be undertaken, but not in B.C.", + "value": "theProjectWillBeUndertakenButNotInBC", + "shortcut": "" + }, + { + "label": "The project will be undertaken, but at a slower pace", + "value": "theProjectWillBeUndertakenButAtASlowerPace", + "shortcut": "" + }, + { + "label": "The project will be undertaken, but with a reduced scope or objectives", + "value": "theProjectWillBeUndertakenButWithAReducedScopeOrObjectives", + "shortcut": "" + }, + { + "label": "The project will be undertaken as planned", + "value": "theProjectWillBeUndertakenAsPlanned", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ef7cmsc", + "key": "describe", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Describe:", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ehjfdiq", + "key": "isYourOrganizationInImmediateRiskOfClosingReducingOperationsOrLayingOffStaffIEWithinTheNext6Months", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "Is your organization in immediate risk of closing, reducing operations, or laying-off staff? (i.e. within the next 6 months)", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "eb2hk6", + "key": "ifYesIndicateTheApproximateNumberOfStaffWhoWillBeImpactedViaPermanentOrTemporaryLayOffs", + "type": "number", + "input": true, + "label": "If yes, indicate the approximate number of staff who will be impacted via permanent or temporary lay-offs:", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "yes", + "show": true, + "when": "isYourOrganizationInImmediateRiskOfClosingReducingOperationsOrLayingOffStaffIEWithinTheNext6Months" + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e9id8y", + "key": "provideDetail1", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Provide detail: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "em9i7il", + "key": "employeeList2", + "rows": [ + [ + { + "components": [ + { + "id": "e1u8xch", + "key": "howManyDirectPermanentJobsWillBeCreatedAtTheProjectLocationAsAResultOfTheCapitalProject", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "How many direct permanent jobs will be created at the project location as a result of the capital project?", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ewsptmi", + "key": "simplecontent13", + "html": "

How many direct permanent jobs will be created at the project location as a result of the capital project?

", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ezyhg2b", + "key": "fullTime6", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "ep51xdg", + "key": "fullTime11", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Management-Level or Senior Roles (For example, over $70,000 per year)

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "ea5umi", + "key": "jobsCreatedInProjectLocation", + "mask": false, + "type": "number", + "input": true, + "label": "# of Jobs", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "erzjcnx", + "key": "fullTime12", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "Full-time", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Skilled/Mid-level Roles (For example, between $45,000 – $70,000 per year)

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "edkub16", + "key": "jobsMaintainedInProjectLocation", + "mask": false, + "type": "number", + "input": true, + "label": "# of Jobs", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "es188l", + "key": "html1", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "HTML", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "

Entry-Level Jobs (For example, less than $45,000 per year)

", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "components": [ + { + "id": "e7yu9bb", + "key": "jobsMaintainedInProjectLocation1", + "mask": false, + "type": "number", + "input": true, + "label": "# of Jobs", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": 0, + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "decimalLimit": 0, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eief8rt", + "key": "html2", + "tag": "p", + "type": "htmlelement", + "attrs": [ + { + "attr": "", + "value": "" + } + ], + "input": false, + "label": "# of Jobs", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "content": "", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "refreshOnChange": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "How many employees does your organization currently employ in BC?", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 2, + "numRows": 4, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "eoptin8", + "key": "describeHowYourOrganizationWillEnsureItCanAccessTheWorkforceNeededToAchieveAndSustainYourOrganizationsGrowthPlansConsiderAreThereAnyCurrentOrAnticipatedWorkforceGapsOrChallengesThatMightImpactImplementationOfThisProjectAreThereAnySkillsOrJobsWhichWillBeAChallengeToRecruitFor", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Describe how your organization will ensure it can access the workforce needed to achieve and sustain your organization’s growth plans. Consider: Are there any current or anticipated workforce gaps or challenges that might impact implementation of this project? Are there any skills or jobs which will be a challenge to recruit for?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e0cyt7q", + "key": "whatTrainingAndSkillsDevelopmentOpportunitiesWillBeOfferedToYourCurrentAndOrNewWorkforceAsAResultOfThisProjectIncludeHowTheProjectWillCreateOpportunitiesForCareerGrowthAndUpskillingOfCurrentWorkforceIntoNewRolesAsApplicable", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": " What training and skills development opportunities will be offered to your current and/or new workforce as a result of this project? Include how the project will create opportunities for career growth and upskilling of current workforce into new roles, as applicable. ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eie6y3t", + "key": "willYourProjectCreateOpportunitiesForIndigenousPeoplesOrFirstNationsSelectAllThatApply", + "data": { + "url": "" + }, + "type": "selectboxes", + "input": true, + "label": "Will your project create opportunities for Indigenous Peoples or First Nations? (Select all that apply)", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "My organization is Indigenous or First Nation-led (with 51% or more controlling interest).", + "value": "myOrganizationIsIndigenousOrFirstNationLedWith51OrMoreControllingInterest", + "shortcut": "" + }, + { + "label": "My project will create an ongoing business opportunity for an Indigenous-led entity or First Nation-led enterprise (including as investor or partner with 50% or less controlling-interest).", + "value": "myProjectWillCreateAnOngoingBusinessOpportunityForAnIndigenousLedEntityOrFirstNationLedEnterpriseIncludingAsInvestorOrPartnerWith50OrLessControllingInterest", + "shortcut": "" + }, + { + "label": "My project creates a time-limited business opportunity for at least one Indigenous business (i.e. a contracting business used for the capital project).", + "value": "myProjectCreatesATimeLimitedBusinessOpportunityForAtLeastOneIndigenousBusinessIEAContractingBusinessUsedForTheCapitalProject", + "shortcut": "" + }, + { + "label": "My project brings benefits to an Indigenous community including through existing revenue sharing agreements and purchasing fibre from tenures. ", + "value": "myProjectBringsBenefitsToAnIndigenousCommunityIncludingThroughExistingRevenueSharingAgreementsAndPurchasingFibreFromTenures", + "shortcut": "" + }, + { + "label": "None of the above/not applicable", + "value": "noneOfTheAboveNotApplicable", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "emdvtzm", + "key": "brieflyExplain2", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": " Briefly explain:", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ex7evh5", + "key": "doesYourOrganizationHavePoliciesAndPracticesToAttractAndRetainIndigenousWorkersAndUnderrepresentedMarginalizedGroupsIncludingSpecificTrainingAndEducationProgramOrWrapAroundServices", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "Does your organization have policies and practices to attract and retain Indigenous workers and underrepresented/marginalized groups, including specific training and education program or wrap-around services? ", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes", + "value": "yes", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + }, + { + "label": "No, but are currently developing these policies and practices", + "value": "noButAreCurrentlyDevelopingThesePoliciesAndPractices", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e5lf7bq", + "key": "provideDetails", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Provide details:", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "efoc7n", + "key": "willTheProjectResultInIncreasedJobOpportunitiesForTheFollowingGroupsCheckAllThatApply", + "data": { + "url": "" + }, + "type": "selectboxes", + "input": true, + "label": "Will the project result in increased job opportunities for the following groups? (Check all that apply):", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Forestry displaced workers", + "value": "forestryDisplacedWorkers", + "shortcut": "" + }, + { + "label": "Youth (under 25 years), co-ops or interns ", + "value": "youthUnder25YearsCoOpsOrInterns", + "shortcut": "" + }, + { + "label": "Indigenous Peoples ", + "value": "indigenousPeoples", + "shortcut": "" + }, + { + "label": "Other marginalized/equity deserving groups", + "value": "otherMarginalizedEquityDeservingGroups", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "ewk4k3an", + "key": "brieflyExplain1", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Briefly explain:", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 150, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 150 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ecmmczc", + "key": "doesYourOrganizationCurrentlyHaveEstablishedPoliciesAndOrPracticesToSupportADiverseEquitableAndInclusiveWorkforce", + "data": { + "url": "" + }, + "type": "radio", + "input": true, + "label": "Does your organization currently have established policies and/or practices to support a diverse, equitable, and inclusive workforce?", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Yes (please include proof of this as supplemental documentation)", + "value": "yesPleaseIncludeProofOfThisAsSupplementalDocumentation", + "shortcut": "" + }, + { + "label": "No", + "value": "no", + "shortcut": "" + }, + { + "label": "No, but are currently developing these policies and practices", + "value": "noButAreCurrentlyDevelopingThesePoliciesAndPractices", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "radio", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "eoo0wpb", + "key": "pleaseExplainHowYourOrganizationDemonstratesDiversityEquityAndInclusionInYourPractices", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Please explain how your organization demonstrates diversity, equity and inclusion in your practices. ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "egu6rcv", + "key": "asideFromJobsDescribeAnyOtherBenefitsTheProjectAndOrYourOrganizationBringToTheLocalCommunity", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Aside from jobs, describe any other benefits the project and/or your organization bring to the local community.", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "eaqassa", + "key": "whichSupplyChainsIndustryPartnersAndOrEstablishedClustersWillBenefitFromTheProjectEitherDirectlyOrIndirectly", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Which supply chains, industry partners, and/or established clusters will benefit from the project, either directly or indirectly?", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 250, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 250 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e5nv7lr", + "key": "withRespectToCleanSustainableAndInnovativeManufacturingProcessesPleaseSelectAnyOfTheFollowingThatApplyToYourOperationsAndOrThisProject", + "data": { + "url": "" + }, + "type": "selectboxes", + "input": true, + "label": "With respect to clean, sustainable and innovative manufacturing processes, please select any of the following that apply to your operations and/or this project:", + "addons": [], + "hidden": false, + "inline": false, + "prefix": "", + "suffix": "", + "unique": false, + "values": [ + { + "label": "Adopts or is innovating to create low or zero-carbon intensity products, processes, or methods of production as a part of the project", + "value": "adoptsOrIsInnovatingToCreateLowOrZeroCarbonIntensityProductsProcessesOrMethodsOfProductionAsAPartOfTheProject", + "shortcut": "" + }, + { + "label": "Uses or creates biomaterials to decarbonize products such as concrete, asphalt and plastic components (beyond conventional lumber, pulp, paper, veneers and furniture)", + "value": "usesOrCreatesBiomaterialsToDecarbonizeProductsSuchAsConcreteAsphaltAndPlasticComponentsBeyondConventionalLumberPulpPaperVeneersAndFurniture", + "shortcut": "" + }, + { + "label": "Uses or is innovating to use low carbon fuels such as biodiesel or hydrogen", + "value": "usesOrIsInnovatingToUseLowCarbonFuelsSuchAsBiodieselOrHydrogen", + "shortcut": "" + }, + { + "label": "Uses zero-emission or low carbon fuel vehicles to transport goods ", + "value": "usesZeroEmissionOrLowCarbonFuelVehiclesToTransportGoods", + "shortcut": "" + }, + { + "label": "Creates bioenergy as a secondary benefit of the project (for own use or sale)", + "value": "createsBioenergyAsASecondaryBenefitOfTheProjectForOwnUseOrSale", + "shortcut": "" + }, + { + "label": "Creates or contributes to a circular economy by reusing, repairing, refurbishing, remanufacturing, repurposing, or recycling products and materials ", + "value": "createsOrContributesToACircularEconomyByReusingRepairingRefurbishingRemanufacturingRepurposingOrRecyclingProductsAndMaterials", + "shortcut": "" + }, + { + "label": "Reduces other negative environmental impacts including responsible end-of-life product management and/or uses sustainable packaging options", + "value": "reducesOtherNegativeEnvironmentalImpactsIncludingResponsibleEndOfLifeProductManagementAndOrUsesSustainablePackagingOptions", + "shortcut": "" + }, + { + "label": "Other – please explain ", + "value": "otherPleaseExplain", + "shortcut": "" + } + ], + "widget": null, + "dataSrc": "values", + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "fieldSet": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "template": "{{ item.label }}", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "onlyAvailableItems": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "ignoreCache": false, + "placeholder": "", + "authenticate": false, + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "optionsLabelPosition": "right", + "allowCalculateOverride": false + }, + { + "id": "e4cog4p", + "key": "provideDetailForAllThatYouSelectedAboveAndSpecifyIfAnyAreRelatedToTheCapitalProject", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": " Provide detail for all that you selected above and specify if any are related to the capital project: ", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": 200, + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "Maximum 200 words", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": true, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e4couj9", + "key": "columns6", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "edtx2un", + "key": "table11", + "rows": [ + [ + { + "components": [ + { + "id": "ejb35gi", + "key": "previous4", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "enmqif", + "key": "table12", + "rows": [ + [ + { + "components": [ + { + "id": "e9u4xve", + "key": "next4", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "Next", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index+1));", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "right", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + { + "key": "submission", + "label": "SUBMISSION", + "components": [ + { + "id": "efrkjm", + "key": "simplecontent7", + "html": "

Thank you for completing the detailed application form for Stream 2 – Capital Investment of the BC Manufacturing Jobs Fund. Program staff will follow up to request any additional information required to complete the funding assessment. 

Attestation

By submitting this form, I confirm that I have the authority to submit this request and agree to the conditions described below.

  1. All information contained herein is correct and complete to the best of my knowledge;
  2. Awarding of funding to successful applicants will be conditional upon finalization of a contribution agreement that sets out the terms and conditions of the funding (“Funds”);
  3. I consent to receiving email communications regarding this application from the Province of B.C. in relation to the BC Manufacturing Jobs Fund;
  4. I agree to retain supporting documentation and information including but not limited to invoices and receipts, for all expenditures made using the Funds (collectively, the “Supporting Documentation”) for a period of seven years from the date of receipt of the Funds;
  5. I agree that I will provide the Province with additional Supporting Documentation relating to my application or to the use of the Funds received, and agree that the Province may, at any reasonable time and on reasonable notice, attend at my place of business or other premises to inspect, and, at the Province’s discretion, review, copy and audit any records and other materials comprising or relating to the Supporting Documentation, whether produced by or provided to my business, where such records and other materials are the result of or related to the use of Funds and that I will provide reasonable assistance to the Province in exercising these rights; and
  6. I agree that repayment of Funds may be required if the Funds, or any part of them, are used for purposes other than those identified in the program materials as eligible expenses, or if my business is found to be ineligible or if any information provided in this application is not true and accurate.
", + "type": "content", + "input": false, + "label": "Text/Images", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "edxkh6s", + "key": "iConfirmThatIHaveTheAuthorityToSubmitThisRequestAndAgreeToTheConditionsDescribedAbove", + "name": "", + "type": "checkbox", + "input": true, + "label": "I confirm that I have the authority to submit this request and agree to the conditions described above. ", + "value": "", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": true, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputType": "checkbox", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "right", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e3icwcz", + "key": "submit", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "SUBMIT", + "theme": "primary", + "action": "submit", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "saveOnEnter": false, + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "ec91s2k", + "key": "columns7", + "tree": false, + "type": "columns", + "input": false, + "label": "Columns", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "columns": [ + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [ + { + "id": "ej3s4jf", + "key": "table13", + "rows": [ + [ + { + "components": [ + { + "id": "elgu1pj", + "key": "previous5", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "Previous", + "theme": "primary", + "action": "custom", + "addons": [], + "custom": "window.scrollTo(0,0);\r\nconst tab = form.getComponent('tabs');\r\nconst index = tab.currentTab;\r\ntab.setTab((index-1));\r\n", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "showValidations": false, + "disableOnInvalid": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ] + ], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 1, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "currentWidth": 6 + }, + { + "pull": 0, + "push": 0, + "size": "md", + "width": 6, + "offset": 0, + "components": [], + "currentWidth": 6 + } + ], + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "autoAdjust": true, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + } + ], + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "verticalLayout": false, + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + "version": 1, + "createdAt": "2024-03-12T21:41:23.721Z", + "createdBy": "DVARGHES@idir", + "published": true, + "updatedAt": "2024-03-12T21:41:23.67Z", + "updatedBy": null + }, + "submission": { + "id": "94726f18-32a1-4486-bc00-d077c5b4b195", + "draft": false, + "deleted": false, + "createdAt": "2024-12-09T23:45:33.467Z", + "createdBy": "public", + "updatedAt": "2024-12-09T23:45:33.466Z", + "updatedBy": null, + "submission": { + "data": { + "day": "01/02/2024", + "next": true, + "next1": true, + "next2": true, + "next3": true, + "next4": true, + "submit": true, + "describe": "", + "previous": false, + "textarea": "sumarry , summaryt, asdasdsa", + "dataGrid2": [ + { + "risk": "tester 123123", + "mitigationStrategy": "123123123123123" + }, + { + "risk": "dddsadsad a adadasdasd", + "mitigationStrategy": "tadads ds asdasdasasd" + } + ], + "describe1": "tester 123123123", + "describe2": "", + "describe3": "", + "lateEntry": false, + "previous1": false, + "previous2": false, + "previous3": false, + "previous4": false, + "previous5": false, + "contactName": "contact name indeed ", + "contactEmail": "456googfa@ccasad.ccaaad", + "contactTitle": "contact title indeed", + "eligibleCost": 123123123, + "fulltimeInBC": 12, + "parttimeinbc": 21, + "projectTitle": "So much data that need to go in here Project Title", + "seasonalinbc": 321, + "projectStage1": [ + { + "datetime": "2024-12-04T00:00:00-08:00", + "approximateCost": 12300, + "anticipatedStartMmDdYy": "", + "simpledatetimeadvanced1": "2024-12-19T00:00:00-08:00", + "anticipatedCompletionMmDdYy": "", + "stage1MajorProjectMilestones": "", + "stage1MajorProjectMilestones1": "asdasdasdasdas" + }, + { + "datetime": "2024-12-06T00:00:00-08:00", + "approximateCost": 12312312, + "simpledatetimeadvanced1": "2024-12-13T00:00:00-08:00", + "stage1MajorProjectMilestones1": "dsadasdas" + } + ], + "projectStage2": [ + { + "approximateCost": 3213123, + "anticipatedStartMmDdYy": "", + "anticipatedStartMmDdYy1": "", + "simpledatetimeadvanced2": "2024-12-05T00:00:00-08:00", + "simpledatetimeadvanced3": "2024-12-18T00:00:00-08:00", + "stage1MajorProjectMilestones": "", + "stage2MajorProjectMilestones": "asdasdasdsa" + }, + { + "approximateCost": 3213123123, + "simpledatetimeadvanced2": "2024-12-05T00:00:00-08:00", + "simpledatetimeadvanced3": "2024-12-19T00:00:00-08:00", + "stage2MajorProjectMilestones": "dsadasdasdas" + } + ], + "projectStage3": [ + { + "anticipatedStartMmDdYy": "", + "simpledatetimeadvanced4": "", + "simpledatetimeadvanced5": "", + "anticipatedCompletionMmDdYy": "", + "stage3MajorProjectMilestones": "", + "stage3MajorProjectMilestones1": "" + } + ], + "projectStage4": [ + { + "anticipatedStartMmDdYy": "", + "simpledatetimeadvanced6": "", + "simpledatetimeadvanced7": "", + "anticipatedCompletionMmDdYy": "", + "stage3MajorProjectMilestones": "", + "stage3MajorProjectMilestones1": "" + } + ], + "provideDetail": "", + "brieflyExplain": "nop, dont want to", + "completionDate": "05/03/2025", + "provideDetail1": "", + "provideDetails": "testing all the things that we need to dio", + "brieflyExplain1": " asdasdasdasd", + "brieflyExplain2": "", + "projectLocation": "Location of Project", + "simpletextarea1": "", + "simpletextarea2": "", + "womenWorkForce1": 12, + "fulltimeoutsidebc": 12, + "parttimeoutsidebc": 2, + "seasonaloutsidebc": 312, + "totalRequestToMjf": 12312312, + "contactPhoneNumber": "(123) 123-1323", + "indigenousWorkForce": 11, + "signingAuthorityName": "Authority of the Sign", + "organizationLegalName": "So much data that need to go in here", + "signingAuthorityEmail": "email@email12323123.com", + "signingAuthorityTitle": "Authority of the Title", + "ifYesNameOfParentCompany": "", + "otherPleaseDescribeBelow": "", + "peopleofcolourWorkForce2": 32, + "signingAuthorityPhoneNumber": "(123) 123-1231", + "jobsCreatedInProjectLocation": 11, + "jobsMaintainedInProjectLocation": 11, + "jobsMaintainedInProjectLocation1": 22, + "whoAreTheOwnersOfTheOrganization": "I dooo!!!!!!! , nope, not really.", + "ifYesWillYourOrganizationOwnTheIp": "yesFully", + "totalRequestOfEligibleProjectCosts1": 9.999999756341463, + "doesYourOrganizationHaveAParentCompany": "yes", + "doWeHavePermissionToContactThemAsNeeded": "noPleaseExplain", + "ifApplicableWhatIsYourForestTenureVolume": "", + "whatAreYourSourcesOfForestInputMaterials": { + "bcTimberSales": false, + "forestTenures": false, + "communityForests": false, + "openMarketFibrePurchases": true, + "otherPleaseDescribeBelow": true + }, + "bcBusinessIncorporationRegistrationNumber": "3213123", + "identifyYourKeyCompetitorsAndTheirMarketShare": [ + { + "keyCompetitor": "" + } + ], + "isTheProposedProjectPartOfALargerCapitalProject": "", + "doesYourOrganizationHaveABoardOrOtherGoverningBody": "no", + "willTheCapitalProjectRequireTheUseOfNewTechnologiesOrProcesses": "somewhatPleaseDescribeBelow", + "doesYourOrganizationHaveAnySubsidiaryAffiliatedOrRelatedCompanies": "", + "hasYourOrganizationEngagedWithLocalFirstNationSRegardingTheProject": "no", + "whatIsAreTheProductSThatWillBeManufacturedAsAResultOfTheCapitalProject": "Just kidding", + "ifYesOrSomewhatPleaseDescribeThePotentialRisksAndHowThoseWillBeMitigated": "qweqweq", + "whoIsTheTargetMarketForTheProductSBeingCreatedAsAResultOfTheCapitalProject": "", + "provideADetailedDescriptionOfTheProjectsOverallObjectivesAndDesiredOutcomes": "To make lots of money", + "haveYouEngagedTheLocalCommunityWhereYourProjectWillOccurToConfirmTheirSupport": "yes", + "provideDetailForAllThatYouSelectedAboveAndSpecifyIfAnyAreRelatedToTheCapitalProject": "", + "ifApplicableIncludeAListOfMajorShareholdersThatHoldMoreThan10OwnershipOfYourBusiness": [ + { + "name": "sponge bob squarpants", + "indigenousWorkForce1": 12 + }, + { + "name": "barnacle under the sea", + "indigenousWorkForce1": 421 + } + ], + "iConfirmThatIHaveTheAuthorityToSubmitThisRequestAndAgreeToTheConditionsDescribedAbove": true, + "willTheProjectResultInIncreasedJobOpportunitiesForTheFollowingGroupsCheckAllThatApply": { + "indigenousPeoples": false, + "forestryDisplacedWorkers": true, + "youthUnder25YearsCoOpsOrInterns": false, + "otherMarginalizedEquityDeservingGroups": false + }, + "pleaseExplainHowYourOrganizationDemonstratesDiversityEquityAndInclusionInYourPractices": "asad 1231231 asdasdasda", + "willYourProjectCreateOpportunitiesForIndigenousPeoplesOrFirstNationsSelectAllThatApply": { + "noneOfTheAboveNotApplicable": false, + "myOrganizationIsIndigenousOrFirstNationLedWith51OrMoreControllingInterest": false, + "myProjectBringsBenefitsToAnIndigenousCommunityIncludingThroughExistingRevenueSharingAgreementsAndPurchasingFibreFromTenures": true, + "myProjectCreatesATimeLimitedBusinessOpportunityForAtLeastOneIndigenousBusinessIEAContractingBusinessUsedForTheCapitalProject": true, + "myProjectWillCreateAnOngoingBusinessOpportunityForAnIndigenousLedEntityOrFirstNationLedEnterpriseIncludingAsInvestorOrPartnerWith50OrLessControllingInterest": false + }, + "indicateWhichProcessListedBelowBestAlignsWithYourOrganizationsOperationsChooseAllThatApply": { + "cultivationExtractionIELoggingPlantCultivationMining": true, + "primaryProcessingOfRawMaterialsIEInitialTreatmentOfRawMaterialToPrepareThemForShipmentForFurtherProcessingSuchAsManufacturingLumberFromRawLogs": false, + "advancedManufacturingTheUseOfInnovativeTechnologySuchAsRobotics3DPrintingAutomationOrOtherAdvancedTechnologiesToCreateValueAddedProductsSuchAsMassTimberOrBioproductsEtc": false, + "secondaryProcessingProcessesUsedToFurtherModifyTheOutputOfPrimaryProcessingToImproveTheMaterialsPropertiesAppearanceAndDimensionsSuchAsUsingLumberToCreateWoodenPalletsCabinetsAndCountertopsVeneerEtc": true + }, + "asideFromJobsDescribeAnyOtherBenefitsTheProjectAndOrYourOrganizationBringToTheLocalCommunity": "", + "whereWillTheProductsThatAreManufacturedAsAResultOfThisProjectBeDistributedSelectAllThatApply": { + "throughoutBC": false, + "withinCanada": true, + "internationally": false, + "withinNorthAmerica": false, + "withinSameCommunityRegion": false + }, + "willThisProjectProceedIfItDoesNotReceiveFundingUnderTheManufacturingJobsFundSelectAllThatApply": { + "theProjectWillNotBeUndertaken": false, + "theProjectWillBeUndertakenAsPlanned": false, + "theProjectWillBeUndertakenButNotInBC": true, + "theProjectWillBeUndertakenButAtASlowerPace": true, + "theProjectWillBeUndertakenButWithAReducedScopeOrObjectives": false + }, + "isYourOrganizationInImmediateRiskOfClosingReducingOperationsOrLayingOffStaffIEWithinTheNext6Months": "no", + "howConcernedAreYouAboutYourOrganizationsAbilityToAccessAConsistentFibreSupplyToMeetYourProductionNeeds": "notAtAllConcerned", + "provideABriefIndustryOverviewThatIncludesCurrentConditionAndFutureOutlookForTheSectorYourOrganizationIsIn": "", + "whichSupplyChainsIndustryPartnersAndOrEstablishedClustersWillBenefitFromTheProjectEitherDirectlyOrIndirectly": "", + "whatAreYourApproximateAnnualFibreWoodRequirementsForYourOperationsInBoardFeetCubicMetresOrOtherUnitsAsApplicable": "", + "doesYourOrganizationCurrentlyHaveEstablishedPoliciesAndOrPracticesToSupportADiverseEquitableAndInclusiveWorkforce": "noButAreCurrentlyDevelopingThesePoliciesAndPractices", + "hasYourOrganizationPreviouslyReceivedFederalOrProvincialLoansGrantsOrOtherFormsOfGovernmentFundingIfSoPleaseListBelow": [ + { + "programSource": "" + } + ], + "listAnyProjectPartnersThatHaveAStakeOrRoleInTheProjectFinancialOrSimilarIncludingTheirSpecificRolesAndContributionsToTheProject": [ + { + "role1": "", + "textarea": "", + "projectPartner1": "", + "contactPhoneNumber": "", + "simpletextareaadvanced1": "" + } + ], + "withRespectToCleanSustainableAndInnovativeManufacturingProcessesPleaseSelectAnyOfTheFollowingThatApplyToYourOperationsAndOrThisProject": { + "otherPleaseExplain": true, + "usesZeroEmissionOrLowCarbonFuelVehiclesToTransportGoods": false, + "createsBioenergyAsASecondaryBenefitOfTheProjectForOwnUseOrSale": false, + "usesOrIsInnovatingToUseLowCarbonFuelsSuchAsBiodieselOrHydrogen": false, + "adoptsOrIsInnovatingToCreateLowOrZeroCarbonIntensityProductsProcessesOrMethodsOfProductionAsAPartOfTheProject": false, + "reducesOtherNegativeEnvironmentalImpactsIncludingResponsibleEndOfLifeProductManagementAndOrUsesSustainablePackagingOptions": false, + "createsOrContributesToACircularEconomyByReusingRepairingRefurbishingRemanufacturingRepurposingOrRecyclingProductsAndMaterials": true, + "usesOrCreatesBiomaterialsToDecarbonizeProductsSuchAsConcreteAsphaltAndPlasticComponentsBeyondConventionalLumberPulpPaperVeneersAndFurniture": false + }, + "ifYourOrganizationHasExperienceImplementingSimilarCapitalProjectsDescribeThePurposeOfTheProjectWhenItWasCompletedAndTheTotalProjectBudget": "", + "provideARationaleThatThereIsMarketDemandForTheSpecificProductSYourOrganizationIsCreatingDescribeExistingVendorCustomerRelationshipsIfRelevant": "", + "haveYouConductedAnAnalysisOfTheMarketToConfirmAStableAndOngoingDemandForYourProductsIfYesPleaseAttachAnyDocumentationOutliningTheMarketAssessment": "yes", + "whatActivitiesHaveAlreadyBeenCompletedToPrepareForTheCapitalProjectEGEngineeringDesignPlansEnvironmentalAssessmentsFundingConfirmationsPermitsEtc": "asdasdasd", + "howDoesYourOrganizationDifferFromOthersInTheMarketplaceAndWhatIsUniqueAboutYourProductOrganizationIEWhatMakesYourOrganizationCompetitiveInTheMarket": "", + "listTheSpecificInputMaterialsSuppliesYourOrganizationRequiresForTheProductSCreatedInTheCapitalProjectIncludeWhereTheMaterialsSuppliesAreSourcedFrom": "", + "haveYouEngagedTheMunicipalityToBeginTheProcessToObtainAnyRequiredPermitsRegulatoryApprovalsForTheProjectPleaseDescribeIncludingWhenPermitsAreExpected": "teasdasd", + "whatRemainingActivitiesNeedToBeCompletedBeforeYouCanBeginTheCapitalProjectEGEngineeringDesignPlansEnvironmentalAssessmentsFundingConfirmationsPermits": "asdasdas", + "provideYourTopFiveCustomersInTermsOfRevenueAndTheApproximatePercentageShareOfTotalRevenueThatEachCustomerRepresentsForTheMostRecentCompletedFiscalYear": [ + { + "currency": 123123, + "customer": "customre 123", + "ofTotalRevenue": 11 + }, + { + "currency": 65555, + "customer": "customer 456", + "ofTotalRevenue": 112 + } + ], + "whoAreTheKeyManagementStaffThatWillDeliverCompleteTheProjectProvideTheirNamesTheirRolesOnTheProjectAndAShortDescriptionOfAnyRelevantExperienceAndQualifications": [ + { + "name1": "okay, fine", + "role1": "a roll", + "relevantExperience1": "sandwich" + }, + { + "name1": "or bread", + "role1": "maybe", + "relevantExperience1": "okay" + } + ], + "ifYesDoYouHaveCommunitySupportEndorsementWhetherFormalOrInformalPleaseAttachAnySupportingDocumentationEGLettersOfSupportLettersOfUnderstandingCouncilResolutionsEtc": "", + "describeTheTypeAndQualityOfEmploymentThatYourOrganizationOffersIncludingAnyDetailsAboutHowYourOrganizationCreatesAndSustainsLongLastingWellPayingJobOpportunitiesForLocalWorkers": "Words workds workds workds worjds words words", + "doesYourOrganizationHavePoliciesAndPracticesToAttractAndRetainIndigenousWorkersAndUnderrepresentedMarginalizedGroupsIncludingSpecificTrainingAndEducationProgramOrWrapAroundServices": "no", + "ifApplicableBrieflyDescribeTheIpStrategyTheOrganizationWillUseToManageItAndWhatTheOwnershipStructureLooksLikeIfYouDontOwnItExplainWhoTheOwnerIsAndHowYourOrganizationHasRightsToUseIt": "tester 12312 32131", + "willNewIntellectualPropertyIpBeCreatedAsAResultOfThisProjectIntellectualPropertyIsUsedToDefineAConceptInWhichIntellectualCreativePursuitsSuchAsInventionsDesignsConceptsSoftwareTradeSecretsEtcAreTreatedAsProperty": "", + "whatTrainingAndSkillsDevelopmentOpportunitiesWillBeOfferedToYourCurrentAndOrNewWorkforceAsAResultOfThisProjectIncludeHowTheProjectWillCreateOpportunitiesForCareerGrowthAndUpskillingOfCurrentWorkforceIntoNewRolesAsApplicable": "", + "describeHowYourOrganizationWillEnsureItCanAccessTheWorkforceNeededToAchieveAndSustainYourOrganizationsGrowthPlansConsiderAreThereAnyCurrentOrAnticipatedWorkforceGapsOrChallengesThatMightImpactImplementationOfThisProjectAreThereAnySkillsOrJobsWhichWillBeAChallengeToRecruitFor": "testing all the things that we want to do" + }, + "state": "submitted", + "_vnote": "", + "metadata": { + "offset": -480, + "onLine": true, + "origin": "https://chefs-dev.apps.silver.devops.gov.bc.ca", + "pathName": "/app/form/submit", + "referrer": "", + "timezone": "America/Vancouver", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36", + "browserName": "Netscape" + } + }, + "formVersionId": "8dab3e65-6439-4e50-9354-adf22c0d9b68", + "confirmationId": "94726F18" + } +} \ No newline at end of file diff --git a/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/tableReportSchema.json b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/tableReportSchema.json new file mode 100644 index 000000000..fe975799c --- /dev/null +++ b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/tableReportSchema.json @@ -0,0 +1,1717 @@ +{ + "id": "0909e14a-133c-41f6-9783-d6f6db716092", + "formId": "4b892695-350e-4b43-a9e0-821a7c60ebe8", + "version": 9, + "schema": { + "type": "form", + "display": "form", + "components": [ + { + "id": "en07ims", + "key": "projectStage1", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Project Stage #1", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "ea1gpwf", + "key": "stage2MajorProjectMilestones", + "mask": false, + "rows": 3, + "type": "simpletextareaadvanced", + "input": true, + "label": "Stage #1: Major Project Milestones", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ej0ed1", + "key": "simpledatetimeadvanced1", + "type": "simpledatetimeadvanced", + "input": true, + "label": "Anticipated Start (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "ez1cu0k", + "key": "simpledatetimeadvanced2", + "type": "simpledatetimeadvanced", + "input": true, + "label": "Anticipated Completion (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "encyy7n", + "key": "approximateCost", + "mask": false, + "type": "simplecurrencyadvanced", + "input": true, + "label": "Approximate Cost", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": { + "style": "width: 250px" + }, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "anticipatedStartMmDdYy": "", + "anticipatedStartMmDdYy1": "", + "simpledatetimeadvanced1": "", + "simpledatetimeadvanced2": "", + "stage1MajorProjectMilestones": "", + "stage2MajorProjectMilestones": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "e0qu96d", + "key": "simplepanel", + "tree": false, + "type": "simplepanel", + "input": false, + "label": "Panel", + "theme": "default", + "title": "Panel", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "collapsed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "breadcrumb": "default", + "components": [ + { + "id": "eh35hu9", + "key": "dataGridInPanel", + "tags": [], + "tree": true, + "type": "datagrid", + "input": true, + "label": "Data Grid", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "addAnother": "", + "attributes": {}, + "components": [ + { + "id": "e6tnc4", + "key": "simpletextfield", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Text Field", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e10e3vj", + "key": "simplenumber", + "type": "simplenumber", + "input": true, + "label": "Number", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "customConditional": "", + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "conditionalAddButton": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + } + ], + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "collapsible": false, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e4x1m4r", + "key": "panel", + "tags": [], + "tree": false, + "type": "panel", + "input": false, + "label": "Panel", + "logic": [], + "theme": "default", + "title": "Panel", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "breadcrumb": "default", + "components": [ + { + "id": "e5xeeu", + "key": "panel1", + "tags": [], + "tree": false, + "type": "panel", + "input": false, + "label": "Panel", + "logic": [], + "theme": "default", + "title": "Panel", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "breadcrumb": "default", + "components": [ + { + "id": "ezaosjf", + "key": "dataGrid", + "tags": [], + "tree": true, + "type": "datagrid", + "input": true, + "label": "Data Grid", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "addAnother": "", + "attributes": {}, + "components": [ + { + "id": "e2q3m9n", + "key": "simpletextfield123", + "case": "", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Text Field", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ekdb59p", + "key": "simplenumber456", + "type": "simplenumber", + "input": true, + "label": "Number", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "customConditional": "", + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "conditionalAddButton": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + } + ], + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "collapsible": false, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "collapsible": false, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "endofzv", + "key": "simplepanel1", + "tree": false, + "type": "simplepanel", + "input": false, + "label": "Panel", + "theme": "default", + "title": "Panel", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "collapsed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "breadcrumb": "default", + "components": [ + { + "id": "e66sp4", + "key": "dataGrid1", + "tags": [], + "tree": true, + "type": "datagrid", + "input": true, + "label": "Data Grid", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "addAnother": "", + "attributes": {}, + "components": [ + { + "id": "e0cfkba", + "key": "table", + "rows": [ + [ + { + "components": [ + { + "id": "ehgmv5c", + "key": "simpletextfieldTable1", + "mask": false, + "type": "simpletextfield", + "input": true, + "label": "Text Field", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "exdm1uhj", + "key": "simplephonenumberTabl2", + "mask": false, + "type": "simplephonenumber", + "input": true, + "label": "Phone Number", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputMode": "decimal", + "inputType": "tel", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ] + ], + "tags": [], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "logic": [], + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 2, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "customConditional": "", + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "conditionalAddButton": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + } + ], + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "collapsible": false, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "etpjcpg", + "key": "submit", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "Submit", + "theme": "primary", + "action": "submit", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "disableOnInvalid": true, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + "createdBy": "AGONCALV@idir", + "createdAt": "2024-11-21T22:26:53.070Z", + "updatedBy": null, + "updatedAt": "2024-11-21T22:26:53.036Z", + "published": true +} \ No newline at end of file diff --git a/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/tableReportSubmission.json b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/tableReportSubmission.json new file mode 100644 index 000000000..b54b6c766 --- /dev/null +++ b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/Mapping/tableReportSubmission.json @@ -0,0 +1,1854 @@ +{ + "form": { + "id": "4b892695-350e-4b43-a9e0-821a7c60ebe8", + "name": "Grid Testing", + "snake": "grid_testing", + "active": true, + "labels": [], + "useCase": "collection", + "ministry": "MUNI", + "schedule": null, + "createdAt": "2024-10-22T22:46:59.081Z", + "createdBy": "AGONCALV@idir", + "subscribe": null, + "updatedAt": "2024-10-22T22:46:59.079Z", + "updatedBy": null, + "description": "Grid Testing", + "formMetadata": { + "id": "abe1ada5-ba26-4919-a7cb-d5f2e8981c0b", + "formId": "4b892695-350e-4b43-a9e0-821a7c60ebe8", + "metadata": {}, + "createdAt": "2024-10-22T22:46:59.19Z", + "createdBy": "AGONCALV@idir", + "updatedAt": "2024-10-22T22:46:59.079Z", + "updatedBy": null + }, + "apiIntegration": true, + "wideFormLayout": false, + "deploymentLevel": "development", + "reminder_enabled": false, + "identityProviders": [ + { + "idp": "public", + "code": "public", + "extra": {}, + "login": false, + "roles": null, + "active": true, + "display": "Public", + "primary": false, + "tokenmap": null, + "createdAt": "2020-10-19T17:52:44.383Z", + "createdBy": "migration-002", + "updatedAt": "2020-10-19T17:52:44.383Z", + "updatedBy": null, + "permissions": [] + } + ], + "enableStatusUpdates": false, + "enableSubmitterDraft": false, + "enableDocumentTemplates": false, + "submissionReceivedEmails": [], + "allowSubmitterToUploadFile": false, + "showSubmissionConfirmation": true, + "sendSubmissionReceivedEmail": false, + "enableCopyExistingSubmission": false + }, + "version": { + "id": "0909e14a-133c-41f6-9783-d6f6db716092", + "formId": "4b892695-350e-4b43-a9e0-821a7c60ebe8", + "schema": { + "type": "form", + "display": "form", + "components": [ + { + "id": "en07ims", + "key": "projectStage1", + "tree": true, + "type": "datagrid", + "input": true, + "label": "Project Stage #1", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": true, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "components": [ + { + "id": "ea1gpwf", + "key": "stage2MajorProjectMilestones", + "mask": false, + "rows": 3, + "type": "textarea", + "input": true, + "label": "Stage #1: Major Project Milestones", + "addons": [], + "editor": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "wysiwyg": false, + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "maxWords": "", + "minWords": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "fixedSize": true, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "autoExpand": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ej0ed1", + "key": "simpledatetimeadvanced1", + "type": "datetime", + "input": true, + "label": "Anticipated Start (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "ez1cu0k", + "key": "simpledatetimeadvanced2", + "type": "datetime", + "input": true, + "label": "Anticipated Completion (mm/dd/yy)", + "addons": [], + "format": "MM-dd-yy", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "mode": "single", + "type": "calendar", + "format": "MM-dd-yy", + "locale": "en", + "maxDate": null, + "minDate": null, + "time_24hr": false, + "allowInput": true, + "enableTime": false, + "noCalendar": false, + "hourIncrement": 1, + "disableWeekdays": false, + "disableWeekends": false, + "minuteIncrement": 1, + "displayInTimezone": "viewer", + "useLocaleSettings": false + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "timezone": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "allowInput": true, + "attributes": {}, + "datePicker": { + "maxDate": null, + "maxMode": "year", + "minDate": null, + "minMode": "day", + "initDate": "", + "yearRows": 4, + "showWeeks": true, + "startingDay": 0, + "yearColumns": 5, + "disableWeekdays": false, + "disableWeekends": false + }, + "enableDate": true, + "enableTime": false, + "errorLabel": "", + "persistent": true, + "properties": {}, + "timePicker": { + "hourStep": 1, + "arrowkeys": true, + "minuteStep": 1, + "mousewheel": true, + "showMeridian": true, + "readonlyInput": false + }, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "defaultDate": "", + "description": "", + "placeholder": "", + "defaultValue": "", + "customOptions": {}, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "datepickerMode": "day", + "calculateServer": false, + "displayInTimezone": "viewer", + "useLocaleSettings": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "enableMaxDateInput": false, + "enableMinDateInput": false, + "allowCalculateOverride": false + }, + { + "id": "encyy7n", + "key": "approximateCost", + "mask": false, + "type": "currency", + "input": true, + "label": "Approximate Cost", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "currency": "USD", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": true, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": { + "style": "width: 250px" + }, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + { + "anticipatedStartMmDdYy": "", + "anticipatedStartMmDdYy1": "", + "simpledatetimeadvanced1": "", + "simpledatetimeadvanced2": "", + "stage1MajorProjectMilestones": "", + "stage2MajorProjectMilestones": "" + } + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + }, + { + "id": "e0qu96d", + "key": "panel", + "tree": false, + "type": "panel", + "input": false, + "label": "Panel", + "theme": "default", + "title": "Panel", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "collapsed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "breadcrumb": "default", + "components": [ + { + "id": "eh35hu9", + "key": "dataGridInPanel", + "tags": [], + "tree": true, + "type": "datagrid", + "input": true, + "label": "Data Grid", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "addAnother": "", + "attributes": {}, + "components": [ + { + "id": "e6tnc4", + "key": "textfield", + "case": "", + "mask": false, + "type": "textfield", + "input": true, + "label": "Text Field", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "e10e3vj", + "key": "number", + "type": "number", + "input": true, + "label": "Number", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "customConditional": "", + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "conditionalAddButton": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + } + ], + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "collapsible": false, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "e4x1m4r", + "key": "panel", + "tags": [], + "tree": false, + "type": "panel", + "input": false, + "label": "Panel", + "logic": [], + "theme": "default", + "title": "Panel", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "breadcrumb": "default", + "components": [ + { + "id": "e5xeeu", + "key": "panel1", + "tags": [], + "tree": false, + "type": "panel", + "input": false, + "label": "Panel", + "logic": [], + "theme": "default", + "title": "Panel", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "breadcrumb": "default", + "components": [ + { + "id": "ezaosjf", + "key": "dataGrid", + "tags": [], + "tree": true, + "type": "datagrid", + "input": true, + "label": "Data Grid", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "addAnother": "", + "attributes": {}, + "components": [ + { + "id": "e2q3m9n", + "key": "simpletextfield123", + "case": "", + "mask": false, + "type": "textfield", + "input": true, + "label": "Text Field", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": "", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + }, + { + "id": "ekdb59p", + "key": "simplenumber456", + "type": "number", + "input": true, + "label": "Number", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "max": "", + "min": "", + "step": "any", + "custom": "", + "unique": false, + "integer": "", + "multiple": false, + "required": false, + "isUseForCopy": false, + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "delimiter": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "requireDecimal": false, + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "customConditional": "", + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "conditionalAddButton": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + } + ], + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "collapsible": false, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "collapsible": false, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "endofzv", + "key": "panel1", + "tree": false, + "type": "panel", + "input": false, + "label": "Panel", + "theme": "default", + "title": "Panel", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "collapsed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "breadcrumb": "default", + "components": [ + { + "id": "e66sp4", + "key": "dataGrid1", + "tags": [], + "tree": true, + "type": "datagrid", + "input": true, + "label": "Data Grid", + "logic": [], + "addons": [], + "errors": "", + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "reorder": false, + "tooltip": "", + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "json": "", + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "customMessage": "", + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "initEmpty": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "addAnother": "", + "attributes": {}, + "components": [ + { + "id": "e0cfkba", + "key": "table", + "rows": [ + [ + { + "components": [ + { + "id": "ehgmv5c", + "key": "simpletextfieldTable1", + "mask": false, + "type": "textfield", + "input": true, + "label": "Text Field", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "", + "inputType": "text", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ], + [ + { + "components": [ + { + "id": "exdm1uhj", + "key": "simplephonenumberTabl2", + "mask": false, + "type": "phoneNumber", + "input": true, + "label": "Phone Number", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "pattern": "", + "multiple": false, + "required": false, + "maxLength": "", + "minLength": "", + "isUseForCopy": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "inputMask": "(999) 999-9999", + "inputMode": "decimal", + "inputType": "tel", + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": true, + "attributes": {}, + "errorLabel": "", + "persistent": true, + "properties": {}, + "spellcheck": true, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "displayMask": "", + "inputFormat": "plain", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false, + "truncateMultipleSpaces": false + } + ] + } + ] + ], + "tags": [], + "tree": false, + "type": "table", + "hover": false, + "input": false, + "label": "Table", + "logic": [], + "addons": [], + "header": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": null, + "caption": "", + "dbIndex": false, + "numCols": 1, + "numRows": 2, + "overlay": { + "top": "", + "left": "", + "page": "", + "style": "", + "width": "", + "height": "" + }, + "striped": false, + "tooltip": "", + "bordered": false, + "disabled": false, + "lazyLoad": false, + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "cloneRows": false, + "condensed": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "cellAlignment": "left", + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ], + "errorLabel": "", + "persistent": true, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "layoutFixed": false, + "placeholder": "", + "defaultValue": [ + {} + ], + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "enableRowGroups": false, + "customConditional": "", + "addAnotherPosition": "bottom", + "allowMultipleMasks": false, + "customDefaultValue": "", + "conditionalAddButton": "", + "allowCalculateOverride": false, + "disableAddingRemovingRows": false + } + ], + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": false, + "collapsible": false, + "conditional": { + "eq": "", + "json": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": false, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "customConditional": "", + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + }, + { + "id": "etpjcpg", + "key": "submit", + "size": "md", + "type": "button", + "block": false, + "input": true, + "label": "Submit", + "theme": "primary", + "action": "submit", + "addons": [], + "hidden": false, + "prefix": "", + "suffix": "", + "unique": false, + "widget": { + "type": "input" + }, + "dbIndex": false, + "overlay": { + "top": "", + "left": "", + "style": "", + "width": "", + "height": "" + }, + "tooltip": "", + "disabled": false, + "leftIcon": "", + "multiple": false, + "redrawOn": "", + "tabindex": "", + "validate": { + "custom": "", + "unique": false, + "multiple": false, + "required": false, + "customPrivate": false, + "strictDateValidation": false + }, + "autofocus": false, + "encrypted": false, + "hideLabel": false, + "modalEdit": false, + "protected": false, + "refreshOn": "", + "rightIcon": "", + "tableView": false, + "attributes": {}, + "errorLabel": "", + "persistent": false, + "properties": {}, + "validateOn": "change", + "clearOnHide": true, + "conditional": { + "eq": "", + "show": null, + "when": null + }, + "customClass": "", + "description": "", + "placeholder": "", + "defaultValue": null, + "dataGridLabel": true, + "labelPosition": "top", + "showCharCount": false, + "showWordCount": false, + "calculateValue": "", + "calculateServer": false, + "disableOnInvalid": true, + "allowMultipleMasks": false, + "customDefaultValue": "", + "allowCalculateOverride": false + } + ] + }, + "version": 9, + "createdAt": "2024-11-21T22:26:53.07Z", + "createdBy": "AGONCALV@idir", + "published": true, + "updatedAt": "2024-11-21T22:26:53.036Z", + "updatedBy": null + }, + "submission": { + "id": "57ef25a3-a665-4769-b733-cf8a49f1653e", + "draft": false, + "deleted": false, + "createdAt": "2024-11-22T23:07:04.585Z", + "createdBy": "public", + "updatedAt": "2024-11-22T23:07:04.584Z", + "updatedBy": null, + "submission": { + "data": { + "submit": true, + "dataGrid": [ + { + "simplenumber456": 3312312, + "simpletextfield123": "tesxtt asf" + }, + { + "simplenumber456": 412312, + "simpletextfield123": "aaa vvv bbbb" + }, + { + "simplenumber456": 444444, + "simpletextfield123": "asdasdsadasda" + } + ], + "dataGrid1": [ + { + "simpletextfieldTable1": "tester 123123", + "simplephonenumberTabl2": "(123) 123-1231" + }, + { + "simpletextfieldTable1": "tester asdasd12312", + "simplephonenumberTabl2": "(321) 312-3123" + } + ], + "lateEntry": false, + "projectStage1": [ + { + "approximateCost": 123123, + "anticipatedStartMmDdYy": "", + "anticipatedStartMmDdYy1": "", + "simpledatetimeadvanced1": "2024-11-01T00:00:00-07:00", + "simpledatetimeadvanced2": "2024-11-22T00:00:00-08:00", + "stage1MajorProjectMilestones": "", + "stage2MajorProjectMilestones": "test 123" + }, + { + "approximateCost": 123123123123, + "simpledatetimeadvanced1": "2024-11-09T00:00:00-08:00", + "simpledatetimeadvanced2": "2024-11-30T00:00:00-08:00", + "stage2MajorProjectMilestones": "testttt 123123" + } + ], + "dataGridInPanel": [ + { + "number": 11123, + "textfield": "tester 123" + }, + { + "number": 412312, + "textfield": "tester 456" + } + ] + }, + "state": "submitted", + "_vnote": "", + "metadata": { + "offset": -480, + "onLine": true, + "origin": "https://chefs-dev.apps.silver.devops.gov.bc.ca", + "pathName": "/app/form/submit", + "referrer": "", + "timezone": "America/Vancouver", + "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36", + "browserName": "Netscape" + } + }, + "formVersionId": "0909e14a-133c-41f6-9783-d6f6db716092", + "confirmationId": "57EF25A3" + } +} \ No newline at end of file diff --git a/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/ReportSchemaGenerationTests.cs b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/ReportSchemaGenerationTests.cs new file mode 100644 index 000000000..7f5411355 --- /dev/null +++ b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/ReportSchemaGenerationTests.cs @@ -0,0 +1,218 @@ +using Newtonsoft.Json.Linq; +using Newtonsoft.Json; +using NSubstitute; +using Shouldly; +using System.IO; +using System; +using Unity.GrantManager.Applications; +using Unity.GrantManager.Intakes; +using Xunit; +using System.Linq; +using System.Collections.Generic; +using Amazon.Runtime; + +namespace Unity.GrantManager.Intake +{ + public class ReportSchemaGenerationTests : GrantManagerDomainTestBase + { + private readonly IIntakeFormSubmissionMapper _intakeFormSubmissionMapper; + private readonly IApplicationChefsFileAttachmentRepository _applicationChefsFileAttachmentRepository; + + public ReportSchemaGenerationTests() + { + _applicationChefsFileAttachmentRepository = Substitute.For(); + _intakeFormSubmissionMapper = new IntakeFormSubmissionMapper(_applicationChefsFileAttachmentRepository); + } + + private static dynamic? LoadTestData(string filename) + { + var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Intake\\Mapping\\" + filename); + var reader = new StreamReader(filePath); + var jsonStr = reader.ReadToEnd(); + var testData = JsonConvert.DeserializeObject(jsonStr); + reader.Dispose(); + return testData; + } + + + [Theory] + [InlineData("basicReportSchema.json", 128)] + [InlineData("tableReportSchema.json", 10)] + public void TestBasicDataGridMapping(string filename, int keyCount) + { + dynamic? formMapping = LoadTestData(filename); + string result = _intakeFormSubmissionMapper.InitializeAvailableFormFields(formMapping); + JObject jObject = JObject.Parse(result); + + // Exclusion array + string[] exclusionArray = ["simplebuttonadvanced", "datagrid"]; + + var keys = jObject + .Properties() + .Where(p => + { + string? typeValue = JObject.Parse(p.Value.ToString())?["type"]?.ToString(); + return typeValue != null && !exclusionArray.Contains(typeValue); + }) + .Select(p => p.Name); + + + string pipeDelimitedKeys = string.Join("|", keys); + + keys.Count().ShouldBe(keyCount); + } + + [Theory] + //InlineData("tableReportSchema.json", "tableReportSubmission.json")] + [InlineData("reportingFieldsSchema.json", "reportingFieldsSubmission.json")] + public void GenerateReportableData(string schemafilename, string submissionfilename) + { + var reportResult = new Dictionary>(); + + dynamic? formMapping = LoadTestData(schemafilename); + JObject schemaMapping = JObject.Parse(formMapping); // need to work with this. + + string result = _intakeFormSubmissionMapper.InitializeAvailableFormFields(formMapping); + JObject jObject = JObject.Parse(result); + + result.ShouldNotBeNull(); + + // Exclusion array + string[] exclusionArray = ["simplebuttonadvanced", "datagrid"]; + string[] complexSchema = ["simplecheckboxes", "simplecheckboxadvanced"]; + + var keys = jObject.Properties() + .SelectMany(p => + { + string? typeValue = JObject.Parse(p.Value.ToString())?["type"]?.ToString(); + if (typeValue != null && exclusionArray.Contains(typeValue)) + { + return Enumerable.Empty(); + } + + // Check if the node has a child of values which is an array of objects + if (p.Value is JObject obj && obj["values"] is JArray valuesArray) + { + return valuesArray.Select(v => $"{p.Name}-{v["value"]}"); + } + + return [p.Name]; + }); + + + string pipeDelimitedKeys = string.Join("|", keys); + pipeDelimitedKeys += "|IshouldBeHere"; + + // + + // Get the schema + dynamic? submissionData = LoadTestData(submissionfilename); + + if (submissionData == null) Assert.Fail(); + + JObject submission = JObject.Parse(submissionData.ToString()); + + // Navigate to the "data" node within the "submission" node + JToken? dataNode = submission.SelectToken("submission.submission.data"); + + if (dataNode == null) Assert.Fail(); + + List keysToTrack = [.. pipeDelimitedKeys.Split('|')]; + + // Perform a recursive scan of the data node + ScanNode(dataNode, keysToTrack, reportResult); + + // Ensure all keys are present in the result, even if no matches were found + foreach (var key in keysToTrack) + { + if (!reportResult.ContainsKey(key)) + { + reportResult[key] = []; + } + } + + // Clean up the JSON strings + foreach (var key in reportResult.Keys.ToList()) + { + reportResult[key] = reportResult[key].Select(CleanJsonString).ToList(); + } + + // Sort the dictionary by keys alphabetically + var sortedResult = reportResult.OrderBy(kvp => kvp.Key).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + + // Create a simple JSON object from the result dictionary + JObject jsonObject = []; + + foreach (var kvp in sortedResult) + { + JArray valuesArray = new(kvp.Value); + jsonObject[kvp.Key] = valuesArray; + } + + jsonObject.ShouldNotBeNull(); + + // Prep value for db + string cleanedJsonString = jsonObject.ToString(); + } + + + static string CleanJsonString(string jsonString) + { + if (IsJson(jsonString)) + { + try + { + var parsedJson = JsonConvert.DeserializeObject(jsonString); + + // Serialize the JObject back to a JSON string without escape characters + var cleaned = parsedJson != null ? parsedJson.ToString(Formatting.None) : jsonString; + + return cleaned; + } + catch + { + return jsonString; // Return as is if parsing fails + } + } + return jsonString; // Return as is if not a JSON object + } + static bool IsJson(string str) + { + str = str.Trim(); + return (str.StartsWith('{') && str.EndsWith('}')) || (str.StartsWith('[') && str.EndsWith(']')); + } + + static void ScanNode(JToken node, List keysToTrack, Dictionary> result) + { + if (node.Type == JTokenType.Object) + { + foreach (var property in node.Children()) + { + // Check if the key is in the list of keys to track + if (keysToTrack.Contains(property.Name)) + { + // Initialize the list if the key is not yet in the result dictionary + if (!result.TryGetValue(property.Name, out List? value)) + { + value = ([]); + result[property.Name] = value; + } + + value.Add(property.Value.ToString()); + } + + // Recursively scan the property's value + ScanNode(property.Value, keysToTrack, result); + } + } + else if (node.Type == JTokenType.Array) + { + foreach (var item in node.Children()) + { + // Recursively scan each item in the array + ScanNode(item, keysToTrack, result); + } + } + } + } +} diff --git a/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Unity.GrantManager.Domain.Tests.csproj b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Unity.GrantManager.Domain.Tests.csproj index ce30e8b83..d39937fed 100644 --- a/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Unity.GrantManager.Domain.Tests.csproj +++ b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Unity.GrantManager.Domain.Tests.csproj @@ -33,9 +33,24 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + From acd7067d1b78c09b213b7e7fac74c19523832f0f Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Mon, 16 Dec 2024 08:53:14 -0800 Subject: [PATCH 02/28] AB#26819 POC for submission / custom field reporting --- .../ApplicationFormVersionDto.cs | 3 + .../IApplicationFormVersionService.cs | 1 + .../ApplicationFormVersionAppService.cs | 99 +- .../Intakes/IntakeFormSubmissionManager.cs | 127 +- .../Reporting/DynamicViewGenerationArgs.cs | 10 + .../Reporting/DynamicViewGeneratorJob.cs | 44 + .../Applications/ApplicationFormSubmission.cs | 3 + .../Applications/ApplicationFormVersion.cs | 3 + .../Mapping/InputComponentProcessor.cs | 32 +- ...0241212211237_AddReportColumns.Designer.cs | 3304 ++++++++++++++++ .../20241212211237_AddReportColumns.cs | 40 + ...241212214831_AddReportViewName.Designer.cs | 3308 ++++++++++++++++ .../20241212214831_AddReportViewName.cs | 29 + ...1212234607_AddReportDataColumn.Designer.cs | 3312 ++++++++++++++++ .../20241212234607_AddReportDataColumn.cs | 29 + ...19_AddApplicationFormVersionId.Designer.cs | 3315 +++++++++++++++++ ...41213045919_AddApplicationFormVersionId.cs | 29 + ...183520_AddDynamicViewGenerator.Designer.cs | 3315 +++++++++++++++++ .../20241213183520_AddDynamicViewGenerator.cs | 22 + .../GrantTenantDbContextModelSnapshot.cs | 22 + ...ty.GrantManager.EntityFrameworkCore.csproj | 1 - .../Controllers/FormController.cs | 4 +- .../appsettings.Development.json | 2 +- .../Intake/ReportSchemaGenerationTests.cs | 116 +- 24 files changed, 17127 insertions(+), 43 deletions(-) create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGenerationArgs.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGeneratorJob.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212211237_AddReportColumns.Designer.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212211237_AddReportColumns.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212214831_AddReportViewName.Designer.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212214831_AddReportViewName.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212234607_AddReportDataColumn.Designer.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212234607_AddReportDataColumn.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213045919_AddApplicationFormVersionId.Designer.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213045919_AddApplicationFormVersionId.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213183520_AddDynamicViewGenerator.Designer.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213183520_AddDynamicViewGenerator.cs diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/ApplicationForms/ApplicationFormVersionDto.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/ApplicationForms/ApplicationFormVersionDto.cs index 7564064f0..27e48d426 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/ApplicationForms/ApplicationFormVersionDto.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/ApplicationForms/ApplicationFormVersionDto.cs @@ -12,5 +12,8 @@ public class ApplicationFormVersionDto : EntityDto public string? AvailableChefsFields { get; set; } = "{}"; public int? Version { get; set; } public bool Published { get; set; } + public string ReportColumns { get; set; } = string.Empty; + public string ReportKeys { get; set; } = string.Empty; + public string ReportViewName { get; set; } = string.Empty; } } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/ApplicationForms/IApplicationFormVersionService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/ApplicationForms/IApplicationFormVersionService.cs index 1edd93147..f12e759f9 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/ApplicationForms/IApplicationFormVersionService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/ApplicationForms/IApplicationFormVersionService.cs @@ -2,6 +2,7 @@ using System; using System.Threading.Tasks; using Unity.GrantManager.Forms; +using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs index 52bd5a99f..021707af1 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs @@ -1,6 +1,7 @@ using Microsoft.Extensions.Logging; using Newtonsoft.Json.Linq; using System; +using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using System.Threading.Tasks; @@ -8,8 +9,10 @@ using Unity.GrantManager.Forms; using Unity.GrantManager.Intakes; using Unity.GrantManager.Integration.Chefs; +using Unity.GrantManager.Reporting; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; +using Volo.Abp.BackgroundJobs; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; using Volo.Abp.Uow; @@ -31,13 +34,17 @@ public class ApplicationFormVersionAppService : private readonly IUnitOfWorkManager _unitOfWorkManager; private readonly IFormsApiService _formApiService; private readonly IApplicationFormSubmissionRepository _applicationFormSubmissionRepository; + private readonly IApplicationFormRepository _applicationFormRepository; + private readonly IBackgroundJobManager _backgroundJobManager; public ApplicationFormVersionAppService(IRepository repository, IIntakeFormSubmissionMapper intakeFormSubmissionMapper, IUnitOfWorkManager unitOfWorkManager, IFormsApiService formsApiService, IApplicationFormVersionRepository applicationFormVersionRepository, - IApplicationFormSubmissionRepository applicationFormSubmissionRepository) + IApplicationFormSubmissionRepository applicationFormSubmissionRepository, + IApplicationFormRepository applicationFormRepository, + IBackgroundJobManager backgroundJobManager) : base(repository) { _applicationFormVersionRepository = applicationFormVersionRepository; @@ -45,6 +52,8 @@ public ApplicationFormVersionAppService(IRepository CreateAsync(CreateUpdateApplicationFormVersionDto input) @@ -229,7 +238,8 @@ public async Task UpdateOrCreateApplicationFormVersio { var applicationFormVersion = await GetApplicationFormVersion(chefsFormVersionId); - bool formVersionEsists = true; + bool formVersionExists = true; + if (applicationFormVersion == null) { applicationFormVersion = (await _applicationFormVersionRepository @@ -242,7 +252,7 @@ public async Task UpdateOrCreateApplicationFormVersio applicationFormVersion = new ApplicationFormVersion(); applicationFormVersion.ApplicationFormId = applicationFormId; applicationFormVersion.ChefsApplicationFormGuid = chefsFormId; - formVersionEsists = false; + formVersionExists = false; } applicationFormVersion.ChefsFormVersionGuid = chefsFormVersionId; @@ -275,7 +285,7 @@ public async Task UpdateOrCreateApplicationFormVersio throw new EntityNotFoundException("Application Form Not Registered"); } - if (formVersionEsists) + if (formVersionExists) { applicationFormVersion = await _applicationFormVersionRepository.UpdateAsync(applicationFormVersion); } @@ -284,9 +294,85 @@ public async Task UpdateOrCreateApplicationFormVersio applicationFormVersion = await _applicationFormVersionRepository.InsertAsync(applicationFormVersion); } + // Add keys and columns for report generation + await UpdateFormVersionWithReportKeysAndColumnsAsync(applicationFormVersion); + await QueueDynamicViewGeneratorAsync(applicationFormVersion); + return ObjectMapper.Map(applicationFormVersion); } + private async Task QueueDynamicViewGeneratorAsync(ApplicationFormVersion applicationFormVersion) + { + await _backgroundJobManager.EnqueueAsync( + new DynamicViewGenerationArgs + { + ApplicationFormVersionId = applicationFormVersion.Id, + TenantId = CurrentTenant.Id + }); + } + + private async Task UpdateFormVersionWithReportKeysAndColumnsAsync(ApplicationFormVersion applicationFormVersion) + { + if (applicationFormVersion.AvailableChefsFields == null) return; + + var form = await _applicationFormRepository.GetAsync(applicationFormVersion.ApplicationFormId); + JObject jObject = JObject.Parse(applicationFormVersion.AvailableChefsFields); + + // Exclusion array + string[] exclusionArray = ["simplebuttonadvanced", "datagrid", "hidden"]; + string[] nestedKeyFields = ["simplecheckboxes", "simplecheckboxadvanced"]; + + // Dictionary to store full key names and truncated key names + Dictionary keyMapping = []; + + // Filter out properties based on the exclusion array and extend child keys + var keys = jObject + .Properties() + .SelectMany(p => + { + + string? typeValue = JObject.Parse(p.Value.ToString())?["type"]?.ToString(); + if (typeValue != null && exclusionArray.Contains(typeValue)) + { + return []; + } + + // Check for nested key fields and generate dashed keys + if (typeValue != null && nestedKeyFields.Contains(typeValue)) + { + return ExtractNestedKeys(p); + } + + return [p.Name]; + }) + .Distinct() + .Select(fullKey => + { + string truncatedKey = fullKey.Length > 63 ? fullKey[..63] : fullKey; + keyMapping[fullKey] = truncatedKey; + return fullKey; + }); + + // Get all keys and pipe separate them + string pipeDelimitedKeys = string.Join("|", keys); + + // Truncate each key to a maximum of 63 characters and create a pipe-delimited string + string truncatedDelimitedKeys = string.Join("|", keys.Select(k => k.Length > 63 ? k[..63] : k)); + + applicationFormVersion.ReportColumns = truncatedDelimitedKeys; + applicationFormVersion.ReportKeys = pipeDelimitedKeys; + applicationFormVersion.ReportViewName = $"{form.ApplicationFormName}-V{applicationFormVersion.Version}"; + } + + private static string[] ExtractNestedKeys(JProperty jProperty) + { + if (jProperty == null) return []; + + string? valuesProp = JObject.Parse(jProperty.Value.ToString())?["values"]?.ToString(); + return string.IsNullOrEmpty(valuesProp) ? [] : valuesProp.Split(','); + } + + public async Task GetByChefsFormVersionId(Guid chefsFormVersionId) { var applicationFormVersion = await _applicationFormVersionRepository.GetByChefsFormVersionAsync(chefsFormVersionId); @@ -340,5 +426,10 @@ private async Task GetVersion(Guid formVersionId) var formVersion = await _applicationFormVersionRepository.GetByChefsFormVersionAsync(formVersionId); return formVersion?.Version ?? 0; } + + public Task GenerateDynamicViewAsync(Guid applicationFormVersionId) + { + throw new NotImplementedException(); + } } } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs index fbd8706ef..bcdfba5b3 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs @@ -1,5 +1,7 @@ using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using System; +using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Unity.GrantManager.Applicants; @@ -51,8 +53,7 @@ public async Task ProcessFormSubmissionAsync(ApplicationForm applicationFo var application = await CreateNewApplicationAsync(intakeMap, applicationForm); _intakeFormSubmissionMapper.SaveChefsFiles(formSubmission, application.Id); - _ = await _applicationFormSubmissionRepository.InsertAsync( - new ApplicationFormSubmission + var newSubmission = new ApplicationFormSubmission { OidcSub = Guid.Empty.ToString(), ApplicantId = application.ApplicantId, @@ -60,7 +61,9 @@ public async Task ProcessFormSubmissionAsync(ApplicationForm applicationFo ChefsSubmissionGuid = intakeMap.SubmissionId ?? $"{Guid.Empty}", ApplicationId = application.Id, Submission = ChefsFormIOReplacement.ReplaceAdvancedFormIoControls(formSubmission) - }); + }; + + _ = await _applicationFormSubmissionRepository.InsertAsync(newSubmission); var localFormVersion = await _applicationFormVersionRepository.GetByChefsFormVersionAsync(Guid.Parse(formVersionId)); await _customFieldsIntakeSubmissionMapper.MapAndPersistCustomFields(application.Id, @@ -68,10 +71,123 @@ await _customFieldsIntakeSubmissionMapper.MapAndPersistCustomFields(application. formSubmission, formVersionSubmissionHeaderMapping); + newSubmission.ReportData = GenerateReportDataForSubmission(formSubmission, localFormVersion?.ReportKeys); + newSubmission.ApplicationFormVersionId = localFormVersion?.Id; + await uow.SaveChangesAsync(); + return application.Id; } + private static string? GenerateReportDataForSubmission(dynamic submissionData, string keys) + { + var reportResult = new Dictionary>(); + + JObject submission = JObject.Parse(submissionData.ToString()); + + // Navigate to the "data" node within the "submission" node + JToken? dataNode = submission.SelectToken("submission.submission.data"); + + List keysToTrack = [.. keys.Split('|')]; + + if (dataNode == null) return null; + + // Perform a recursive scan of the data node + ScanNode(dataNode, keysToTrack, reportResult); + + // Ensure all keys are present in the result, even if no matches were found + foreach (var key in keysToTrack) + { + if (!reportResult.ContainsKey(key)) + { + reportResult[key] = []; + } + } + + // Clean up the JSON strings + foreach (var key in reportResult.Keys.ToList()) + { + reportResult[key] = reportResult[key].Select(CleanJsonString).ToList(); + } + + // Sort the dictionary by keys alphabetically + var sortedResult = reportResult.OrderBy(kvp => kvp.Key).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + + // Create a simple JSON object from the result dictionary + JObject jsonObject = []; + + foreach (var kvp in sortedResult) + { + JArray valuesArray = new(kvp.Value); + jsonObject[kvp.Key] = valuesArray; + } + + if (jsonObject == null) return null; + + // Prep value for db + return jsonObject.ToString(); + } + + static void ScanNode(JToken node, List keysToTrack, Dictionary> result) + { + if (node.Type == JTokenType.Object) + { + foreach (var property in node.Children()) + { + // Check if the key is in the list of keys to track + if (keysToTrack.Contains(property.Name)) + { + // Initialize the list if the key is not yet in the result dictionary + if (!result.TryGetValue(property.Name, out List? value)) + { + value = ([]); + result[property.Name] = value; + } + + value.Add(property.Value.ToString()); + } + + // Recursively scan the property's value + ScanNode(property.Value, keysToTrack, result); + } + } + else if (node.Type == JTokenType.Array) + { + foreach (var item in node.Children()) + { + // Recursively scan each item in the array + ScanNode(item, keysToTrack, result); + } + } + } + + static string CleanJsonString(string jsonString) + { + if (IsJson(jsonString)) + { + try + { + var parsedJson = JsonConvert.DeserializeObject(jsonString); + + // Serialize the JObject back to a JSON string without escape characters + var cleaned = parsedJson != null ? parsedJson.ToString(Formatting.None) : jsonString; + + return cleaned; + } + catch + { + return jsonString; // Return as is if parsing fails + } + } + return jsonString; // Return as is if not a JSON object + } + + static bool IsJson(string str) + { + str = str.Trim(); + return (str.StartsWith('{') && str.EndsWith('}')) || (str.StartsWith('[') && str.EndsWith(']')); + } + private async Task CreateNewApplicationAsync(IntakeMapping intakeMap, ApplicationForm applicationForm) { @@ -80,7 +196,7 @@ private async Task CreateNewApplicationAsync(IntakeMapping intakeMa var application = await _applicationRepository.InsertAsync( new Application { - ProjectName = MappingUtil.ResolveAndTruncateField(255, string.Empty, intakeMap.ProjectName), + ProjectName = MappingUtil.ResolveAndTruncateField(255, string.Empty, intakeMap.ProjectName), ApplicantId = applicant.Id, ApplicationFormId = applicationForm.Id, ApplicationStatusId = submittedStatus.Id, @@ -109,7 +225,8 @@ private async Task CreateNewApplicationAsync(IntakeMapping intakeMa ProjectSummary = intakeMap.ProjectSummary, } ); - ApplicantAgentDto applicantAgentDto = new ApplicantAgentDto { + ApplicantAgentDto applicantAgentDto = new ApplicantAgentDto + { Applicant = applicant, Application = application, IntakeMap = intakeMap diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGenerationArgs.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGenerationArgs.cs new file mode 100644 index 000000000..74e897b62 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGenerationArgs.cs @@ -0,0 +1,10 @@ +using System; + +namespace Unity.GrantManager.Reporting +{ + public class DynamicViewGenerationArgs + { + public Guid ApplicationFormVersionId { get; set; } + public Guid? TenantId { get; set; } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGeneratorJob.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGeneratorJob.cs new file mode 100644 index 000000000..5b38234aa --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGeneratorJob.cs @@ -0,0 +1,44 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using System; +using System.Threading.Tasks; +using Unity.GrantManager.Applications; +using Volo.Abp.BackgroundJobs; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.MultiTenancy; +using Volo.Abp.Uow; + +namespace Unity.GrantManager.Reporting +{ + public class DynamicViewGeneratorJob( + IApplicationFormVersionRepository applicationFormVersionRepository, + ICurrentTenant currentTenant, + IUnitOfWorkManager unitOfWorkManager) : AsyncBackgroundJob, ITransientDependency + { + public override async Task ExecuteAsync(DynamicViewGenerationArgs args) + { + try + { + using (currentTenant.Change(args.TenantId)) + { + using var uow = unitOfWorkManager.Begin(isTransactional: false); + var applicationFormVersion = await applicationFormVersionRepository.GetAsync(args.ApplicationFormVersionId); + + if (applicationFormVersion != null) + { + var dbContext = await applicationFormVersionRepository.GetDbContextAsync(); + FormattableString sql = $@"CALL generate_view({args.ApplicationFormVersionId});"; + await dbContext.Database.ExecuteSqlAsync(sql); + } + + await uow.CompleteAsync(); + } + } + catch (Exception ex) + { + Logger.LogError("{errorMessage}", ex.Message); + } + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Domain/Applications/ApplicationFormSubmission.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Domain/Applications/ApplicationFormSubmission.cs index 943f8a3a1..a3a273c09 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Domain/Applications/ApplicationFormSubmission.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Domain/Applications/ApplicationFormSubmission.cs @@ -17,4 +17,7 @@ public class ApplicationFormSubmission : AuditedAggregateRoot, IMultiTenan public Guid? TenantId { get; set; } public string? RenderedHTML { get; set; } = string.Empty; public Guid? FormVersionId { get; set; } + [Column(TypeName = "jsonb")] + public string ReportData { get; set; } = "{}"; + public Guid? ApplicationFormVersionId { get; set; } } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Domain/Applications/ApplicationFormVersion.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Domain/Applications/ApplicationFormVersion.cs index cd23c241c..f681010f4 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Domain/Applications/ApplicationFormVersion.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Domain/Applications/ApplicationFormVersion.cs @@ -14,4 +14,7 @@ public class ApplicationFormVersion : FullAuditedAggregateRoot, IMultiTena public int? Version { get; set; } public bool Published { get; set; } public Guid? TenantId { get; set; } + public string ReportColumns { get; set; } = string.Empty; + public string ReportKeys { get; set; } = string.Empty; + public string ReportViewName { get; set; } = string.Empty; } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Domain/Intakes/Mapping/InputComponentProcessor.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Domain/Intakes/Mapping/InputComponentProcessor.cs index 0758fb6a2..209766e1a 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Domain/Intakes/Mapping/InputComponentProcessor.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Domain/Intakes/Mapping/InputComponentProcessor.cs @@ -22,11 +22,11 @@ public static void InitializeLogger(ILoggerFactory loggerFactory) private static readonly HashSet allowableContainerTypes = new HashSet { - "tabs", "table", "simplecols2", "simplecols3", "simplecols4", - "simplecontent", "simplepanel", "simpleparagraph", "simpletabs", + "tabs", "table", "simplecols2", "simplecols3", "simplecols4", + "simplecontent", "simplepanel", "simpleparagraph", "simpletabs", "container", "columns", "panel" }; - private static readonly HashSet columnTypes = new HashSet + private static readonly HashSet columnTypes = new HashSet { "simplecols2", "simplecols3", @@ -39,11 +39,16 @@ public static void InitializeLogger(ILoggerFactory loggerFactory) "datagrid" }; - private void ProcessComponentToDictionary(string key, string? tokenType, string label) + private static readonly HashSet nestedKeyFields = new HashSet + { + "simplecheckboxes","simplecheckboxadvanced" + }; + + private void ProcessComponentToDictionary(string key, string? tokenType, string label, string? tokenValues) { if (!components.ContainsKey(key)) { - var jsonValue = JsonConvert.SerializeObject(new { type = tokenType, label }); + var jsonValue = JsonConvert.SerializeObject(new { type = tokenType, label, values = tokenValues }); components.Add(key, jsonValue); } } @@ -93,10 +98,25 @@ public void ProcessComponent(JToken token) string? key = token["key"]?.ToString(); string? label = token["label"]?.ToString(); string? tokenType = token["type"]?.ToString(); + string? tokenValues = token["values"]?.ToString(); + + // Check if tokenType is in nestedKeyFields and extract values + if (key != null + && tokenType != null + && nestedKeyFields.Contains(tokenType) + && token["values"] is JArray valuesArray) + { + tokenValues = string.Join(",", valuesArray.Select(v => v["value"]?.ToString())); + } + else + { + tokenValues = token["values"]?.ToString(); + } + if (key != null && label != null) { - ProcessComponentToDictionary(key, tokenType, label); + ProcessComponentToDictionary(key, tokenType, label, tokenValues); } } catch (Exception ex) diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212211237_AddReportColumns.Designer.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212211237_AddReportColumns.Designer.cs new file mode 100644 index 000000000..9c29f5919 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212211237_AddReportColumns.Designer.cs @@ -0,0 +1,3304 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Unity.GrantManager.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + [DbContext(typeof(GrantTenantDbContext))] + [Migration("20241212211237_AddReportColumns")] + partial class AddReportColumns + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("ScoresheetInstanceId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("QuestionId"); + + b.HasIndex("ScoresheetInstanceId"); + + b.ToTable("Answers", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("Questions", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Scoresheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("CustomFieldId") + .HasColumnType("uuid"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetInstanceId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetInstanceId"); + + b.ToTable("CustomFieldValues", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetCorrelationId") + .HasColumnType("uuid"); + + b.Property("WorksheetCorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("WorksheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetLinks", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("CustomFields", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Worksheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantName") + .IsRequired() + .HasMaxLength(600) + .HasColumnType("character varying(600)"); + + b.Property("ApproxNumberOfEmployees") + .HasColumnType("text"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FiscalDay") + .HasColumnType("integer"); + + b.Property("FiscalMonth") + .HasColumnType("text"); + + b.Property("IndigenousOrgInd") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MatchPercentage") + .HasColumnType("numeric"); + + b.Property("NonRegisteredBusinessName") + .HasColumnType("text"); + + b.Property("OrgName") + .HasColumnType("text"); + + b.Property("OrgNumber") + .HasColumnType("text"); + + b.Property("OrgStatus") + .HasColumnType("text"); + + b.Property("OrganizationSize") + .HasColumnType("text"); + + b.Property("OrganizationType") + .HasColumnType("text"); + + b.Property("RedStop") + .HasColumnType("boolean"); + + b.Property("Sector") + .HasColumnType("text"); + + b.Property("SectorSubSectorIndustryDesc") + .HasColumnType("text"); + + b.Property("StartedOperatingDate") + .HasColumnType("date"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SubSector") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UnityApplicantId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantName"); + + b.ToTable("Applicants", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AddressType") + .HasColumnType("integer"); + + b.Property("ApplicantId") + .IsRequired() + .HasColumnType("uuid"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Postal") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("Street2") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Unit") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.ToTable("ApplicantAddresses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("BceidBusinessGuid") + .HasColumnType("uuid"); + + b.Property("BceidBusinessName") + .HasColumnType("text"); + + b.Property("BceidUserGuid") + .HasColumnType("uuid"); + + b.Property("BceidUserName") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactOrder") + .HasColumnType("integer"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IdentityEmail") + .HasColumnType("text"); + + b.Property("IdentityName") + .HasColumnType("text"); + + b.Property("IdentityProvider") + .HasColumnType("text"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsConfirmed") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSubUser") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Phone2") + .HasColumnType("text"); + + b.Property("Phone2Extension") + .HasColumnType("text"); + + b.Property("PhoneExtension") + .HasColumnType("text"); + + b.Property("RoleForApplicant") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationId") + .IsUnique(); + + b.HasIndex("OidcSubUser"); + + b.ToTable("ApplicantAgents", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Acquisition") + .HasColumnType("text"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationStatusId") + .HasColumnType("uuid"); + + b.Property("ApprovedAmount") + .HasColumnType("numeric"); + + b.Property("AssessmentResultDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AssessmentResultStatus") + .HasColumnType("text"); + + b.Property("AssessmentStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Community") + .HasColumnType("text"); + + b.Property("CommunityPopulation") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractExecutionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ContractNumber") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeclineRational") + .HasColumnType("text"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("DueDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DueDiligenceStatus") + .HasColumnType("text"); + + b.Property("EconomicRegion") + .HasColumnType("text"); + + b.Property("ElectoralDistrict") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinalDecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("Forestry") + .HasColumnType("text"); + + b.Property("ForestryFocus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LikelihoodOfFunding") + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("NotificationDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("Payload") + .HasColumnType("jsonb"); + + b.Property("PercentageTotalProjectBudget") + .HasColumnType("double precision"); + + b.Property("Place") + .HasColumnType("text"); + + b.Property("ProjectEndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectFundingTotal") + .HasColumnType("numeric"); + + b.Property("ProjectName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("ProjectStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectSummary") + .HasColumnType("text"); + + b.Property("ProposalDate") + .HasColumnType("timestamp without time zone"); + + b.Property("RecommendedAmount") + .HasColumnType("numeric"); + + b.Property("ReferenceNo") + .IsRequired() + .HasColumnType("text"); + + b.Property("RegionalDistrict") + .HasColumnType("text"); + + b.Property("RequestedAmount") + .HasColumnType("numeric"); + + b.Property("RiskRanking") + .HasColumnType("text"); + + b.Property("SigningAuthorityBusinessPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityCellPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityEmail") + .HasColumnType("text"); + + b.Property("SigningAuthorityFullName") + .HasColumnType("text"); + + b.Property("SigningAuthorityTitle") + .HasColumnType("text"); + + b.Property("SubStatus") + .HasColumnType("text"); + + b.Property("SubmissionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TotalProjectBudget") + .HasColumnType("numeric"); + + b.Property("TotalScore") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.HasIndex("ApplicationStatusId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Applications", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssigneeId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Duty") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssigneeId"); + + b.ToTable("ApplicationAssignments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsFileId") + .HasColumnType("text"); + + b.Property("ChefsSumbissionId") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationChefsFileAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactEmail") + .HasColumnType("text"); + + b.Property("ContactFullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactMobilePhone") + .HasColumnType("text"); + + b.Property("ContactTitle") + .HasColumnType("text"); + + b.Property("ContactType") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactWorkPhone") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationContact", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApiKey") + .HasColumnType("text"); + + b.Property("ApplicationFormDescription") + .HasColumnType("text"); + + b.Property("ApplicationFormName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("AttemptedConnectionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("Category") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsCriteriaFormGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConnectionHttpStatus") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeId") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Payable") + .HasColumnType("boolean"); + + b.Property("RenderFormIoToHtml") + .HasColumnType("boolean"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("IntakeId"); + + b.ToTable("ApplicationForms", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsSubmissionGuid") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FormVersionId") + .HasColumnType("uuid"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("RenderedHTML") + .HasColumnType("text"); + + b.Property("Submission") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormSubmissions", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsFormVersionGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("SubmissionHeaderMapping") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormVersion", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LinkedApplicationId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationLinks", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StatusCode") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("StatusCode") + .IsUnique(); + + b.ToTable("ApplicationStatuses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationTags", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.ToTable("AssessmentAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ApprovalRecommended") + .HasColumnType("boolean"); + + b.Property("AssessorId") + .HasColumnType("uuid"); + + b.Property("CleanGrowth") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("EconomicImpact") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinancialAnalysis") + .HasColumnType("integer"); + + b.Property("InclusiveGrowth") + .HasColumnType("integer"); + + b.Property("IsComplete") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssessorId"); + + b.ToTable("Assessments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("CommenterId"); + + b.ToTable("ApplicationComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.HasIndex("CommenterId"); + + b.ToTable("AssessmentComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Identity.Person", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Badge") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcDisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("OidcSub"); + + b.ToTable("Persons", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Intakes.Intake", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Budget") + .HasColumnType("double precision"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Intakes", (string)null); + }); + + modelBuilder.Entity("Unity.Notifications.Emails.EmailLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("BodyType") + .IsRequired() + .HasColumnType("text"); + + b.Property("CC") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesMsgId") + .HasColumnType("uuid"); + + b.Property("ChesResponse") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FromAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Priority") + .IsRequired() + .HasColumnType("text"); + + b.Property("RetryAttempts") + .HasColumnType("integer"); + + b.Property("SendOnDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SentDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tag") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("ToAddress") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EmailLogs", "Notifications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentConfigurations.PaymentConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MinistryClient") + .HasColumnType("text"); + + b.Property("PaymentIdPrefix") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentThreshold") + .HasColumnType("numeric"); + + b.Property("ProjectNumber") + .HasColumnType("text"); + + b.Property("Responsibility") + .HasColumnType("text"); + + b.Property("ServiceLine") + .HasColumnType("text"); + + b.Property("Stob") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("PaymentConfigurations", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PaymentRequestId"); + + b.ToTable("ExpenseApprovals", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("numeric"); + + b.Property("CasHttpStatusCode") + .HasColumnType("integer"); + + b.Property("CasResponse") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InvoiceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("InvoiceStatus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRecon") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PayeeName") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("text"); + + b.Property("PaymentNumber") + .HasColumnType("text"); + + b.Property("PaymentStatus") + .HasColumnType("text"); + + b.Property("ReferenceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("RequesterName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SiteId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("SupplierNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ReferenceNumber") + .IsUnique(); + + b.HasIndex("SiteId"); + + b.ToTable("PaymentRequests", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddressLine1") + .HasColumnType("text"); + + b.Property("AddressLine2") + .HasColumnType("text"); + + b.Property("AddressLine3") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EFTAdvicePref") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCas") + .HasColumnType("timestamp without time zone"); + + b.Property("Number") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentGroup") + .HasColumnType("integer"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SiteProtected") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("SupplierId"); + + b.ToTable("Sites", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCAS") + .HasColumnType("timestamp without time zone"); + + b.Property("MailingAddress") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SIN") + .HasColumnType("text"); + + b.Property("StandardIndustryClassification") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("Subcategory") + .HasColumnType("text"); + + b.Property("SupplierProtected") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Suppliers", "Payments"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Instances") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Question", "Question") + .WithMany("Answers") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", null) + .WithMany("Answers") + .HasForeignKey("ScoresheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.ScoresheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Sections") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.HasOne("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", null) + .WithMany("Values") + .HasForeignKey("WorksheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Links") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.WorksheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Sections") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany("ApplicantAddresses") + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Applicant"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithOne("ApplicantAgent") + .HasForeignKey("Unity.GrantManager.Applications.ApplicantAgent", "ApplicationId"); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("OidcSubUser") + .HasPrincipalKey("OidcSub"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", "ApplicationForm") + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationStatus", "ApplicationStatus") + .WithMany("Applications") + .HasForeignKey("ApplicationStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.NoAction); + + b.Navigation("Applicant"); + + b.Navigation("ApplicationForm"); + + b.Navigation("ApplicationStatus"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationAssignments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Assignee") + .WithMany() + .HasForeignKey("AssigneeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Application"); + + b.Navigation("Assignee"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.HasOne("Unity.GrantManager.Intakes.Intake", null) + .WithMany() + .HasForeignKey("IntakeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationTags") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("Assessments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("AssessorId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.HasOne("Unity.Payments.Domain.PaymentRequests.PaymentRequest", "PaymentRequest") + .WithMany("ExpenseApprovals") + .HasForeignKey("PaymentRequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentRequest"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Site", "Site") + .WithMany() + .HasForeignKey("SiteId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Site"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Supplier", "Supplier") + .WithMany("Sites") + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Navigation("Values"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Navigation("Links"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Navigation("ApplicantAddresses"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Navigation("ApplicantAgent"); + + b.Navigation("ApplicationAssignments"); + + b.Navigation("ApplicationTags"); + + b.Navigation("Assessments"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Navigation("ExpenseApprovals"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Navigation("Sites"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212211237_AddReportColumns.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212211237_AddReportColumns.cs new file mode 100644 index 000000000..262ec4ee1 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212211237_AddReportColumns.cs @@ -0,0 +1,40 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + /// + public partial class AddReportColumns : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "ReportColumns", + table: "ApplicationFormVersion", + type: "text", + nullable: false, + defaultValue: ""); + + migrationBuilder.AddColumn( + name: "ReportKeys", + table: "ApplicationFormVersion", + type: "text", + nullable: false, + defaultValue: ""); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ReportColumns", + table: "ApplicationFormVersion"); + + migrationBuilder.DropColumn( + name: "ReportKeys", + table: "ApplicationFormVersion"); + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212214831_AddReportViewName.Designer.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212214831_AddReportViewName.Designer.cs new file mode 100644 index 000000000..0ecff8584 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212214831_AddReportViewName.Designer.cs @@ -0,0 +1,3308 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Unity.GrantManager.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + [DbContext(typeof(GrantTenantDbContext))] + [Migration("20241212214831_AddReporViewName")] + partial class AddReporViewName + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("ScoresheetInstanceId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("QuestionId"); + + b.HasIndex("ScoresheetInstanceId"); + + b.ToTable("Answers", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("Questions", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Scoresheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("CustomFieldId") + .HasColumnType("uuid"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetInstanceId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetInstanceId"); + + b.ToTable("CustomFieldValues", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetCorrelationId") + .HasColumnType("uuid"); + + b.Property("WorksheetCorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("WorksheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetLinks", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("CustomFields", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Worksheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantName") + .IsRequired() + .HasMaxLength(600) + .HasColumnType("character varying(600)"); + + b.Property("ApproxNumberOfEmployees") + .HasColumnType("text"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FiscalDay") + .HasColumnType("integer"); + + b.Property("FiscalMonth") + .HasColumnType("text"); + + b.Property("IndigenousOrgInd") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MatchPercentage") + .HasColumnType("numeric"); + + b.Property("NonRegisteredBusinessName") + .HasColumnType("text"); + + b.Property("OrgName") + .HasColumnType("text"); + + b.Property("OrgNumber") + .HasColumnType("text"); + + b.Property("OrgStatus") + .HasColumnType("text"); + + b.Property("OrganizationSize") + .HasColumnType("text"); + + b.Property("OrganizationType") + .HasColumnType("text"); + + b.Property("RedStop") + .HasColumnType("boolean"); + + b.Property("Sector") + .HasColumnType("text"); + + b.Property("SectorSubSectorIndustryDesc") + .HasColumnType("text"); + + b.Property("StartedOperatingDate") + .HasColumnType("date"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SubSector") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UnityApplicantId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantName"); + + b.ToTable("Applicants", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AddressType") + .HasColumnType("integer"); + + b.Property("ApplicantId") + .IsRequired() + .HasColumnType("uuid"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Postal") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("Street2") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Unit") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.ToTable("ApplicantAddresses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("BceidBusinessGuid") + .HasColumnType("uuid"); + + b.Property("BceidBusinessName") + .HasColumnType("text"); + + b.Property("BceidUserGuid") + .HasColumnType("uuid"); + + b.Property("BceidUserName") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactOrder") + .HasColumnType("integer"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IdentityEmail") + .HasColumnType("text"); + + b.Property("IdentityName") + .HasColumnType("text"); + + b.Property("IdentityProvider") + .HasColumnType("text"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsConfirmed") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSubUser") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Phone2") + .HasColumnType("text"); + + b.Property("Phone2Extension") + .HasColumnType("text"); + + b.Property("PhoneExtension") + .HasColumnType("text"); + + b.Property("RoleForApplicant") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationId") + .IsUnique(); + + b.HasIndex("OidcSubUser"); + + b.ToTable("ApplicantAgents", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Acquisition") + .HasColumnType("text"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationStatusId") + .HasColumnType("uuid"); + + b.Property("ApprovedAmount") + .HasColumnType("numeric"); + + b.Property("AssessmentResultDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AssessmentResultStatus") + .HasColumnType("text"); + + b.Property("AssessmentStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Community") + .HasColumnType("text"); + + b.Property("CommunityPopulation") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractExecutionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ContractNumber") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeclineRational") + .HasColumnType("text"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("DueDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DueDiligenceStatus") + .HasColumnType("text"); + + b.Property("EconomicRegion") + .HasColumnType("text"); + + b.Property("ElectoralDistrict") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinalDecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("Forestry") + .HasColumnType("text"); + + b.Property("ForestryFocus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LikelihoodOfFunding") + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("NotificationDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("Payload") + .HasColumnType("jsonb"); + + b.Property("PercentageTotalProjectBudget") + .HasColumnType("double precision"); + + b.Property("Place") + .HasColumnType("text"); + + b.Property("ProjectEndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectFundingTotal") + .HasColumnType("numeric"); + + b.Property("ProjectName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("ProjectStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectSummary") + .HasColumnType("text"); + + b.Property("ProposalDate") + .HasColumnType("timestamp without time zone"); + + b.Property("RecommendedAmount") + .HasColumnType("numeric"); + + b.Property("ReferenceNo") + .IsRequired() + .HasColumnType("text"); + + b.Property("RegionalDistrict") + .HasColumnType("text"); + + b.Property("RequestedAmount") + .HasColumnType("numeric"); + + b.Property("RiskRanking") + .HasColumnType("text"); + + b.Property("SigningAuthorityBusinessPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityCellPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityEmail") + .HasColumnType("text"); + + b.Property("SigningAuthorityFullName") + .HasColumnType("text"); + + b.Property("SigningAuthorityTitle") + .HasColumnType("text"); + + b.Property("SubStatus") + .HasColumnType("text"); + + b.Property("SubmissionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TotalProjectBudget") + .HasColumnType("numeric"); + + b.Property("TotalScore") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.HasIndex("ApplicationStatusId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Applications", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssigneeId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Duty") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssigneeId"); + + b.ToTable("ApplicationAssignments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsFileId") + .HasColumnType("text"); + + b.Property("ChefsSumbissionId") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationChefsFileAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactEmail") + .HasColumnType("text"); + + b.Property("ContactFullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactMobilePhone") + .HasColumnType("text"); + + b.Property("ContactTitle") + .HasColumnType("text"); + + b.Property("ContactType") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactWorkPhone") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationContact", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApiKey") + .HasColumnType("text"); + + b.Property("ApplicationFormDescription") + .HasColumnType("text"); + + b.Property("ApplicationFormName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("AttemptedConnectionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("Category") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsCriteriaFormGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConnectionHttpStatus") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeId") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Payable") + .HasColumnType("boolean"); + + b.Property("RenderFormIoToHtml") + .HasColumnType("boolean"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("IntakeId"); + + b.ToTable("ApplicationForms", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsSubmissionGuid") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FormVersionId") + .HasColumnType("uuid"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("RenderedHTML") + .HasColumnType("text"); + + b.Property("Submission") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormSubmissions", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsFormVersionGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SubmissionHeaderMapping") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormVersion", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LinkedApplicationId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationLinks", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StatusCode") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("StatusCode") + .IsUnique(); + + b.ToTable("ApplicationStatuses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationTags", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.ToTable("AssessmentAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ApprovalRecommended") + .HasColumnType("boolean"); + + b.Property("AssessorId") + .HasColumnType("uuid"); + + b.Property("CleanGrowth") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("EconomicImpact") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinancialAnalysis") + .HasColumnType("integer"); + + b.Property("InclusiveGrowth") + .HasColumnType("integer"); + + b.Property("IsComplete") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssessorId"); + + b.ToTable("Assessments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("CommenterId"); + + b.ToTable("ApplicationComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.HasIndex("CommenterId"); + + b.ToTable("AssessmentComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Identity.Person", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Badge") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcDisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("OidcSub"); + + b.ToTable("Persons", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Intakes.Intake", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Budget") + .HasColumnType("double precision"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Intakes", (string)null); + }); + + modelBuilder.Entity("Unity.Notifications.Emails.EmailLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("BodyType") + .IsRequired() + .HasColumnType("text"); + + b.Property("CC") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesMsgId") + .HasColumnType("uuid"); + + b.Property("ChesResponse") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FromAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Priority") + .IsRequired() + .HasColumnType("text"); + + b.Property("RetryAttempts") + .HasColumnType("integer"); + + b.Property("SendOnDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SentDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tag") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("ToAddress") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EmailLogs", "Notifications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentConfigurations.PaymentConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MinistryClient") + .HasColumnType("text"); + + b.Property("PaymentIdPrefix") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentThreshold") + .HasColumnType("numeric"); + + b.Property("ProjectNumber") + .HasColumnType("text"); + + b.Property("Responsibility") + .HasColumnType("text"); + + b.Property("ServiceLine") + .HasColumnType("text"); + + b.Property("Stob") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("PaymentConfigurations", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PaymentRequestId"); + + b.ToTable("ExpenseApprovals", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("numeric"); + + b.Property("CasHttpStatusCode") + .HasColumnType("integer"); + + b.Property("CasResponse") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InvoiceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("InvoiceStatus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRecon") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PayeeName") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("text"); + + b.Property("PaymentNumber") + .HasColumnType("text"); + + b.Property("PaymentStatus") + .HasColumnType("text"); + + b.Property("ReferenceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("RequesterName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SiteId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("SupplierNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ReferenceNumber") + .IsUnique(); + + b.HasIndex("SiteId"); + + b.ToTable("PaymentRequests", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddressLine1") + .HasColumnType("text"); + + b.Property("AddressLine2") + .HasColumnType("text"); + + b.Property("AddressLine3") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EFTAdvicePref") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCas") + .HasColumnType("timestamp without time zone"); + + b.Property("Number") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentGroup") + .HasColumnType("integer"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SiteProtected") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("SupplierId"); + + b.ToTable("Sites", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCAS") + .HasColumnType("timestamp without time zone"); + + b.Property("MailingAddress") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SIN") + .HasColumnType("text"); + + b.Property("StandardIndustryClassification") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("Subcategory") + .HasColumnType("text"); + + b.Property("SupplierProtected") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Suppliers", "Payments"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Instances") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Question", "Question") + .WithMany("Answers") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", null) + .WithMany("Answers") + .HasForeignKey("ScoresheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.ScoresheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Sections") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.HasOne("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", null) + .WithMany("Values") + .HasForeignKey("WorksheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Links") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.WorksheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Sections") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany("ApplicantAddresses") + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Applicant"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithOne("ApplicantAgent") + .HasForeignKey("Unity.GrantManager.Applications.ApplicantAgent", "ApplicationId"); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("OidcSubUser") + .HasPrincipalKey("OidcSub"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", "ApplicationForm") + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationStatus", "ApplicationStatus") + .WithMany("Applications") + .HasForeignKey("ApplicationStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.NoAction); + + b.Navigation("Applicant"); + + b.Navigation("ApplicationForm"); + + b.Navigation("ApplicationStatus"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationAssignments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Assignee") + .WithMany() + .HasForeignKey("AssigneeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Application"); + + b.Navigation("Assignee"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.HasOne("Unity.GrantManager.Intakes.Intake", null) + .WithMany() + .HasForeignKey("IntakeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationTags") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("Assessments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("AssessorId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.HasOne("Unity.Payments.Domain.PaymentRequests.PaymentRequest", "PaymentRequest") + .WithMany("ExpenseApprovals") + .HasForeignKey("PaymentRequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentRequest"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Site", "Site") + .WithMany() + .HasForeignKey("SiteId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Site"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Supplier", "Supplier") + .WithMany("Sites") + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Navigation("Values"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Navigation("Links"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Navigation("ApplicantAddresses"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Navigation("ApplicantAgent"); + + b.Navigation("ApplicationAssignments"); + + b.Navigation("ApplicationTags"); + + b.Navigation("Assessments"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Navigation("ExpenseApprovals"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Navigation("Sites"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212214831_AddReportViewName.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212214831_AddReportViewName.cs new file mode 100644 index 000000000..456c81d4f --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212214831_AddReportViewName.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + /// + public partial class AddReporViewName : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "ReportViewName", + table: "ApplicationFormVersion", + type: "text", + nullable: false, + defaultValue: ""); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ReportViewName", + table: "ApplicationFormVersion"); + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212234607_AddReportDataColumn.Designer.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212234607_AddReportDataColumn.Designer.cs new file mode 100644 index 000000000..70141d146 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212234607_AddReportDataColumn.Designer.cs @@ -0,0 +1,3312 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Unity.GrantManager.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + [DbContext(typeof(GrantTenantDbContext))] + [Migration("20241212234607_AddReportDataColumn")] + partial class AddReportDataColumn + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("ScoresheetInstanceId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("QuestionId"); + + b.HasIndex("ScoresheetInstanceId"); + + b.ToTable("Answers", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("Questions", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Scoresheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("CustomFieldId") + .HasColumnType("uuid"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetInstanceId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetInstanceId"); + + b.ToTable("CustomFieldValues", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetCorrelationId") + .HasColumnType("uuid"); + + b.Property("WorksheetCorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("WorksheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetLinks", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("CustomFields", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Worksheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantName") + .IsRequired() + .HasMaxLength(600) + .HasColumnType("character varying(600)"); + + b.Property("ApproxNumberOfEmployees") + .HasColumnType("text"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FiscalDay") + .HasColumnType("integer"); + + b.Property("FiscalMonth") + .HasColumnType("text"); + + b.Property("IndigenousOrgInd") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MatchPercentage") + .HasColumnType("numeric"); + + b.Property("NonRegisteredBusinessName") + .HasColumnType("text"); + + b.Property("OrgName") + .HasColumnType("text"); + + b.Property("OrgNumber") + .HasColumnType("text"); + + b.Property("OrgStatus") + .HasColumnType("text"); + + b.Property("OrganizationSize") + .HasColumnType("text"); + + b.Property("OrganizationType") + .HasColumnType("text"); + + b.Property("RedStop") + .HasColumnType("boolean"); + + b.Property("Sector") + .HasColumnType("text"); + + b.Property("SectorSubSectorIndustryDesc") + .HasColumnType("text"); + + b.Property("StartedOperatingDate") + .HasColumnType("date"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SubSector") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UnityApplicantId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantName"); + + b.ToTable("Applicants", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AddressType") + .HasColumnType("integer"); + + b.Property("ApplicantId") + .IsRequired() + .HasColumnType("uuid"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Postal") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("Street2") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Unit") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.ToTable("ApplicantAddresses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("BceidBusinessGuid") + .HasColumnType("uuid"); + + b.Property("BceidBusinessName") + .HasColumnType("text"); + + b.Property("BceidUserGuid") + .HasColumnType("uuid"); + + b.Property("BceidUserName") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactOrder") + .HasColumnType("integer"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IdentityEmail") + .HasColumnType("text"); + + b.Property("IdentityName") + .HasColumnType("text"); + + b.Property("IdentityProvider") + .HasColumnType("text"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsConfirmed") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSubUser") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Phone2") + .HasColumnType("text"); + + b.Property("Phone2Extension") + .HasColumnType("text"); + + b.Property("PhoneExtension") + .HasColumnType("text"); + + b.Property("RoleForApplicant") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationId") + .IsUnique(); + + b.HasIndex("OidcSubUser"); + + b.ToTable("ApplicantAgents", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Acquisition") + .HasColumnType("text"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationStatusId") + .HasColumnType("uuid"); + + b.Property("ApprovedAmount") + .HasColumnType("numeric"); + + b.Property("AssessmentResultDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AssessmentResultStatus") + .HasColumnType("text"); + + b.Property("AssessmentStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Community") + .HasColumnType("text"); + + b.Property("CommunityPopulation") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractExecutionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ContractNumber") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeclineRational") + .HasColumnType("text"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("DueDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DueDiligenceStatus") + .HasColumnType("text"); + + b.Property("EconomicRegion") + .HasColumnType("text"); + + b.Property("ElectoralDistrict") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinalDecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("Forestry") + .HasColumnType("text"); + + b.Property("ForestryFocus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LikelihoodOfFunding") + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("NotificationDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("Payload") + .HasColumnType("jsonb"); + + b.Property("PercentageTotalProjectBudget") + .HasColumnType("double precision"); + + b.Property("Place") + .HasColumnType("text"); + + b.Property("ProjectEndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectFundingTotal") + .HasColumnType("numeric"); + + b.Property("ProjectName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("ProjectStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectSummary") + .HasColumnType("text"); + + b.Property("ProposalDate") + .HasColumnType("timestamp without time zone"); + + b.Property("RecommendedAmount") + .HasColumnType("numeric"); + + b.Property("ReferenceNo") + .IsRequired() + .HasColumnType("text"); + + b.Property("RegionalDistrict") + .HasColumnType("text"); + + b.Property("RequestedAmount") + .HasColumnType("numeric"); + + b.Property("RiskRanking") + .HasColumnType("text"); + + b.Property("SigningAuthorityBusinessPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityCellPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityEmail") + .HasColumnType("text"); + + b.Property("SigningAuthorityFullName") + .HasColumnType("text"); + + b.Property("SigningAuthorityTitle") + .HasColumnType("text"); + + b.Property("SubStatus") + .HasColumnType("text"); + + b.Property("SubmissionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TotalProjectBudget") + .HasColumnType("numeric"); + + b.Property("TotalScore") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.HasIndex("ApplicationStatusId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Applications", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssigneeId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Duty") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssigneeId"); + + b.ToTable("ApplicationAssignments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsFileId") + .HasColumnType("text"); + + b.Property("ChefsSumbissionId") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationChefsFileAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactEmail") + .HasColumnType("text"); + + b.Property("ContactFullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactMobilePhone") + .HasColumnType("text"); + + b.Property("ContactTitle") + .HasColumnType("text"); + + b.Property("ContactType") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactWorkPhone") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationContact", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApiKey") + .HasColumnType("text"); + + b.Property("ApplicationFormDescription") + .HasColumnType("text"); + + b.Property("ApplicationFormName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("AttemptedConnectionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("Category") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsCriteriaFormGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConnectionHttpStatus") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeId") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Payable") + .HasColumnType("boolean"); + + b.Property("RenderFormIoToHtml") + .HasColumnType("boolean"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("IntakeId"); + + b.ToTable("ApplicationForms", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsSubmissionGuid") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FormVersionId") + .HasColumnType("uuid"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("RenderedHTML") + .HasColumnType("text"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Submission") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormSubmissions", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsFormVersionGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SubmissionHeaderMapping") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormVersion", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LinkedApplicationId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationLinks", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StatusCode") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("StatusCode") + .IsUnique(); + + b.ToTable("ApplicationStatuses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationTags", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.ToTable("AssessmentAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ApprovalRecommended") + .HasColumnType("boolean"); + + b.Property("AssessorId") + .HasColumnType("uuid"); + + b.Property("CleanGrowth") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("EconomicImpact") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinancialAnalysis") + .HasColumnType("integer"); + + b.Property("InclusiveGrowth") + .HasColumnType("integer"); + + b.Property("IsComplete") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssessorId"); + + b.ToTable("Assessments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("CommenterId"); + + b.ToTable("ApplicationComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.HasIndex("CommenterId"); + + b.ToTable("AssessmentComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Identity.Person", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Badge") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcDisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("OidcSub"); + + b.ToTable("Persons", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Intakes.Intake", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Budget") + .HasColumnType("double precision"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Intakes", (string)null); + }); + + modelBuilder.Entity("Unity.Notifications.Emails.EmailLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("BodyType") + .IsRequired() + .HasColumnType("text"); + + b.Property("CC") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesMsgId") + .HasColumnType("uuid"); + + b.Property("ChesResponse") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FromAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Priority") + .IsRequired() + .HasColumnType("text"); + + b.Property("RetryAttempts") + .HasColumnType("integer"); + + b.Property("SendOnDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SentDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tag") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("ToAddress") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EmailLogs", "Notifications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentConfigurations.PaymentConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MinistryClient") + .HasColumnType("text"); + + b.Property("PaymentIdPrefix") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentThreshold") + .HasColumnType("numeric"); + + b.Property("ProjectNumber") + .HasColumnType("text"); + + b.Property("Responsibility") + .HasColumnType("text"); + + b.Property("ServiceLine") + .HasColumnType("text"); + + b.Property("Stob") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("PaymentConfigurations", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PaymentRequestId"); + + b.ToTable("ExpenseApprovals", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("numeric"); + + b.Property("CasHttpStatusCode") + .HasColumnType("integer"); + + b.Property("CasResponse") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InvoiceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("InvoiceStatus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRecon") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PayeeName") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("text"); + + b.Property("PaymentNumber") + .HasColumnType("text"); + + b.Property("PaymentStatus") + .HasColumnType("text"); + + b.Property("ReferenceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("RequesterName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SiteId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("SupplierNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ReferenceNumber") + .IsUnique(); + + b.HasIndex("SiteId"); + + b.ToTable("PaymentRequests", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddressLine1") + .HasColumnType("text"); + + b.Property("AddressLine2") + .HasColumnType("text"); + + b.Property("AddressLine3") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EFTAdvicePref") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCas") + .HasColumnType("timestamp without time zone"); + + b.Property("Number") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentGroup") + .HasColumnType("integer"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SiteProtected") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("SupplierId"); + + b.ToTable("Sites", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCAS") + .HasColumnType("timestamp without time zone"); + + b.Property("MailingAddress") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SIN") + .HasColumnType("text"); + + b.Property("StandardIndustryClassification") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("Subcategory") + .HasColumnType("text"); + + b.Property("SupplierProtected") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Suppliers", "Payments"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Instances") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Question", "Question") + .WithMany("Answers") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", null) + .WithMany("Answers") + .HasForeignKey("ScoresheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.ScoresheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Sections") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.HasOne("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", null) + .WithMany("Values") + .HasForeignKey("WorksheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Links") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.WorksheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Sections") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany("ApplicantAddresses") + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Applicant"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithOne("ApplicantAgent") + .HasForeignKey("Unity.GrantManager.Applications.ApplicantAgent", "ApplicationId"); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("OidcSubUser") + .HasPrincipalKey("OidcSub"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", "ApplicationForm") + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationStatus", "ApplicationStatus") + .WithMany("Applications") + .HasForeignKey("ApplicationStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.NoAction); + + b.Navigation("Applicant"); + + b.Navigation("ApplicationForm"); + + b.Navigation("ApplicationStatus"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationAssignments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Assignee") + .WithMany() + .HasForeignKey("AssigneeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Application"); + + b.Navigation("Assignee"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.HasOne("Unity.GrantManager.Intakes.Intake", null) + .WithMany() + .HasForeignKey("IntakeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationTags") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("Assessments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("AssessorId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.HasOne("Unity.Payments.Domain.PaymentRequests.PaymentRequest", "PaymentRequest") + .WithMany("ExpenseApprovals") + .HasForeignKey("PaymentRequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentRequest"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Site", "Site") + .WithMany() + .HasForeignKey("SiteId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Site"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Supplier", "Supplier") + .WithMany("Sites") + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Navigation("Values"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Navigation("Links"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Navigation("ApplicantAddresses"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Navigation("ApplicantAgent"); + + b.Navigation("ApplicationAssignments"); + + b.Navigation("ApplicationTags"); + + b.Navigation("Assessments"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Navigation("ExpenseApprovals"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Navigation("Sites"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212234607_AddReportDataColumn.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212234607_AddReportDataColumn.cs new file mode 100644 index 000000000..22365f536 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241212234607_AddReportDataColumn.cs @@ -0,0 +1,29 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + /// + public partial class AddReportDataColumn : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "ReportData", + table: "ApplicationFormSubmissions", + type: "jsonb", + nullable: false, + defaultValue: ""); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ReportData", + table: "ApplicationFormSubmissions"); + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213045919_AddApplicationFormVersionId.Designer.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213045919_AddApplicationFormVersionId.Designer.cs new file mode 100644 index 000000000..cd3f3831b --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213045919_AddApplicationFormVersionId.Designer.cs @@ -0,0 +1,3315 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Unity.GrantManager.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + [DbContext(typeof(GrantTenantDbContext))] + [Migration("20241213045919_AddApplicationFormVersionId")] + partial class AddApplicationFormVersionId + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("ScoresheetInstanceId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("QuestionId"); + + b.HasIndex("ScoresheetInstanceId"); + + b.ToTable("Answers", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("Questions", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Scoresheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("CustomFieldId") + .HasColumnType("uuid"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetInstanceId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetInstanceId"); + + b.ToTable("CustomFieldValues", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetCorrelationId") + .HasColumnType("uuid"); + + b.Property("WorksheetCorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("WorksheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetLinks", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("CustomFields", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Worksheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantName") + .IsRequired() + .HasMaxLength(600) + .HasColumnType("character varying(600)"); + + b.Property("ApproxNumberOfEmployees") + .HasColumnType("text"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FiscalDay") + .HasColumnType("integer"); + + b.Property("FiscalMonth") + .HasColumnType("text"); + + b.Property("IndigenousOrgInd") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MatchPercentage") + .HasColumnType("numeric"); + + b.Property("NonRegisteredBusinessName") + .HasColumnType("text"); + + b.Property("OrgName") + .HasColumnType("text"); + + b.Property("OrgNumber") + .HasColumnType("text"); + + b.Property("OrgStatus") + .HasColumnType("text"); + + b.Property("OrganizationSize") + .HasColumnType("text"); + + b.Property("OrganizationType") + .HasColumnType("text"); + + b.Property("RedStop") + .HasColumnType("boolean"); + + b.Property("Sector") + .HasColumnType("text"); + + b.Property("SectorSubSectorIndustryDesc") + .HasColumnType("text"); + + b.Property("StartedOperatingDate") + .HasColumnType("date"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SubSector") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UnityApplicantId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantName"); + + b.ToTable("Applicants", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AddressType") + .HasColumnType("integer"); + + b.Property("ApplicantId") + .IsRequired() + .HasColumnType("uuid"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Postal") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("Street2") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Unit") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.ToTable("ApplicantAddresses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("BceidBusinessGuid") + .HasColumnType("uuid"); + + b.Property("BceidBusinessName") + .HasColumnType("text"); + + b.Property("BceidUserGuid") + .HasColumnType("uuid"); + + b.Property("BceidUserName") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactOrder") + .HasColumnType("integer"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IdentityEmail") + .HasColumnType("text"); + + b.Property("IdentityName") + .HasColumnType("text"); + + b.Property("IdentityProvider") + .HasColumnType("text"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsConfirmed") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSubUser") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Phone2") + .HasColumnType("text"); + + b.Property("Phone2Extension") + .HasColumnType("text"); + + b.Property("PhoneExtension") + .HasColumnType("text"); + + b.Property("RoleForApplicant") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationId") + .IsUnique(); + + b.HasIndex("OidcSubUser"); + + b.ToTable("ApplicantAgents", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Acquisition") + .HasColumnType("text"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationStatusId") + .HasColumnType("uuid"); + + b.Property("ApprovedAmount") + .HasColumnType("numeric"); + + b.Property("AssessmentResultDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AssessmentResultStatus") + .HasColumnType("text"); + + b.Property("AssessmentStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Community") + .HasColumnType("text"); + + b.Property("CommunityPopulation") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractExecutionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ContractNumber") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeclineRational") + .HasColumnType("text"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("DueDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DueDiligenceStatus") + .HasColumnType("text"); + + b.Property("EconomicRegion") + .HasColumnType("text"); + + b.Property("ElectoralDistrict") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinalDecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("Forestry") + .HasColumnType("text"); + + b.Property("ForestryFocus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LikelihoodOfFunding") + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("NotificationDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("Payload") + .HasColumnType("jsonb"); + + b.Property("PercentageTotalProjectBudget") + .HasColumnType("double precision"); + + b.Property("Place") + .HasColumnType("text"); + + b.Property("ProjectEndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectFundingTotal") + .HasColumnType("numeric"); + + b.Property("ProjectName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("ProjectStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectSummary") + .HasColumnType("text"); + + b.Property("ProposalDate") + .HasColumnType("timestamp without time zone"); + + b.Property("RecommendedAmount") + .HasColumnType("numeric"); + + b.Property("ReferenceNo") + .IsRequired() + .HasColumnType("text"); + + b.Property("RegionalDistrict") + .HasColumnType("text"); + + b.Property("RequestedAmount") + .HasColumnType("numeric"); + + b.Property("RiskRanking") + .HasColumnType("text"); + + b.Property("SigningAuthorityBusinessPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityCellPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityEmail") + .HasColumnType("text"); + + b.Property("SigningAuthorityFullName") + .HasColumnType("text"); + + b.Property("SigningAuthorityTitle") + .HasColumnType("text"); + + b.Property("SubStatus") + .HasColumnType("text"); + + b.Property("SubmissionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TotalProjectBudget") + .HasColumnType("numeric"); + + b.Property("TotalScore") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.HasIndex("ApplicationStatusId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Applications", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssigneeId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Duty") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssigneeId"); + + b.ToTable("ApplicationAssignments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsFileId") + .HasColumnType("text"); + + b.Property("ChefsSumbissionId") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationChefsFileAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactEmail") + .HasColumnType("text"); + + b.Property("ContactFullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactMobilePhone") + .HasColumnType("text"); + + b.Property("ContactTitle") + .HasColumnType("text"); + + b.Property("ContactType") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactWorkPhone") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationContact", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApiKey") + .HasColumnType("text"); + + b.Property("ApplicationFormDescription") + .HasColumnType("text"); + + b.Property("ApplicationFormName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("AttemptedConnectionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("Category") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsCriteriaFormGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConnectionHttpStatus") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeId") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Payable") + .HasColumnType("boolean"); + + b.Property("RenderFormIoToHtml") + .HasColumnType("boolean"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("IntakeId"); + + b.ToTable("ApplicationForms", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormVersionId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsSubmissionGuid") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FormVersionId") + .HasColumnType("uuid"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("RenderedHTML") + .HasColumnType("text"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Submission") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormSubmissions", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsFormVersionGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SubmissionHeaderMapping") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormVersion", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LinkedApplicationId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationLinks", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StatusCode") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("StatusCode") + .IsUnique(); + + b.ToTable("ApplicationStatuses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationTags", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.ToTable("AssessmentAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ApprovalRecommended") + .HasColumnType("boolean"); + + b.Property("AssessorId") + .HasColumnType("uuid"); + + b.Property("CleanGrowth") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("EconomicImpact") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinancialAnalysis") + .HasColumnType("integer"); + + b.Property("InclusiveGrowth") + .HasColumnType("integer"); + + b.Property("IsComplete") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssessorId"); + + b.ToTable("Assessments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("CommenterId"); + + b.ToTable("ApplicationComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.HasIndex("CommenterId"); + + b.ToTable("AssessmentComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Identity.Person", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Badge") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcDisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("OidcSub"); + + b.ToTable("Persons", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Intakes.Intake", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Budget") + .HasColumnType("double precision"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Intakes", (string)null); + }); + + modelBuilder.Entity("Unity.Notifications.Emails.EmailLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("BodyType") + .IsRequired() + .HasColumnType("text"); + + b.Property("CC") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesMsgId") + .HasColumnType("uuid"); + + b.Property("ChesResponse") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FromAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Priority") + .IsRequired() + .HasColumnType("text"); + + b.Property("RetryAttempts") + .HasColumnType("integer"); + + b.Property("SendOnDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SentDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tag") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("ToAddress") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EmailLogs", "Notifications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentConfigurations.PaymentConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MinistryClient") + .HasColumnType("text"); + + b.Property("PaymentIdPrefix") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentThreshold") + .HasColumnType("numeric"); + + b.Property("ProjectNumber") + .HasColumnType("text"); + + b.Property("Responsibility") + .HasColumnType("text"); + + b.Property("ServiceLine") + .HasColumnType("text"); + + b.Property("Stob") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("PaymentConfigurations", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PaymentRequestId"); + + b.ToTable("ExpenseApprovals", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("numeric"); + + b.Property("CasHttpStatusCode") + .HasColumnType("integer"); + + b.Property("CasResponse") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InvoiceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("InvoiceStatus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRecon") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PayeeName") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("text"); + + b.Property("PaymentNumber") + .HasColumnType("text"); + + b.Property("PaymentStatus") + .HasColumnType("text"); + + b.Property("ReferenceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("RequesterName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SiteId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("SupplierNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ReferenceNumber") + .IsUnique(); + + b.HasIndex("SiteId"); + + b.ToTable("PaymentRequests", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddressLine1") + .HasColumnType("text"); + + b.Property("AddressLine2") + .HasColumnType("text"); + + b.Property("AddressLine3") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EFTAdvicePref") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCas") + .HasColumnType("timestamp without time zone"); + + b.Property("Number") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentGroup") + .HasColumnType("integer"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SiteProtected") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("SupplierId"); + + b.ToTable("Sites", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCAS") + .HasColumnType("timestamp without time zone"); + + b.Property("MailingAddress") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SIN") + .HasColumnType("text"); + + b.Property("StandardIndustryClassification") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("Subcategory") + .HasColumnType("text"); + + b.Property("SupplierProtected") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Suppliers", "Payments"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Instances") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Question", "Question") + .WithMany("Answers") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", null) + .WithMany("Answers") + .HasForeignKey("ScoresheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.ScoresheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Sections") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.HasOne("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", null) + .WithMany("Values") + .HasForeignKey("WorksheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Links") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.WorksheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Sections") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany("ApplicantAddresses") + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Applicant"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithOne("ApplicantAgent") + .HasForeignKey("Unity.GrantManager.Applications.ApplicantAgent", "ApplicationId"); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("OidcSubUser") + .HasPrincipalKey("OidcSub"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", "ApplicationForm") + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationStatus", "ApplicationStatus") + .WithMany("Applications") + .HasForeignKey("ApplicationStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.NoAction); + + b.Navigation("Applicant"); + + b.Navigation("ApplicationForm"); + + b.Navigation("ApplicationStatus"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationAssignments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Assignee") + .WithMany() + .HasForeignKey("AssigneeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Application"); + + b.Navigation("Assignee"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.HasOne("Unity.GrantManager.Intakes.Intake", null) + .WithMany() + .HasForeignKey("IntakeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationTags") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("Assessments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("AssessorId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.HasOne("Unity.Payments.Domain.PaymentRequests.PaymentRequest", "PaymentRequest") + .WithMany("ExpenseApprovals") + .HasForeignKey("PaymentRequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentRequest"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Site", "Site") + .WithMany() + .HasForeignKey("SiteId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Site"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Supplier", "Supplier") + .WithMany("Sites") + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Navigation("Values"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Navigation("Links"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Navigation("ApplicantAddresses"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Navigation("ApplicantAgent"); + + b.Navigation("ApplicationAssignments"); + + b.Navigation("ApplicationTags"); + + b.Navigation("Assessments"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Navigation("ExpenseApprovals"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Navigation("Sites"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213045919_AddApplicationFormVersionId.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213045919_AddApplicationFormVersionId.cs new file mode 100644 index 000000000..a2781e6e4 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213045919_AddApplicationFormVersionId.cs @@ -0,0 +1,29 @@ +using System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + /// + public partial class AddApplicationFormVersionId : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "ApplicationFormVersionId", + table: "ApplicationFormSubmissions", + type: "uuid", + nullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ApplicationFormVersionId", + table: "ApplicationFormSubmissions"); + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213183520_AddDynamicViewGenerator.Designer.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213183520_AddDynamicViewGenerator.Designer.cs new file mode 100644 index 000000000..f0d5f2193 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213183520_AddDynamicViewGenerator.Designer.cs @@ -0,0 +1,3315 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Unity.GrantManager.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + [DbContext(typeof(GrantTenantDbContext))] + [Migration("20241213183520_AddDynamicViewGenerator")] + partial class AddDynamicViewGenerator + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("ScoresheetInstanceId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("QuestionId"); + + b.HasIndex("ScoresheetInstanceId"); + + b.ToTable("Answers", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("Questions", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Scoresheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("CustomFieldId") + .HasColumnType("uuid"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetInstanceId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetInstanceId"); + + b.ToTable("CustomFieldValues", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetCorrelationId") + .HasColumnType("uuid"); + + b.Property("WorksheetCorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("WorksheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetLinks", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("CustomFields", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Worksheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantName") + .IsRequired() + .HasMaxLength(600) + .HasColumnType("character varying(600)"); + + b.Property("ApproxNumberOfEmployees") + .HasColumnType("text"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FiscalDay") + .HasColumnType("integer"); + + b.Property("FiscalMonth") + .HasColumnType("text"); + + b.Property("IndigenousOrgInd") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MatchPercentage") + .HasColumnType("numeric"); + + b.Property("NonRegisteredBusinessName") + .HasColumnType("text"); + + b.Property("OrgName") + .HasColumnType("text"); + + b.Property("OrgNumber") + .HasColumnType("text"); + + b.Property("OrgStatus") + .HasColumnType("text"); + + b.Property("OrganizationSize") + .HasColumnType("text"); + + b.Property("OrganizationType") + .HasColumnType("text"); + + b.Property("RedStop") + .HasColumnType("boolean"); + + b.Property("Sector") + .HasColumnType("text"); + + b.Property("SectorSubSectorIndustryDesc") + .HasColumnType("text"); + + b.Property("StartedOperatingDate") + .HasColumnType("date"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SubSector") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UnityApplicantId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantName"); + + b.ToTable("Applicants", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AddressType") + .HasColumnType("integer"); + + b.Property("ApplicantId") + .IsRequired() + .HasColumnType("uuid"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Postal") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("Street2") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Unit") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.ToTable("ApplicantAddresses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("BceidBusinessGuid") + .HasColumnType("uuid"); + + b.Property("BceidBusinessName") + .HasColumnType("text"); + + b.Property("BceidUserGuid") + .HasColumnType("uuid"); + + b.Property("BceidUserName") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactOrder") + .HasColumnType("integer"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IdentityEmail") + .HasColumnType("text"); + + b.Property("IdentityName") + .HasColumnType("text"); + + b.Property("IdentityProvider") + .HasColumnType("text"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsConfirmed") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSubUser") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Phone2") + .HasColumnType("text"); + + b.Property("Phone2Extension") + .HasColumnType("text"); + + b.Property("PhoneExtension") + .HasColumnType("text"); + + b.Property("RoleForApplicant") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationId") + .IsUnique(); + + b.HasIndex("OidcSubUser"); + + b.ToTable("ApplicantAgents", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Acquisition") + .HasColumnType("text"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationStatusId") + .HasColumnType("uuid"); + + b.Property("ApprovedAmount") + .HasColumnType("numeric"); + + b.Property("AssessmentResultDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AssessmentResultStatus") + .HasColumnType("text"); + + b.Property("AssessmentStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Community") + .HasColumnType("text"); + + b.Property("CommunityPopulation") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractExecutionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ContractNumber") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeclineRational") + .HasColumnType("text"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("DueDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DueDiligenceStatus") + .HasColumnType("text"); + + b.Property("EconomicRegion") + .HasColumnType("text"); + + b.Property("ElectoralDistrict") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinalDecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("Forestry") + .HasColumnType("text"); + + b.Property("ForestryFocus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LikelihoodOfFunding") + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("NotificationDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("Payload") + .HasColumnType("jsonb"); + + b.Property("PercentageTotalProjectBudget") + .HasColumnType("double precision"); + + b.Property("Place") + .HasColumnType("text"); + + b.Property("ProjectEndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectFundingTotal") + .HasColumnType("numeric"); + + b.Property("ProjectName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("ProjectStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectSummary") + .HasColumnType("text"); + + b.Property("ProposalDate") + .HasColumnType("timestamp without time zone"); + + b.Property("RecommendedAmount") + .HasColumnType("numeric"); + + b.Property("ReferenceNo") + .IsRequired() + .HasColumnType("text"); + + b.Property("RegionalDistrict") + .HasColumnType("text"); + + b.Property("RequestedAmount") + .HasColumnType("numeric"); + + b.Property("RiskRanking") + .HasColumnType("text"); + + b.Property("SigningAuthorityBusinessPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityCellPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityEmail") + .HasColumnType("text"); + + b.Property("SigningAuthorityFullName") + .HasColumnType("text"); + + b.Property("SigningAuthorityTitle") + .HasColumnType("text"); + + b.Property("SubStatus") + .HasColumnType("text"); + + b.Property("SubmissionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TotalProjectBudget") + .HasColumnType("numeric"); + + b.Property("TotalScore") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.HasIndex("ApplicationStatusId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Applications", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssigneeId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Duty") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssigneeId"); + + b.ToTable("ApplicationAssignments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsFileId") + .HasColumnType("text"); + + b.Property("ChefsSumbissionId") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationChefsFileAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactEmail") + .HasColumnType("text"); + + b.Property("ContactFullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactMobilePhone") + .HasColumnType("text"); + + b.Property("ContactTitle") + .HasColumnType("text"); + + b.Property("ContactType") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactWorkPhone") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationContact", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApiKey") + .HasColumnType("text"); + + b.Property("ApplicationFormDescription") + .HasColumnType("text"); + + b.Property("ApplicationFormName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("AttemptedConnectionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("Category") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsCriteriaFormGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConnectionHttpStatus") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeId") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Payable") + .HasColumnType("boolean"); + + b.Property("RenderFormIoToHtml") + .HasColumnType("boolean"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("IntakeId"); + + b.ToTable("ApplicationForms", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormVersionId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsSubmissionGuid") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FormVersionId") + .HasColumnType("uuid"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("RenderedHTML") + .HasColumnType("text"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Submission") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormSubmissions", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsFormVersionGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SubmissionHeaderMapping") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormVersion", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LinkedApplicationId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationLinks", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StatusCode") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("StatusCode") + .IsUnique(); + + b.ToTable("ApplicationStatuses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationTags", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.ToTable("AssessmentAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ApprovalRecommended") + .HasColumnType("boolean"); + + b.Property("AssessorId") + .HasColumnType("uuid"); + + b.Property("CleanGrowth") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("EconomicImpact") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinancialAnalysis") + .HasColumnType("integer"); + + b.Property("InclusiveGrowth") + .HasColumnType("integer"); + + b.Property("IsComplete") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssessorId"); + + b.ToTable("Assessments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("CommenterId"); + + b.ToTable("ApplicationComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.HasIndex("CommenterId"); + + b.ToTable("AssessmentComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Identity.Person", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Badge") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcDisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("OidcSub"); + + b.ToTable("Persons", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Intakes.Intake", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Budget") + .HasColumnType("double precision"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Intakes", (string)null); + }); + + modelBuilder.Entity("Unity.Notifications.Emails.EmailLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("BodyType") + .IsRequired() + .HasColumnType("text"); + + b.Property("CC") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesMsgId") + .HasColumnType("uuid"); + + b.Property("ChesResponse") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FromAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Priority") + .IsRequired() + .HasColumnType("text"); + + b.Property("RetryAttempts") + .HasColumnType("integer"); + + b.Property("SendOnDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SentDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tag") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("ToAddress") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EmailLogs", "Notifications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentConfigurations.PaymentConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MinistryClient") + .HasColumnType("text"); + + b.Property("PaymentIdPrefix") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentThreshold") + .HasColumnType("numeric"); + + b.Property("ProjectNumber") + .HasColumnType("text"); + + b.Property("Responsibility") + .HasColumnType("text"); + + b.Property("ServiceLine") + .HasColumnType("text"); + + b.Property("Stob") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("PaymentConfigurations", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PaymentRequestId"); + + b.ToTable("ExpenseApprovals", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("numeric"); + + b.Property("CasHttpStatusCode") + .HasColumnType("integer"); + + b.Property("CasResponse") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InvoiceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("InvoiceStatus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRecon") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PayeeName") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("text"); + + b.Property("PaymentNumber") + .HasColumnType("text"); + + b.Property("PaymentStatus") + .HasColumnType("text"); + + b.Property("ReferenceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("RequesterName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SiteId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("SupplierNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ReferenceNumber") + .IsUnique(); + + b.HasIndex("SiteId"); + + b.ToTable("PaymentRequests", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddressLine1") + .HasColumnType("text"); + + b.Property("AddressLine2") + .HasColumnType("text"); + + b.Property("AddressLine3") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EFTAdvicePref") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCas") + .HasColumnType("timestamp without time zone"); + + b.Property("Number") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentGroup") + .HasColumnType("integer"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SiteProtected") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("SupplierId"); + + b.ToTable("Sites", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCAS") + .HasColumnType("timestamp without time zone"); + + b.Property("MailingAddress") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SIN") + .HasColumnType("text"); + + b.Property("StandardIndustryClassification") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("Subcategory") + .HasColumnType("text"); + + b.Property("SupplierProtected") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Suppliers", "Payments"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Instances") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Question", "Question") + .WithMany("Answers") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", null) + .WithMany("Answers") + .HasForeignKey("ScoresheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.ScoresheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Sections") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.HasOne("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", null) + .WithMany("Values") + .HasForeignKey("WorksheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Links") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.WorksheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Sections") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany("ApplicantAddresses") + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Applicant"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithOne("ApplicantAgent") + .HasForeignKey("Unity.GrantManager.Applications.ApplicantAgent", "ApplicationId"); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("OidcSubUser") + .HasPrincipalKey("OidcSub"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", "ApplicationForm") + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationStatus", "ApplicationStatus") + .WithMany("Applications") + .HasForeignKey("ApplicationStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.NoAction); + + b.Navigation("Applicant"); + + b.Navigation("ApplicationForm"); + + b.Navigation("ApplicationStatus"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationAssignments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Assignee") + .WithMany() + .HasForeignKey("AssigneeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Application"); + + b.Navigation("Assignee"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.HasOne("Unity.GrantManager.Intakes.Intake", null) + .WithMany() + .HasForeignKey("IntakeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationTags") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("Assessments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("AssessorId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.HasOne("Unity.Payments.Domain.PaymentRequests.PaymentRequest", "PaymentRequest") + .WithMany("ExpenseApprovals") + .HasForeignKey("PaymentRequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentRequest"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Site", "Site") + .WithMany() + .HasForeignKey("SiteId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Site"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Supplier", "Supplier") + .WithMany("Sites") + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Navigation("Values"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Navigation("Links"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Navigation("ApplicantAddresses"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Navigation("ApplicantAgent"); + + b.Navigation("ApplicationAssignments"); + + b.Navigation("ApplicationTags"); + + b.Navigation("Assessments"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Navigation("ExpenseApprovals"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Navigation("Sites"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213183520_AddDynamicViewGenerator.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213183520_AddDynamicViewGenerator.cs new file mode 100644 index 000000000..0447ff86d --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213183520_AddDynamicViewGenerator.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + /// + public partial class AddDynamicViewGenerator : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.Sql("CREATE OR REPLACE PROCEDURE generate_view(table_a_id UUID) AS $$\r\nDECLARE\r\n view_name TEXT;\r\n view_columns TEXT;\r\n view_keys TEXT;\r\n column_definitions TEXT;\r\n column_names TEXT[];\r\n key_names TEXT[];\r\n select_clause TEXT;\r\nBEGIN\r\n -- Fetch the name, columns, and keys from Table A\r\n SELECT \"ReportViewName\", \"ReportColumns\", \"ReportKeys\" INTO view_name, view_columns, view_keys\r\n FROM \"ApplicationFormVersion\"\r\n WHERE \"Id\" = table_a_id;\r\n\r\n -- Split the columns and keys into individual names using pipe delimiter\r\n column_names := string_to_array(view_columns, '|');\r\n key_names := string_to_array(view_keys, '|');\r\n\r\n -- Create the column definitions for the view\r\n column_definitions := '';\r\n FOR i IN 1..array_length(column_names, 1) LOOP\r\n column_definitions := column_definitions || format('%I TEXT', column_names[i]);\r\n IF i < array_length(column_names, 1) THEN\r\n column_definitions := column_definitions || ', ';\r\n END IF;\r\n END LOOP;\r\n\r\n -- Create the select clause for the view\r\n select_clause := '';\r\n FOR i IN 1..array_length(key_names, 1) LOOP\r\n IF i > 1 THEN\r\n select_clause := select_clause || ', ';\r\n END IF;\r\n select_clause := select_clause || format(\r\n 'COALESCE((\r\n SELECT value::TEXT\r\n FROM jsonb_each_text(\"ReportData\")\r\n WHERE key = %L\r\n LIMIT 1\r\n ), '''') AS %I',\r\n key_names[i], column_names[i]\r\n );\r\n END LOOP;\r\n\r\n -- Drop the view if it already exists to avoid type conflicts\r\n EXECUTE format('DROP VIEW IF EXISTS %I', view_name);\r\n\r\n -- Create the view query dynamically\r\n EXECUTE format('CREATE VIEW %I AS SELECT \"Id\", %s FROM (SELECT \"Id\", \"ReportData\" FROM \"ApplicationFormSubmissions\" WHERE \"ApplicationFormSubmissions\".\"ApplicationFormVersionId\" = %L) AS subquery',\r\n view_name,\r\n select_clause,\r\n table_a_id\r\n );\r\nEND;\r\n$$ LANGUAGE plpgsql;\r\n"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs index 2d157b8b2..f804fcfef 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs @@ -838,6 +838,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("OrganizationType") .HasColumnType("text"); + b.Property("RedStop") + .HasColumnType("boolean"); + b.Property("Sector") .HasColumnType("text"); @@ -1615,6 +1618,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("ApplicationFormId") .HasColumnType("uuid"); + b.Property("ApplicationFormVersionId") + .HasColumnType("uuid"); + b.Property("ApplicationId") .HasColumnType("uuid"); @@ -1660,6 +1666,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("RenderedHTML") .HasColumnType("text"); + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + b.Property("Submission") .IsRequired() .HasColumnType("jsonb"); @@ -1739,6 +1749,18 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Published") .HasColumnType("boolean"); + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + b.Property("SubmissionHeaderMapping") .HasColumnType("text"); diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Unity.GrantManager.EntityFrameworkCore.csproj b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Unity.GrantManager.EntityFrameworkCore.csproj index 7a2f787b1..8c42738f4 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Unity.GrantManager.EntityFrameworkCore.csproj +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Unity.GrantManager.EntityFrameworkCore.csproj @@ -31,6 +31,5 @@ - diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.HttpApi/Controllers/FormController.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.HttpApi/Controllers/FormController.cs index 113bdf417..e1888f74d 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.HttpApi/Controllers/FormController.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.HttpApi/Controllers/FormController.cs @@ -63,7 +63,9 @@ public async Task SynchronizeChefsAvailableFields(string formId, } var chefsFormVersion = await _formsApiService.GetFormDataAsync(formId, formVersionId); - var result = await _applicationFormVersionAppService.UpdateOrCreateApplicationFormVersion(formId, formVersionId, applicationForm.Id, chefsFormVersion); + + var result = await _applicationFormVersionAppService + .UpdateOrCreateApplicationFormVersion(formId, formVersionId, applicationForm.Id, chefsFormVersion); return Ok(result); } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/appsettings.Development.json b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/appsettings.Development.json index 76788805a..76489e14b 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/appsettings.Development.json +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/appsettings.Development.json @@ -10,7 +10,7 @@ "DefaultPassPhrase": "g2IuZx7PwXDvCmlW" }, "BackgroundJobs": { - "IsJobExecutionEnabled": false, + "IsJobExecutionEnabled": true, "Quartz": { "UseCluster": false, "IsAutoRegisterEnabled": false diff --git a/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/ReportSchemaGenerationTests.cs b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/ReportSchemaGenerationTests.cs index 7f5411355..d81199c6c 100644 --- a/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/ReportSchemaGenerationTests.cs +++ b/applications/Unity.GrantManager/test/Unity.GrantManager.Domain.Tests/Intake/ReportSchemaGenerationTests.cs @@ -9,7 +9,6 @@ using Xunit; using System.Linq; using System.Collections.Generic; -using Amazon.Runtime; namespace Unity.GrantManager.Intake { @@ -67,11 +66,10 @@ public void TestBasicDataGridMapping(string filename, int keyCount) [InlineData("reportingFieldsSchema.json", "reportingFieldsSubmission.json")] public void GenerateReportableData(string schemafilename, string submissionfilename) { + // Get the schema keys var reportResult = new Dictionary>(); - dynamic? formMapping = LoadTestData(schemafilename); - JObject schemaMapping = JObject.Parse(formMapping); // need to work with this. - + string result = _intakeFormSubmissionMapper.InitializeAvailableFormFields(formMapping); JObject jObject = JObject.Parse(result); @@ -79,33 +77,51 @@ public void GenerateReportableData(string schemafilename, string submissionfilen // Exclusion array string[] exclusionArray = ["simplebuttonadvanced", "datagrid"]; - string[] complexSchema = ["simplecheckboxes", "simplecheckboxadvanced"]; + string[] nestedKeyFields = ["simplecheckboxes", "simplecheckboxadvanced"]; - var keys = jObject.Properties() - .SelectMany(p => - { - string? typeValue = JObject.Parse(p.Value.ToString())?["type"]?.ToString(); - if (typeValue != null && exclusionArray.Contains(typeValue)) - { - return Enumerable.Empty(); - } + // Dictionary to store full key names and truncated key names + Dictionary keyMapping = []; - // Check if the node has a child of values which is an array of objects - if (p.Value is JObject obj && obj["values"] is JArray valuesArray) - { - return valuesArray.Select(v => $"{p.Name}-{v["value"]}"); - } + // Filter out properties based on the exclusion array and extend child keys + var keys = jObject + .Properties() + .SelectMany(p => + { - return [p.Name]; - }); + string? typeValue = JObject.Parse(p.Value.ToString())?["type"]?.ToString(); + if (typeValue != null && exclusionArray.Contains(typeValue)) + { + return []; + } + // Check for nested key fields and generate dashed keys + if (typeValue != null && nestedKeyFields.Contains(typeValue)) + { + return ExtractNestedKeys(p); + } + return [p.Name]; + }) + .Distinct() + .Select(fullKey => + { + string truncatedKey = fullKey.Length > 63 ? fullKey[..63] : fullKey; + keyMapping[fullKey] = truncatedKey; + return fullKey; + }); + + // Get all keys and pipe separate them string pipeDelimitedKeys = string.Join("|", keys); - pipeDelimitedKeys += "|IshouldBeHere"; - // + // Truncate each key to a maximum of 63 characters and create a pipe-delimited string + string truncatedDelimitedKeys = string.Join("|", keys.Select(k => k.Length > 63 ? k[..63] : k)); + + // create a column map + keys.ShouldNotContain("indicateWhichProcessListedBelowBestAlignsWithYourOrganizationsOperationsChooseAllThatApply"); + keys.ShouldContain("cultivationExtractionIELoggingPlantCultivationMining"); + keys.ShouldContain("advancedManufacturingTheUseOfInnovativeTechnologySuchAsRobotics3DPrintingAutomationOrOtherAdvancedTechnologiesToCreateValueAddedProductsSuchAsMassTimberOrBioproductsEtc"); - // Get the schema + // Get the submission dynamic? submissionData = LoadTestData(submissionfilename); if (submissionData == null) Assert.Fail(); @@ -152,9 +168,59 @@ public void GenerateReportableData(string schemafilename, string submissionfilen jsonObject.ShouldNotBeNull(); // Prep value for db - string cleanedJsonString = jsonObject.ToString(); + string cleanedJsonString = jsonObject.ToString(); + + cleanedJsonString.ShouldNotBeNull(); } + private static string[] ExtractNestedKeys(JProperty jProperty) + { + if (jProperty == null) return []; + + string? valuesProp = JObject.Parse(jProperty.Value.ToString())?["values"]?.ToString(); + + return string.IsNullOrEmpty(valuesProp) ? [] : valuesProp.ToString().Split(','); + } + + static void DeepSearch(JToken node, string[] exclusionArray, List keys) + { + if (node.Type == JTokenType.Object) + { + foreach (var property in node.Children()) + { + string? typeValue = property.Value["type"]?.ToString(); + if (typeValue != null && exclusionArray.Contains(typeValue)) + { + continue; + } + + // Check if the node has a child of values which is an array of objects + if (typeValue == "simplecheckboxes" && property.Value["values"] is JArray valuesArray) + { + foreach (var valueObj in valuesArray) + { + keys.Add($"{property.Name}-{valueObj["value"]}"); + } + } + else + { + // Add the key directly if no special handling is required + keys.Add(property.Name); + } + + // Recursively search the child nodes + DeepSearch(property.Value, exclusionArray, keys); + } + } + else if (node.Type == JTokenType.Array) + { + foreach (var item in node.Children()) + { + // Recursively search each item in the array + DeepSearch(item, exclusionArray, keys); + } + } + } static string CleanJsonString(string jsonString) { @@ -163,7 +229,7 @@ static string CleanJsonString(string jsonString) try { var parsedJson = JsonConvert.DeserializeObject(jsonString); - + // Serialize the JObject back to a JSON string without escape characters var cleaned = parsedJson != null ? parsedJson.ToString(Formatting.None) : jsonString; From b2ecabb7c6afe1de6ff01ea826e8d9eca57498af Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Mon, 16 Dec 2024 08:54:00 -0800 Subject: [PATCH 03/28] AB#26819 undo dev config change --- .../src/Unity.GrantManager.Web/appsettings.Development.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/appsettings.Development.json b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/appsettings.Development.json index 76489e14b..76788805a 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/appsettings.Development.json +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/appsettings.Development.json @@ -10,7 +10,7 @@ "DefaultPassPhrase": "g2IuZx7PwXDvCmlW" }, "BackgroundJobs": { - "IsJobExecutionEnabled": true, + "IsJobExecutionEnabled": false, "Quartz": { "UseCluster": false, "IsAutoRegisterEnabled": false From b43606211d8d0bc587f4e1121b8509efedc8cd6d Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Mon, 6 Jan 2025 15:44:38 -0800 Subject: [PATCH 04/28] AB#26819 refactor and start worksheet reporting classes --- .../Domain/Worksheets/Worksheet.cs | 17 +- .../CheckboxGroupReportingFieldsGenerator.cs | 14 + .../DataGridReportingFieldsGenerator.cs | 14 + .../DefaultReportingFieldsGenerator.cs | 13 + .../Reporting/IReportingFieldsGenerator.cs | 7 + .../Reporting/ReportingFieldsGeneratorBase.cs | 18 + .../ReportingFieldsGeneratorFactory.cs | 17 + .../ReportingFieldsGeneratorService.cs | 49 + .../Worksheets/WorksheetAppService.cs | 11 +- .../Components/TextAreaWidget/Default.cshtml | 2 +- .../GrantManagerFeaturesDefinitionProvider.cs | 6 + .../ApplicationFormVersionAppService.cs | 14 +- ...ionArgs.cs => DynamicViewGenerationEto.cs} | 2 +- ...rJob.cs => DynamicViewGeneratorHandler.cs} | 17 +- ...0250106200623_AddSyncMigration.Designer.cs | 3329 ++++++++++++++++ .../20250106200623_AddSyncMigration.cs | 20 + ...9_AddWorksheetReportingColumns.Designer.cs | 3341 +++++++++++++++++ ...0106201219_AddWorksheetReportingColumns.cs | 57 + .../GrantTenantDbContextModelSnapshot.cs | 18 +- .../src/Unity.GrantManager.Web/yarn.lock | 191 +- 20 files changed, 7010 insertions(+), 147 deletions(-) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/CheckboxGroupReportingFieldsGenerator.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGridReportingFieldsGenerator.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DefaultReportingFieldsGenerator.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/IReportingFieldsGenerator.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorBase.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorFactory.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorService.cs rename applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/{DynamicViewGenerationArgs.cs => DynamicViewGenerationEto.cs} (80%) rename applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/{DynamicViewGeneratorJob.cs => DynamicViewGeneratorHandler.cs} (65%) create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106200623_AddSyncMigration.Designer.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106200623_AddSyncMigration.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106201219_AddWorksheetReportingColumns.Designer.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106201219_AddWorksheetReportingColumns.cs diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/Worksheet.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/Worksheet.cs index 5d446ed19..8f7cb64ab 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/Worksheet.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/Worksheet.cs @@ -6,7 +6,7 @@ using Volo.Abp.Domain.Entities.Auditing; using Volo.Abp.MultiTenancy; using Unity.Flex.Worksheets; -using static System.Collections.Specialized.BitVector32; +using System.Text; namespace Unity.Flex.Domain.Worksheets { @@ -22,6 +22,11 @@ public class Worksheet : FullAuditedAggregateRoot, IMultiTenant public virtual Collection Sections { get; private set; } = []; public virtual Collection Links { get; private set; } = []; + // For reporting purposes + public string ReportColumns { get; set; } = string.Empty; + public string ReportKeys { get; set; } = string.Empty; + public string ReportViewName { get; set; } = string.Empty; + protected Worksheet() { /* This constructor is for ORMs to be used while getting the entity from the database. */ @@ -91,8 +96,16 @@ public Worksheet RemoveSection(WorksheetSection section) public Worksheet SetName(string name) { - this.Name = name; + Name = name; return this; } + + public Worksheet SetReportingFields(string keys, string columns, string reportViewName) + { + ReportKeys = keys; + ReportColumns = columns; + ReportViewName = reportViewName; + return this; + } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/CheckboxGroupReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/CheckboxGroupReportingFieldsGenerator.cs new file mode 100644 index 000000000..537a1c4a7 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/CheckboxGroupReportingFieldsGenerator.cs @@ -0,0 +1,14 @@ +using System; +using Unity.Flex.Domain.Worksheets; + +namespace Unity.Flex.Worksheets.Reporting +{ + public class CheckboxGroupReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) + : ReportingFieldsGeneratorBase(customField, separator, maxColumnLength), IReportingFieldsGenerator + { + public (string columns, string keys) Generate() + { + throw new NotImplementedException(); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGridReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGridReportingFieldsGenerator.cs new file mode 100644 index 000000000..1120519b8 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGridReportingFieldsGenerator.cs @@ -0,0 +1,14 @@ +using System; +using Unity.Flex.Domain.Worksheets; + +namespace Unity.Flex.Worksheets.Reporting +{ + public class DataGridReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) + : ReportingFieldsGeneratorBase(customField, separator, maxColumnLength), IReportingFieldsGenerator + { + public (string columns, string keys) Generate() + { + throw new NotImplementedException(); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DefaultReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DefaultReportingFieldsGenerator.cs new file mode 100644 index 000000000..8f3ea1699 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DefaultReportingFieldsGenerator.cs @@ -0,0 +1,13 @@ +using Unity.Flex.Domain.Worksheets; + +namespace Unity.Flex.Worksheets.Reporting +{ + public class DefaultReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) + : ReportingFieldsGeneratorBase(customField, separator, maxColumnLength), IReportingFieldsGenerator + { + public (string columns, string keys) Generate() + { + return (customField.Name, customField.Key); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/IReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/IReportingFieldsGenerator.cs new file mode 100644 index 000000000..5e829efd9 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/IReportingFieldsGenerator.cs @@ -0,0 +1,7 @@ +namespace Unity.Flex.Worksheets.Reporting +{ + public interface IReportingFieldsGenerator + { + (string columns, string keys) Generate(); + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorBase.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorBase.cs new file mode 100644 index 000000000..bc26ffd08 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorBase.cs @@ -0,0 +1,18 @@ +using Unity.Flex.Domain.Worksheets; + +namespace Unity.Flex.Worksheets.Reporting +{ + public class ReportingFieldsGeneratorBase + { + protected readonly CustomField customField; + protected readonly char separator; + protected readonly uint maxColumnLength; + + protected ReportingFieldsGeneratorBase(CustomField customField, char separator, uint maxColumnLength) + { + this.customField = customField; + this.separator = separator; + this.maxColumnLength = maxColumnLength; + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorFactory.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorFactory.cs new file mode 100644 index 000000000..4b656c8ac --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorFactory.cs @@ -0,0 +1,17 @@ +using Unity.Flex.Domain.Worksheets; + +namespace Unity.Flex.Worksheets.Reporting +{ + public static class ReportingFieldsGeneratorFactory + { + public static IReportingFieldsGenerator Create(CustomField customField, char separator, uint maxColumnLength) + { + return customField.Type switch + { + CustomFieldType.CheckboxGroup => new CheckboxGroupReportingFieldsGenerator(customField, separator, maxColumnLength), + CustomFieldType.DataGrid => new DataGridReportingFieldsGenerator(customField, separator, maxColumnLength), + _ => new DefaultReportingFieldsGenerator(customField, separator, maxColumnLength), + }; + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorService.cs new file mode 100644 index 000000000..5f5e04ae2 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorService.cs @@ -0,0 +1,49 @@ +using System.Linq; +using System.Text; +using Unity.Flex.Domain.Worksheets; +using Volo.Abp.Application.Services; + +namespace Unity.Flex.Worksheets.Reporting +{ + public class ReportingFieldsGeneratorService() : ApplicationService + { + internal Worksheet GenerateAndSet(Worksheet worksheet, char separator = '|', uint maxColumnLength = 63) + { + var (reportingKeys, reportingColumns, reportViewName) = GenerateReportingFields(worksheet, separator, maxColumnLength); + worksheet.SetReportingFields(reportingKeys, reportingColumns, reportViewName); + return worksheet; + } + + private (string reportingKeys, string reportingColumns, string reportViewName) GenerateReportingFields(Worksheet worksheet, + char separator, + uint maxColumnLength) + { + StringBuilder keysBuilder = new(); + StringBuilder columnsBuilder = new(); + + foreach (var field in worksheet.Sections.SelectMany(s => s.Fields)) + { + var (columns, keys) = ReportingFieldsGeneratorFactory + .Create(field, separator, maxColumnLength) + .Generate(); + + columnsBuilder.Append(columns).Append(separator); + keysBuilder.Append(keys).Append(separator); + } + + // Remove the trailing separator + if (columnsBuilder.Length > 0) + { + columnsBuilder.Length--; + // Remove the last separator + } + + if (keysBuilder.Length > 0) + { + keysBuilder.Length--; // Remove the last separator + } + + return new(columnsBuilder.ToString(), keysBuilder.ToString(), worksheet.Name); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs index 40cea320c..3ccbf4ab0 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs @@ -8,12 +8,15 @@ using Unity.Flex.Domain.Settings; using Unity.Flex.Domain.Utils; using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Worksheets.Reporting; using Volo.Abp; namespace Unity.Flex.Worksheets { [Authorize] - public partial class WorksheetAppService(IWorksheetRepository worksheetRepository, WorksheetsManager worksheetsManager) : FlexAppService, IWorksheetAppService + public partial class WorksheetAppService(IWorksheetRepository worksheetRepository, + WorksheetsManager worksheetsManager, + ReportingFieldsGeneratorService reportingFieldsGeneratorService) : FlexAppService, IWorksheetAppService { public virtual async Task GetAsync(Guid id) { @@ -103,9 +106,13 @@ public virtual async Task CloneAsync(Guid id) public virtual async Task PublishAsync(Guid id) { var worksheet = await worksheetRepository.GetAsync(id); + _ = worksheet.SetPublished(true); + + _ = reportingFieldsGeneratorService.GenerateAndSet(worksheet); + return await Task.FromResult(true); - } + } public virtual async Task DeleteAsync(Guid id) { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/TextAreaWidget/Default.cshtml b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/TextAreaWidget/Default.cshtml index 39956afb0..bfbf9db08 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/TextAreaWidget/Default.cshtml +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/TextAreaWidget/Default.cshtml @@ -9,7 +9,7 @@ { } \ No newline at end of file diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/GrantManagerFeaturesDefinitionProvider.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/GrantManagerFeaturesDefinitionProvider.cs index e3d116af7..668d0dc8a 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/GrantManagerFeaturesDefinitionProvider.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/GrantManagerFeaturesDefinitionProvider.cs @@ -30,6 +30,12 @@ public override void Define(IFeatureDefinitionContext context) displayName: LocalizableString .Create("Flex"), valueType: new ToggleStringValueType()); + + myGroup.AddFeature("Unity.Reporting", + defaultValue: "false", + displayName: LocalizableString + .Create("Enable Reporting Module"), + valueType: new ToggleStringValueType()); } } } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs index 021707af1..7f3a142cb 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs @@ -15,6 +15,7 @@ using Volo.Abp.BackgroundJobs; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; +using Volo.Abp.EventBus.Local; using Volo.Abp.Uow; namespace Unity.GrantManager.ApplicationForms @@ -35,7 +36,7 @@ public class ApplicationFormVersionAppService : private readonly IFormsApiService _formApiService; private readonly IApplicationFormSubmissionRepository _applicationFormSubmissionRepository; private readonly IApplicationFormRepository _applicationFormRepository; - private readonly IBackgroundJobManager _backgroundJobManager; + private readonly ILocalEventBus _localEventBus; public ApplicationFormVersionAppService(IRepository repository, IIntakeFormSubmissionMapper intakeFormSubmissionMapper, @@ -44,7 +45,7 @@ public ApplicationFormVersionAppService(IRepository CreateAsync(CreateUpdateApplicationFormVersionDto input) @@ -303,12 +304,12 @@ public async Task UpdateOrCreateApplicationFormVersio private async Task QueueDynamicViewGeneratorAsync(ApplicationFormVersion applicationFormVersion) { - await _backgroundJobManager.EnqueueAsync( - new DynamicViewGenerationArgs + await _localEventBus.PublishAsync( + new DynamicViewGenerationEto { ApplicationFormVersionId = applicationFormVersion.Id, TenantId = CurrentTenant.Id - }); + }, true); } private async Task UpdateFormVersionWithReportKeysAndColumnsAsync(ApplicationFormVersion applicationFormVersion) @@ -372,7 +373,6 @@ private static string[] ExtractNestedKeys(JProperty jProperty) return string.IsNullOrEmpty(valuesProp) ? [] : valuesProp.Split(','); } - public async Task GetByChefsFormVersionId(Guid chefsFormVersionId) { var applicationFormVersion = await _applicationFormVersionRepository.GetByChefsFormVersionAsync(chefsFormVersionId); diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGenerationArgs.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGenerationEto.cs similarity index 80% rename from applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGenerationArgs.cs rename to applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGenerationEto.cs index 74e897b62..ba3d94d3f 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGenerationArgs.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGenerationEto.cs @@ -2,7 +2,7 @@ namespace Unity.GrantManager.Reporting { - public class DynamicViewGenerationArgs + public class DynamicViewGenerationEto { public Guid ApplicationFormVersionId { get; set; } public Guid? TenantId { get; set; } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGeneratorJob.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGeneratorHandler.cs similarity index 65% rename from applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGeneratorJob.cs rename to applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGeneratorHandler.cs index 5b38234aa..24954889d 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGeneratorJob.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGeneratorHandler.cs @@ -3,32 +3,33 @@ using System; using System.Threading.Tasks; using Unity.GrantManager.Applications; -using Volo.Abp.BackgroundJobs; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Repositories; +using Volo.Abp.EventBus; using Volo.Abp.MultiTenancy; using Volo.Abp.Uow; namespace Unity.GrantManager.Reporting { - public class DynamicViewGeneratorJob( + public class DynamicViewGeneratorHandler( IApplicationFormVersionRepository applicationFormVersionRepository, ICurrentTenant currentTenant, - IUnitOfWorkManager unitOfWorkManager) : AsyncBackgroundJob, ITransientDependency + IUnitOfWorkManager unitOfWorkManager, + ILogger logger) : ILocalEventHandler, ITransientDependency { - public override async Task ExecuteAsync(DynamicViewGenerationArgs args) + public async Task HandleEventAsync(DynamicViewGenerationEto viewGenerationEvent) { try { - using (currentTenant.Change(args.TenantId)) + using (currentTenant.Change(viewGenerationEvent.TenantId)) { using var uow = unitOfWorkManager.Begin(isTransactional: false); - var applicationFormVersion = await applicationFormVersionRepository.GetAsync(args.ApplicationFormVersionId); + var applicationFormVersion = await applicationFormVersionRepository.GetAsync(viewGenerationEvent.ApplicationFormVersionId); if (applicationFormVersion != null) { var dbContext = await applicationFormVersionRepository.GetDbContextAsync(); - FormattableString sql = $@"CALL generate_view({args.ApplicationFormVersionId});"; + FormattableString sql = $@"CALL generate_view({viewGenerationEvent.ApplicationFormVersionId});"; await dbContext.Database.ExecuteSqlAsync(sql); } @@ -37,7 +38,7 @@ public override async Task ExecuteAsync(DynamicViewGenerationArgs args) } catch (Exception ex) { - Logger.LogError("{errorMessage}", ex.Message); + logger.LogError("{errorMessage}", ex.Message); } } } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106200623_AddSyncMigration.Designer.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106200623_AddSyncMigration.Designer.cs new file mode 100644 index 000000000..b6a42f596 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106200623_AddSyncMigration.Designer.cs @@ -0,0 +1,3329 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Unity.GrantManager.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + [DbContext(typeof(GrantTenantDbContext))] + [Migration("20250106200623_AddSyncMigration")] + partial class AddSyncMigration + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("ScoresheetInstanceId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("QuestionId"); + + b.HasIndex("ScoresheetInstanceId"); + + b.ToTable("Answers", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("Questions", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Scoresheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("CustomFieldId") + .HasColumnType("uuid"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetInstanceId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetInstanceId"); + + b.ToTable("CustomFieldValues", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetCorrelationId") + .HasColumnType("uuid"); + + b.Property("WorksheetCorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("WorksheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetLinks", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("CustomFields", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Worksheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantName") + .IsRequired() + .HasMaxLength(600) + .HasColumnType("character varying(600)"); + + b.Property("ApproxNumberOfEmployees") + .HasColumnType("text"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FiscalDay") + .HasColumnType("integer"); + + b.Property("FiscalMonth") + .HasColumnType("text"); + + b.Property("IndigenousOrgInd") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MatchPercentage") + .HasColumnType("numeric"); + + b.Property("NonRegisteredBusinessName") + .HasColumnType("text"); + + b.Property("OrgName") + .HasColumnType("text"); + + b.Property("OrgNumber") + .HasColumnType("text"); + + b.Property("OrgStatus") + .HasColumnType("text"); + + b.Property("OrganizationSize") + .HasColumnType("text"); + + b.Property("OrganizationType") + .HasColumnType("text"); + + b.Property("RedStop") + .HasColumnType("boolean"); + + b.Property("Sector") + .HasColumnType("text"); + + b.Property("SectorSubSectorIndustryDesc") + .HasColumnType("text"); + + b.Property("StartedOperatingDate") + .HasColumnType("date"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SubSector") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UnityApplicantId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantName"); + + b.ToTable("Applicants", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AddressType") + .HasColumnType("integer"); + + b.Property("ApplicantId") + .IsRequired() + .HasColumnType("uuid"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Postal") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("Street2") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Unit") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.ToTable("ApplicantAddresses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("BceidBusinessGuid") + .HasColumnType("uuid"); + + b.Property("BceidBusinessName") + .HasColumnType("text"); + + b.Property("BceidUserGuid") + .HasColumnType("uuid"); + + b.Property("BceidUserName") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactOrder") + .HasColumnType("integer"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IdentityEmail") + .HasColumnType("text"); + + b.Property("IdentityName") + .HasColumnType("text"); + + b.Property("IdentityProvider") + .HasColumnType("text"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsConfirmed") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSubUser") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Phone2") + .HasColumnType("text"); + + b.Property("Phone2Extension") + .HasColumnType("text"); + + b.Property("PhoneExtension") + .HasColumnType("text"); + + b.Property("RoleForApplicant") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationId") + .IsUnique(); + + b.HasIndex("OidcSubUser"); + + b.ToTable("ApplicantAgents", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Acquisition") + .HasColumnType("text"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationStatusId") + .HasColumnType("uuid"); + + b.Property("ApprovedAmount") + .HasColumnType("numeric"); + + b.Property("AssessmentResultDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AssessmentResultStatus") + .HasColumnType("text"); + + b.Property("AssessmentStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Community") + .HasColumnType("text"); + + b.Property("CommunityPopulation") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractExecutionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ContractNumber") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeclineRational") + .HasColumnType("text"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("DueDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DueDiligenceStatus") + .HasColumnType("text"); + + b.Property("EconomicRegion") + .HasColumnType("text"); + + b.Property("ElectoralDistrict") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinalDecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("Forestry") + .HasColumnType("text"); + + b.Property("ForestryFocus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LikelihoodOfFunding") + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("NotificationDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("Payload") + .HasColumnType("jsonb"); + + b.Property("PercentageTotalProjectBudget") + .HasColumnType("double precision"); + + b.Property("Place") + .HasColumnType("text"); + + b.Property("ProjectEndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectFundingTotal") + .HasColumnType("numeric"); + + b.Property("ProjectName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("ProjectStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectSummary") + .HasColumnType("text"); + + b.Property("ProposalDate") + .HasColumnType("timestamp without time zone"); + + b.Property("RecommendedAmount") + .HasColumnType("numeric"); + + b.Property("ReferenceNo") + .IsRequired() + .HasColumnType("text"); + + b.Property("RegionalDistrict") + .HasColumnType("text"); + + b.Property("RequestedAmount") + .HasColumnType("numeric"); + + b.Property("RiskRanking") + .HasColumnType("text"); + + b.Property("SigningAuthorityBusinessPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityCellPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityEmail") + .HasColumnType("text"); + + b.Property("SigningAuthorityFullName") + .HasColumnType("text"); + + b.Property("SigningAuthorityTitle") + .HasColumnType("text"); + + b.Property("SubStatus") + .HasColumnType("text"); + + b.Property("SubmissionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TotalProjectBudget") + .HasColumnType("numeric"); + + b.Property("TotalScore") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.HasIndex("ApplicationStatusId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Applications", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssigneeId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Duty") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssigneeId"); + + b.ToTable("ApplicationAssignments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsFileId") + .HasColumnType("text"); + + b.Property("ChefsSumbissionId") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationChefsFileAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactEmail") + .HasColumnType("text"); + + b.Property("ContactFullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactMobilePhone") + .HasColumnType("text"); + + b.Property("ContactTitle") + .HasColumnType("text"); + + b.Property("ContactType") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactWorkPhone") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationContact", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApiKey") + .HasColumnType("text"); + + b.Property("ApplicationFormDescription") + .HasColumnType("text"); + + b.Property("ApplicationFormName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("AttemptedConnectionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("Category") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsCriteriaFormGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConnectionHttpStatus") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeId") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Payable") + .HasColumnType("boolean"); + + b.Property("RenderFormIoToHtml") + .HasColumnType("boolean"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("IntakeId"); + + b.ToTable("ApplicationForms", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormVersionId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsSubmissionGuid") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FormVersionId") + .HasColumnType("uuid"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("RenderedHTML") + .HasColumnType("text"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Submission") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormSubmissions", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsFormVersionGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SubmissionHeaderMapping") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormVersion", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LinkedApplicationId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationLinks", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StatusCode") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("StatusCode") + .IsUnique(); + + b.ToTable("ApplicationStatuses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationTags", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.ToTable("AssessmentAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ApprovalRecommended") + .HasColumnType("boolean"); + + b.Property("AssessorId") + .HasColumnType("uuid"); + + b.Property("CleanGrowth") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("EconomicImpact") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinancialAnalysis") + .HasColumnType("integer"); + + b.Property("InclusiveGrowth") + .HasColumnType("integer"); + + b.Property("IsComplete") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssessorId"); + + b.ToTable("Assessments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("CommenterId"); + + b.ToTable("ApplicationComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.HasIndex("CommenterId"); + + b.ToTable("AssessmentComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Identity.Person", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Badge") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcDisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("OidcSub"); + + b.ToTable("Persons", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Intakes.Intake", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Budget") + .HasColumnType("double precision"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Intakes", (string)null); + }); + + modelBuilder.Entity("Unity.Notifications.Emails.EmailLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("BodyType") + .IsRequired() + .HasColumnType("text"); + + b.Property("CC") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesMsgId") + .HasColumnType("uuid"); + + b.Property("ChesResponse") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FromAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Priority") + .IsRequired() + .HasColumnType("text"); + + b.Property("RetryAttempts") + .HasColumnType("integer"); + + b.Property("SendOnDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SentDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tag") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("ToAddress") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EmailLogs", "Notifications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentConfigurations.PaymentConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MinistryClient") + .HasColumnType("text"); + + b.Property("PaymentIdPrefix") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentThreshold") + .HasColumnType("numeric"); + + b.Property("ProjectNumber") + .HasColumnType("text"); + + b.Property("Responsibility") + .HasColumnType("text"); + + b.Property("ServiceLine") + .HasColumnType("text"); + + b.Property("Stob") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("PaymentConfigurations", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PaymentRequestId"); + + b.ToTable("ExpenseApprovals", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("numeric"); + + b.Property("BatchName") + .IsRequired() + .HasColumnType("text"); + + b.Property("BatchNumber") + .HasColumnType("numeric"); + + b.Property("CasHttpStatusCode") + .HasColumnType("integer"); + + b.Property("CasResponse") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InvoiceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("InvoiceStatus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRecon") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PayeeName") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("text"); + + b.Property("PaymentNumber") + .HasColumnType("text"); + + b.Property("PaymentStatus") + .HasColumnType("text"); + + b.Property("ReferenceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("RequesterName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SiteId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("SupplierNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ReferenceNumber") + .IsUnique(); + + b.HasIndex("SiteId"); + + b.ToTable("PaymentRequests", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddressLine1") + .HasColumnType("text"); + + b.Property("AddressLine2") + .HasColumnType("text"); + + b.Property("AddressLine3") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EFTAdvicePref") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCas") + .HasColumnType("timestamp without time zone"); + + b.Property("Number") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentGroup") + .HasColumnType("integer"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SiteProtected") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("SupplierId"); + + b.ToTable("Sites", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCAS") + .HasColumnType("timestamp without time zone"); + + b.Property("MailingAddress") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SIN") + .HasColumnType("text"); + + b.Property("StandardIndustryClassification") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("Subcategory") + .HasColumnType("text"); + + b.Property("SupplierProtected") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Suppliers", "Payments"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Instances") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Question", "Question") + .WithMany("Answers") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", null) + .WithMany("Answers") + .HasForeignKey("ScoresheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.ScoresheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Sections") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.HasOne("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", null) + .WithMany("Values") + .HasForeignKey("WorksheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Links") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.WorksheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Sections") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany("ApplicantAddresses") + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Applicant"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithOne("ApplicantAgent") + .HasForeignKey("Unity.GrantManager.Applications.ApplicantAgent", "ApplicationId"); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("OidcSubUser") + .HasPrincipalKey("OidcSub"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", "ApplicationForm") + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationStatus", "ApplicationStatus") + .WithMany("Applications") + .HasForeignKey("ApplicationStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.NoAction); + + b.Navigation("Applicant"); + + b.Navigation("ApplicationForm"); + + b.Navigation("ApplicationStatus"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationAssignments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Assignee") + .WithMany() + .HasForeignKey("AssigneeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Application"); + + b.Navigation("Assignee"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.HasOne("Unity.GrantManager.Intakes.Intake", null) + .WithMany() + .HasForeignKey("IntakeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationTags") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("Assessments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("AssessorId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.HasOne("Unity.Payments.Domain.PaymentRequests.PaymentRequest", "PaymentRequest") + .WithMany("ExpenseApprovals") + .HasForeignKey("PaymentRequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentRequest"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Site", "Site") + .WithMany() + .HasForeignKey("SiteId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Site"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Supplier", "Supplier") + .WithMany("Sites") + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Navigation("Values"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Navigation("Links"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Navigation("ApplicantAddresses"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Navigation("ApplicantAgent"); + + b.Navigation("ApplicationAssignments"); + + b.Navigation("ApplicationTags"); + + b.Navigation("Assessments"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Navigation("ExpenseApprovals"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Navigation("Sites"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106200623_AddSyncMigration.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106200623_AddSyncMigration.cs new file mode 100644 index 000000000..5540c4a1b --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106200623_AddSyncMigration.cs @@ -0,0 +1,20 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + /// + public partial class AddSyncMigration : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106201219_AddWorksheetReportingColumns.Designer.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106201219_AddWorksheetReportingColumns.Designer.cs new file mode 100644 index 000000000..afee14240 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106201219_AddWorksheetReportingColumns.Designer.cs @@ -0,0 +1,3341 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Unity.GrantManager.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + [DbContext(typeof(GrantTenantDbContext))] + [Migration("20250106201219_AddWorksheetReportingColumns")] + partial class AddWorksheetReportingColumns + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("ScoresheetInstanceId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("QuestionId"); + + b.HasIndex("ScoresheetInstanceId"); + + b.ToTable("Answers", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("Questions", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Scoresheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("CustomFieldId") + .HasColumnType("uuid"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetInstanceId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetInstanceId"); + + b.ToTable("CustomFieldValues", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetCorrelationId") + .HasColumnType("uuid"); + + b.Property("WorksheetCorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("WorksheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetLinks", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("CustomFields", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Worksheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantName") + .IsRequired() + .HasMaxLength(600) + .HasColumnType("character varying(600)"); + + b.Property("ApproxNumberOfEmployees") + .HasColumnType("text"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FiscalDay") + .HasColumnType("integer"); + + b.Property("FiscalMonth") + .HasColumnType("text"); + + b.Property("IndigenousOrgInd") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MatchPercentage") + .HasColumnType("numeric"); + + b.Property("NonRegisteredBusinessName") + .HasColumnType("text"); + + b.Property("OrgName") + .HasColumnType("text"); + + b.Property("OrgNumber") + .HasColumnType("text"); + + b.Property("OrgStatus") + .HasColumnType("text"); + + b.Property("OrganizationSize") + .HasColumnType("text"); + + b.Property("OrganizationType") + .HasColumnType("text"); + + b.Property("RedStop") + .HasColumnType("boolean"); + + b.Property("Sector") + .HasColumnType("text"); + + b.Property("SectorSubSectorIndustryDesc") + .HasColumnType("text"); + + b.Property("StartedOperatingDate") + .HasColumnType("date"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SubSector") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UnityApplicantId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantName"); + + b.ToTable("Applicants", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AddressType") + .HasColumnType("integer"); + + b.Property("ApplicantId") + .IsRequired() + .HasColumnType("uuid"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Postal") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("Street2") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Unit") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.ToTable("ApplicantAddresses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("BceidBusinessGuid") + .HasColumnType("uuid"); + + b.Property("BceidBusinessName") + .HasColumnType("text"); + + b.Property("BceidUserGuid") + .HasColumnType("uuid"); + + b.Property("BceidUserName") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactOrder") + .HasColumnType("integer"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IdentityEmail") + .HasColumnType("text"); + + b.Property("IdentityName") + .HasColumnType("text"); + + b.Property("IdentityProvider") + .HasColumnType("text"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsConfirmed") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSubUser") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Phone2") + .HasColumnType("text"); + + b.Property("Phone2Extension") + .HasColumnType("text"); + + b.Property("PhoneExtension") + .HasColumnType("text"); + + b.Property("RoleForApplicant") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationId") + .IsUnique(); + + b.HasIndex("OidcSubUser"); + + b.ToTable("ApplicantAgents", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Acquisition") + .HasColumnType("text"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationStatusId") + .HasColumnType("uuid"); + + b.Property("ApprovedAmount") + .HasColumnType("numeric"); + + b.Property("AssessmentResultDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AssessmentResultStatus") + .HasColumnType("text"); + + b.Property("AssessmentStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Community") + .HasColumnType("text"); + + b.Property("CommunityPopulation") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractExecutionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ContractNumber") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeclineRational") + .HasColumnType("text"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("DueDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DueDiligenceStatus") + .HasColumnType("text"); + + b.Property("EconomicRegion") + .HasColumnType("text"); + + b.Property("ElectoralDistrict") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinalDecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("Forestry") + .HasColumnType("text"); + + b.Property("ForestryFocus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LikelihoodOfFunding") + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("NotificationDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("Payload") + .HasColumnType("jsonb"); + + b.Property("PercentageTotalProjectBudget") + .HasColumnType("double precision"); + + b.Property("Place") + .HasColumnType("text"); + + b.Property("ProjectEndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectFundingTotal") + .HasColumnType("numeric"); + + b.Property("ProjectName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("ProjectStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectSummary") + .HasColumnType("text"); + + b.Property("ProposalDate") + .HasColumnType("timestamp without time zone"); + + b.Property("RecommendedAmount") + .HasColumnType("numeric"); + + b.Property("ReferenceNo") + .IsRequired() + .HasColumnType("text"); + + b.Property("RegionalDistrict") + .HasColumnType("text"); + + b.Property("RequestedAmount") + .HasColumnType("numeric"); + + b.Property("RiskRanking") + .HasColumnType("text"); + + b.Property("SigningAuthorityBusinessPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityCellPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityEmail") + .HasColumnType("text"); + + b.Property("SigningAuthorityFullName") + .HasColumnType("text"); + + b.Property("SigningAuthorityTitle") + .HasColumnType("text"); + + b.Property("SubStatus") + .HasColumnType("text"); + + b.Property("SubmissionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TotalProjectBudget") + .HasColumnType("numeric"); + + b.Property("TotalScore") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.HasIndex("ApplicationStatusId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Applications", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssigneeId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Duty") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssigneeId"); + + b.ToTable("ApplicationAssignments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsFileId") + .HasColumnType("text"); + + b.Property("ChefsSumbissionId") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationChefsFileAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactEmail") + .HasColumnType("text"); + + b.Property("ContactFullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactMobilePhone") + .HasColumnType("text"); + + b.Property("ContactTitle") + .HasColumnType("text"); + + b.Property("ContactType") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactWorkPhone") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationContact", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApiKey") + .HasColumnType("text"); + + b.Property("ApplicationFormDescription") + .HasColumnType("text"); + + b.Property("ApplicationFormName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("AttemptedConnectionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("Category") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsCriteriaFormGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConnectionHttpStatus") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeId") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Payable") + .HasColumnType("boolean"); + + b.Property("RenderFormIoToHtml") + .HasColumnType("boolean"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("IntakeId"); + + b.ToTable("ApplicationForms", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormVersionId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsSubmissionGuid") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FormVersionId") + .HasColumnType("uuid"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("RenderedHTML") + .HasColumnType("text"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Submission") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormSubmissions", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsFormVersionGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SubmissionHeaderMapping") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormVersion", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LinkedApplicationId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationLinks", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StatusCode") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("StatusCode") + .IsUnique(); + + b.ToTable("ApplicationStatuses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationTags", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.ToTable("AssessmentAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ApprovalRecommended") + .HasColumnType("boolean"); + + b.Property("AssessorId") + .HasColumnType("uuid"); + + b.Property("CleanGrowth") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("EconomicImpact") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinancialAnalysis") + .HasColumnType("integer"); + + b.Property("InclusiveGrowth") + .HasColumnType("integer"); + + b.Property("IsComplete") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssessorId"); + + b.ToTable("Assessments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("CommenterId"); + + b.ToTable("ApplicationComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.HasIndex("CommenterId"); + + b.ToTable("AssessmentComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Identity.Person", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Badge") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcDisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("OidcSub"); + + b.ToTable("Persons", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Intakes.Intake", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Budget") + .HasColumnType("double precision"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Intakes", (string)null); + }); + + modelBuilder.Entity("Unity.Notifications.Emails.EmailLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("BodyType") + .IsRequired() + .HasColumnType("text"); + + b.Property("CC") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesMsgId") + .HasColumnType("uuid"); + + b.Property("ChesResponse") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FromAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Priority") + .IsRequired() + .HasColumnType("text"); + + b.Property("RetryAttempts") + .HasColumnType("integer"); + + b.Property("SendOnDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SentDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tag") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("ToAddress") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EmailLogs", "Notifications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentConfigurations.PaymentConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MinistryClient") + .HasColumnType("text"); + + b.Property("PaymentIdPrefix") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentThreshold") + .HasColumnType("numeric"); + + b.Property("ProjectNumber") + .HasColumnType("text"); + + b.Property("Responsibility") + .HasColumnType("text"); + + b.Property("ServiceLine") + .HasColumnType("text"); + + b.Property("Stob") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("PaymentConfigurations", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PaymentRequestId"); + + b.ToTable("ExpenseApprovals", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("numeric"); + + b.Property("BatchName") + .IsRequired() + .HasColumnType("text"); + + b.Property("BatchNumber") + .HasColumnType("numeric"); + + b.Property("CasHttpStatusCode") + .HasColumnType("integer"); + + b.Property("CasResponse") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InvoiceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("InvoiceStatus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRecon") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PayeeName") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("text"); + + b.Property("PaymentNumber") + .HasColumnType("text"); + + b.Property("PaymentStatus") + .HasColumnType("text"); + + b.Property("ReferenceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("RequesterName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SiteId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("SupplierNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ReferenceNumber") + .IsUnique(); + + b.HasIndex("SiteId"); + + b.ToTable("PaymentRequests", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddressLine1") + .HasColumnType("text"); + + b.Property("AddressLine2") + .HasColumnType("text"); + + b.Property("AddressLine3") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EFTAdvicePref") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCas") + .HasColumnType("timestamp without time zone"); + + b.Property("Number") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentGroup") + .HasColumnType("integer"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SiteProtected") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("SupplierId"); + + b.ToTable("Sites", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCAS") + .HasColumnType("timestamp without time zone"); + + b.Property("MailingAddress") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SIN") + .HasColumnType("text"); + + b.Property("StandardIndustryClassification") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("Subcategory") + .HasColumnType("text"); + + b.Property("SupplierProtected") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Suppliers", "Payments"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Instances") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Question", "Question") + .WithMany("Answers") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", null) + .WithMany("Answers") + .HasForeignKey("ScoresheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.ScoresheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Sections") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.HasOne("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", null) + .WithMany("Values") + .HasForeignKey("WorksheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Links") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.WorksheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Sections") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany("ApplicantAddresses") + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Applicant"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithOne("ApplicantAgent") + .HasForeignKey("Unity.GrantManager.Applications.ApplicantAgent", "ApplicationId"); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("OidcSubUser") + .HasPrincipalKey("OidcSub"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", "ApplicationForm") + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationStatus", "ApplicationStatus") + .WithMany("Applications") + .HasForeignKey("ApplicationStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.NoAction); + + b.Navigation("Applicant"); + + b.Navigation("ApplicationForm"); + + b.Navigation("ApplicationStatus"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationAssignments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Assignee") + .WithMany() + .HasForeignKey("AssigneeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Application"); + + b.Navigation("Assignee"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.HasOne("Unity.GrantManager.Intakes.Intake", null) + .WithMany() + .HasForeignKey("IntakeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationTags") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("Assessments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("AssessorId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.HasOne("Unity.Payments.Domain.PaymentRequests.PaymentRequest", "PaymentRequest") + .WithMany("ExpenseApprovals") + .HasForeignKey("PaymentRequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentRequest"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Site", "Site") + .WithMany() + .HasForeignKey("SiteId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Site"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Supplier", "Supplier") + .WithMany("Sites") + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Navigation("Values"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Navigation("Links"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Navigation("ApplicantAddresses"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Navigation("ApplicantAgent"); + + b.Navigation("ApplicationAssignments"); + + b.Navigation("ApplicationTags"); + + b.Navigation("Assessments"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Navigation("ExpenseApprovals"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Navigation("Sites"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106201219_AddWorksheetReportingColumns.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106201219_AddWorksheetReportingColumns.cs new file mode 100644 index 000000000..1d0d74636 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250106201219_AddWorksheetReportingColumns.cs @@ -0,0 +1,57 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + /// + public partial class AddWorksheetReportingColumns : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "ReportColumns", + schema: "Flex", + table: "Worksheets", + type: "text", + nullable: false, + defaultValue: ""); + + migrationBuilder.AddColumn( + name: "ReportKeys", + schema: "Flex", + table: "Worksheets", + type: "text", + nullable: false, + defaultValue: ""); + + migrationBuilder.AddColumn( + name: "ReportViewName", + schema: "Flex", + table: "Worksheets", + type: "text", + nullable: false, + defaultValue: ""); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ReportColumns", + schema: "Flex", + table: "Worksheets"); + + migrationBuilder.DropColumn( + name: "ReportKeys", + schema: "Flex", + table: "Worksheets"); + + migrationBuilder.DropColumn( + name: "ReportViewName", + schema: "Flex", + table: "Worksheets"); + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs index a1a665ecc..a157f883f 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs @@ -691,6 +691,18 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Published") .HasColumnType("boolean"); + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + b.Property("TenantId") .HasColumnType("uuid") .HasColumnName("TenantId"); @@ -856,6 +868,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("SubSector") .HasColumnType("text"); + b.Property("SupplierId") + .HasColumnType("uuid"); + b.Property("TenantId") .HasColumnType("uuid") .HasColumnName("TenantId"); @@ -2581,8 +2596,7 @@ protected override void BuildModel(ModelBuilder modelBuilder) .IsRequired() .HasColumnType("text"); - b.Property("BatchNumber") - .IsRequired() + b.Property("BatchNumber") .HasColumnType("numeric"); b.Property("CasHttpStatusCode") diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/yarn.lock b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/yarn.lock index abe37243d..d800ff766 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/yarn.lock +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/yarn.lock @@ -248,7 +248,7 @@ resolved "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.5.2.tgz" integrity sha512-hRILoInAx8GNT5IMkrtIt9blOdrqHOnPBH+k70aWUAqPZPgopb9G5EQJFpaBx/S8zp2fC+mPW349Bziuk1o28Q== -"@popperjs/core@^2.11.8", "@popperjs/core@^2.9.0": +"@popperjs/core@^2.9.0": version "2.11.8" resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== @@ -304,7 +304,7 @@ ansi-regex@^2.0.0: resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== -ansi-wrap@^0.1.0, ansi-wrap@0.1.0: +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz" integrity sha512-ZyznvL8k/FZeQHr2T6LzcJ/+vBApDnMNZvfVFy3At0knswWd6rJ3/0Hhmpu8oqa6C92npmozs890sX9Dl6q+Qw== @@ -491,6 +491,11 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-arraybuffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz" + integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== + base@^0.11.1: version "0.11.2" resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" @@ -504,16 +509,18 @@ base@^0.11.1: mixin-deep "^1.2.0" pascalcase "^0.1.1" -base64-arraybuffer@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz" - integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== - binary-extensions@^1.0.0: version "1.13.1" resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + "bootstrap-4@npm:bootstrap@^4.4.1": version "4.6.2" resolved "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz" @@ -539,7 +546,7 @@ bootstrap-select@^1.13.18: resolved "https://registry.npmjs.org/bootstrap-select/-/bootstrap-select-1.13.18.tgz" integrity sha512-V1IzK4rxBq5FrJtkzSH6RmFLFBsjx50byFbfAf8jYyXROWs7ZpprGjdHeoyq2HSsHyjJhMMwjsQhRoYAfxCGow== -bootstrap@^5.1.3, bootstrap@>=3.0.0: +bootstrap@^5.1.3: version "5.3.3" resolved "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz" integrity sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg== @@ -838,7 +845,7 @@ custom-event@^1.0.0: resolved "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz" integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg== -d@^1.0.1, d@^1.0.2, d@1: +d@1, d@^1.0.1, d@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/d/-/d-1.0.2.tgz" integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== @@ -846,7 +853,7 @@ d@^1.0.1, d@^1.0.2, d@1: es5-ext "^0.10.64" type "^2.7.2" -datatables.net-bs5@^1.11.4, datatables.net-bs5@^1.13.0, datatables.net-bs5@^1.13.6, datatables.net-bs5@>=1.13.4: +datatables.net-bs5@>=1.13.4, datatables.net-bs5@^1.11.4, datatables.net-bs5@^1.13.0, datatables.net-bs5@^1.13.6: version "1.13.11" resolved "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-1.13.11.tgz" integrity sha512-NQO15TjXo4xvZ0jReC4Uf86ezbQzPQPdaN2YncrCPhzQ6fx+2WD7DUq4ur0HbAcYHo94/M+MtD5Ch29To7Rj3Q== @@ -880,7 +887,7 @@ datatables.net-colreorder-bs5@^1.7.0: datatables.net-colreorder "1.7.2" jquery ">=1.7" -datatables.net-colreorder@^1.7.0, datatables.net-colreorder@1.7.2: +datatables.net-colreorder@1.7.2, datatables.net-colreorder@^1.7.0: version "1.7.2" resolved "https://registry.npmjs.org/datatables.net-colreorder/-/datatables.net-colreorder-1.7.2.tgz" integrity sha512-F8TYMFXtWLtsjciwS7hkP/Fbp3XS6WHuHLc+iMFtQqiQmbMo/59GK7YSxKuxSoqTTJU/opaPXQYjODnIuNEc/g== @@ -897,7 +904,7 @@ datatables.net-fixedheader-bs5@^3.4.0: datatables.net-fixedheader "3.4.1" jquery ">=1.7" -datatables.net-fixedheader@^3.4.0, datatables.net-fixedheader@3.4.1: +datatables.net-fixedheader@3.4.1, datatables.net-fixedheader@^3.4.0: version "3.4.1" resolved "https://registry.npmjs.org/datatables.net-fixedheader/-/datatables.net-fixedheader-3.4.1.tgz" integrity sha512-c9FJAShG5r8RJDIszWQvMFe6Ie+njfbHB9GhzOPjEF7zhbsMUQEkoYq1qW3ppOxY5psadDrT+D3f4iGM589u6w== @@ -922,7 +929,7 @@ datatables.net-select@>=1.6.2: datatables.net ">=1.13.4" jquery ">=1.7" -datatables.net@^1.11.4, datatables.net@^1.13.0, datatables.net@>=1.13.4, datatables.net@1.13.11: +datatables.net@1.13.11, datatables.net@>=1.13.4, datatables.net@^1.11.4, datatables.net@^1.13.0: version "1.13.11" resolved "https://registry.npmjs.org/datatables.net/-/datatables.net-1.13.11.tgz" integrity sha512-AE6RkMXziRaqzPcu/pl3SJXeRa6fmXQG/fVjuRESujvkzqDCYEeKTTpPMuVJSGYJpPi32WGSphVNNY1G4nSN/g== @@ -1259,15 +1266,7 @@ extend-shallow@^2.0.1: dependencies: is-extendable "^0.1.0" -extend-shallow@^3.0.0: - version "3.0.2" - resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend-shallow@^3.0.2: +extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== @@ -1336,6 +1335,11 @@ fflate@^0.4.8: resolved "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz" integrity sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA== +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" @@ -1500,6 +1504,14 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -1776,7 +1788,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -1908,15 +1920,7 @@ is-descriptor@^0.1.0: is-accessor-descriptor "^1.0.1" is-data-descriptor "^1.0.1" -is-descriptor@^1.0.0: - version "1.0.3" - resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz" - integrity sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw== - dependencies: - is-accessor-descriptor "^1.0.1" - is-data-descriptor "^1.0.1" - -is-descriptor@^1.0.2: +is-descriptor@^1.0.0, is-descriptor@^1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz" integrity sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw== @@ -1996,21 +2000,7 @@ is-number@^7.0.0: resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-plain-object@^2.0.1: - version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^2.0.3: - version "2.0.4" - resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-plain-object@^2.0.4: +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== @@ -2105,16 +2095,16 @@ is-windows@^1.0.1, is-windows@^1.0.2: resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + isarray@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== -isarray@~1.0.0, isarray@1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - iselement@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/iselement/-/iselement-1.1.4.tgz" @@ -2169,12 +2159,12 @@ jquery-validation-unobtrusive@^3.2.12: jquery "^3.5.1" jquery-validation ">=1.16" -jquery-validation@^1.19.3, jquery-validation@>=1.16: +jquery-validation@>=1.16, jquery-validation@^1.19.3: version "1.20.0" resolved "https://registry.npmjs.org/jquery-validation/-/jquery-validation-1.20.0.tgz" integrity sha512-c8tg4ltIIP6L7l0bZ79sRzOJYquyjS48kQZ6iv8MJ2r0OYztxtkWYKTReZyU2/zVFYiINB29i0Z/IRNNuJQN1g== -"jquery@^1.7 || ^2.0 || ^3.1", jquery@^3.5.1, jquery@>=1.10, jquery@>=1.12.0, "jquery@>=1.5.0 <4.0", jquery@>=1.6, jquery@>=1.7, jquery@>=1.7.2, "jquery@>=3.4.0 <4.0.0", "jquery@1.8 - 4", "jquery@1.9.1 - 3": +"jquery@1.8 - 4", jquery@>=1.10, jquery@>=1.12.0, "jquery@>=1.5.0 <4.0", jquery@>=1.6, jquery@>=1.7, jquery@>=1.7.2, "jquery@>=3.4.0 <4.0.0", jquery@^3.5.1: version "3.7.0" resolved "https://registry.npmjs.org/jquery/-/jquery-3.7.0.tgz" integrity sha512-umpJ0/k8X0MvD1ds0P9SfowREz2LenHsQaxSohMZ5OMNEU2r0tf8pdeEFTHMFxWVxKNyU9rTtK3CWzUCTKJUeQ== @@ -2239,21 +2229,7 @@ jwt-decode@^3.1.2: resolved "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz" integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== -kind-of@^3.0.2: - version "3.2.2" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^3.0.3: - version "3.2.2" - resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^3.2.0: +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== @@ -2389,45 +2365,7 @@ merge-stream@^2.0.0: resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -micromatch@^3.0.4: - version "3.1.10" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^3.1.10: - version "3.1.10" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^3.1.4: +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -2503,6 +2441,11 @@ mute-stdout@^1.0.0: resolved "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz" integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== +nan@^2.12.1: + version "2.22.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" + integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" @@ -2872,6 +2815,15 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +readable-stream@3: + version "3.6.2" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" @@ -2885,15 +2837,6 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@3: - version "3.6.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - readdirp@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz" @@ -3260,13 +3203,6 @@ stream-shift@^1.0.0: resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz" integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== -string_decoder@^1.1.1, string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - string-hash@^1.1.3: version "1.1.3" resolved "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz" @@ -3281,6 +3217,13 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +string_decoder@^1.1.1, string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" From cb22fbe326d1122702bb7a2576b79420a691234f Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Tue, 7 Jan 2025 15:04:54 -0800 Subject: [PATCH 05/28] AB#26819 report generator classes for worksheets --- .../Domain/Services/WorksheetsManager.cs | 8 +- .../WorksheetInstances/WorksheetInstance.cs | 11 +- .../Domain/Worksheets/Worksheet.cs | 9 +- .../CheckboxGroupReportDataGenerator.cs | 16 + .../DataGridReportDataGenerator.cs | 16 + .../DefaultReportDataGenerator.cs | 18 + .../DataGenerators/IReportingDataGenerator.cs | 9 + .../ReportingDataGeneratorBase.cs | 17 + .../ReportingDataGeneratorFactory.cs | 18 + .../ReportingDataGeneratorService.cs | 43 + .../CheckboxGroupReportingFieldsGenerator.cs | 2 +- .../DataGridReportingFieldsGenerator.cs | 2 +- .../DefaultReportingFieldsGenerator.cs | 5 +- .../IReportingFieldsGenerator.cs | 2 +- .../ReportingFieldsGeneratorBase.cs | 2 +- .../ReportingFieldsGeneratorFactory.cs | 2 +- .../ReportingFieldsGeneratorService.cs | 11 +- .../WorksheetsDynamicViewGeneratorEto.cs | 10 + .../WorksheetsDynamicViewGeneratorHandler.cs | 45 + .../Worksheets/WorksheetAppService.cs | 11 +- .../IApplicationFormVersionService.cs | 1 - .../GrantManagerFeaturesDefinitionProvider.cs | 8 +- .../ApplicationFormVersionAppService.cs | 5 +- ...=> SubmissionsDynamicViewGenerationEto.cs} | 2 +- ...SubmissionsDynamicViewGeneratorHandler.cs} | 10 +- .../20241213183520_AddDynamicViewGenerator.cs | 2 +- ...ksheetInstanceReportDataColumn.Designer.cs | 3345 +++++++++++++++++ ...22_AddWorksheetInstanceReportDataColumn.cs | 31 + ...dWorksheetDynamicViewGenerator.Designer.cs | 3345 +++++++++++++++++ ...215018_AddWorksheetDynamicViewGenerator.cs | 22 + .../GrantTenantDbContextModelSnapshot.cs | 4 + 31 files changed, 6988 insertions(+), 44 deletions(-) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DataGridReportDataGenerator.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DefaultReportDataGenerator.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/IReportingDataGenerator.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorBase.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorService.cs rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/{ => FieldGenerators}/CheckboxGroupReportingFieldsGenerator.cs (87%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/{ => FieldGenerators}/DataGridReportingFieldsGenerator.cs (87%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/{ => FieldGenerators}/DefaultReportingFieldsGenerator.cs (67%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/{ => FieldGenerators}/IReportingFieldsGenerator.cs (64%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/{ => FieldGenerators}/ReportingFieldsGeneratorBase.cs (89%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/{ => FieldGenerators}/ReportingFieldsGeneratorFactory.cs (92%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/{ => FieldGenerators}/ReportingFieldsGeneratorService.cs (77%) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorEto.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorHandler.cs rename applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/{DynamicViewGenerationEto.cs => SubmissionsDynamicViewGenerationEto.cs} (76%) rename applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/{DynamicViewGeneratorHandler.cs => SubmissionsDynamicViewGeneratorHandler.cs} (75%) create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107172722_AddWorksheetInstanceReportDataColumn.Designer.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107172722_AddWorksheetInstanceReportDataColumn.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107215018_AddWorksheetDynamicViewGenerator.Designer.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107215018_AddWorksheetDynamicViewGenerator.cs diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs index 3b9731832..88a492bb5 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs @@ -10,6 +10,7 @@ using Unity.Flex.Domain.WorksheetLinks; using Unity.Flex.Domain.Worksheets; using Unity.Flex.WorksheetInstances; +using Unity.Flex.Worksheets.Reporting.DataGenerators; using Unity.Flex.Worksheets.Values; using Volo.Abp.Domain.Services; @@ -68,6 +69,7 @@ public async Task UpdateWorksheetInstanceValueAsync(WorksheetInstance instance) var worksheet = await worksheetRepository.GetAsync(instance.WorksheetId, true); var fieldDefinitions = worksheet.Sections.SelectMany(s => s.Fields).ToList(); var instanceCurrentValue = new WorksheetInstanceValue(); + foreach (var field in instance.Values) { var fieldDefinition = fieldDefinitions.Find(s => s.Id == field.CustomFieldId); @@ -75,7 +77,10 @@ public async Task UpdateWorksheetInstanceValueAsync(WorksheetInstance instance) instanceCurrentValue.Values.Add(new FieldInstanceValue(fieldDefinition.Key, JsonNode.Parse(field.CurrentValue)?["value"]?.ToString() ?? string.Empty)); } + instance.SetValue(JsonSerializer.Serialize(instanceCurrentValue)); + + instance.SetReportingData(ReportingDataGeneratorService.GenerateData(worksheet, instanceCurrentValue)); } private void UpdateExistingWorksheetInstance(WorksheetInstance worksheetInstance, Worksheet? worksheet, List fields) @@ -206,6 +211,7 @@ public async Task CloneWorksheetAsync(Guid id) var highestVersion = worksheetVersions.Max(s => s.Version); var clonedWorksheet = new Worksheet(Guid.NewGuid(), $"{versionSplit[0]}-v{highestVersion + 1}", worksheet.Title); clonedWorksheet.SetVersion(highestVersion + 1); + foreach (var section in worksheet.Sections.OrderBy(s => s.Order)) { var clonedSection = new WorksheetSection(Guid.NewGuid(), section.Name); @@ -219,7 +225,7 @@ public async Task CloneWorksheetAsync(Guid id) var result = await worksheetRepository.InsertAsync(clonedWorksheet); return result; - } + } private static CustomField? FindCustomFieldByName(Worksheet? worksheet, string fieldName) { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetInstances/WorksheetInstance.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetInstances/WorksheetInstance.cs index 6d3cd5598..92142b201 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetInstances/WorksheetInstance.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetInstances/WorksheetInstance.cs @@ -27,6 +27,9 @@ public class WorksheetInstance : FullAuditedAggregateRoot, IMultiTenant, I public virtual Collection Values { get; private set; } = []; + [Column(TypeName = "jsonb")] + public virtual string ReportData { get; private set; } = "{}"; + protected WorksheetInstance() { /* This constructor is for ORMs to be used while getting the entity from the database. */ @@ -34,7 +37,7 @@ protected WorksheetInstance() public WorksheetInstance(Guid id, Guid worksheetId, - Guid correlationId, + Guid correlationId, string correlationProvider, Guid worksheetCorrelationId, string worksheetCorrelationProvider, @@ -66,5 +69,11 @@ public WorksheetInstance SetAnchor(string uiAnchor) UiAnchor = uiAnchor; return this; } + + public WorksheetInstance SetReportingData(string reportingData) + { + ReportData = reportingData; + return this; + } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/Worksheet.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/Worksheet.cs index 8f7cb64ab..71c011659 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/Worksheet.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/Worksheet.cs @@ -6,7 +6,6 @@ using Volo.Abp.Domain.Entities.Auditing; using Volo.Abp.MultiTenancy; using Unity.Flex.Worksheets; -using System.Text; namespace Unity.Flex.Domain.Worksheets { @@ -23,9 +22,9 @@ public class Worksheet : FullAuditedAggregateRoot, IMultiTenant public virtual Collection Links { get; private set; } = []; // For reporting purposes - public string ReportColumns { get; set; } = string.Empty; - public string ReportKeys { get; set; } = string.Empty; - public string ReportViewName { get; set; } = string.Empty; + public virtual string ReportColumns { get; set; } = string.Empty; + public virtual string ReportKeys { get; set; } = string.Empty; + public virtual string ReportViewName { get; set; } = string.Empty; protected Worksheet() { @@ -106,6 +105,6 @@ public Worksheet SetReportingFields(string keys, string columns, string reportVi ReportColumns = columns; ReportViewName = reportViewName; return this; - } + } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs new file mode 100644 index 000000000..2e8f97d8c --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Worksheets.Values; + +namespace Unity.Flex.Worksheets.Reporting.DataGenerators +{ + public class CheckboxGroupReportDataGenerator(CustomField customField, FieldInstanceValue value) + : ReportingDataGeneratorBase(customField, value), IReportingDataGenerator + { + public Dictionary> Generate() + { + throw new NotImplementedException(); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DataGridReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DataGridReportDataGenerator.cs new file mode 100644 index 000000000..bff0188f8 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DataGridReportDataGenerator.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Worksheets.Values; + +namespace Unity.Flex.Worksheets.Reporting.DataGenerators +{ + public class DataGridReportDataGenerator(CustomField customField, FieldInstanceValue value) + : ReportingDataGeneratorBase(customField, value), IReportingDataGenerator + { + public Dictionary> Generate() + { + throw new NotImplementedException(); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DefaultReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DefaultReportDataGenerator.cs new file mode 100644 index 000000000..cf02c9c28 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DefaultReportDataGenerator.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; +using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Worksheets.Values; + +namespace Unity.Flex.Worksheets.Reporting.DataGenerators +{ + public class DefaultReportDataGenerator(CustomField customField, FieldInstanceValue value) + : ReportingDataGeneratorBase(customField, value), IReportingDataGenerator + { + public Dictionary> Generate() + { + return new Dictionary> + { + { value.Key, new List() { value.Value } } + }; + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/IReportingDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/IReportingDataGenerator.cs new file mode 100644 index 000000000..09117b0ee --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/IReportingDataGenerator.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; + +namespace Unity.Flex.Worksheets.Reporting.DataGenerators +{ + public interface IReportingDataGenerator + { + Dictionary> Generate(); + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorBase.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorBase.cs new file mode 100644 index 000000000..da3eb20eb --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorBase.cs @@ -0,0 +1,17 @@ +using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Worksheets.Values; + +namespace Unity.Flex.Worksheets.Reporting.DataGenerators +{ + public class ReportingDataGeneratorBase + { + protected CustomField customField; + protected FieldInstanceValue value; + + protected ReportingDataGeneratorBase(CustomField customField, FieldInstanceValue value) + { + this.customField = customField; + this.value = value; + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs new file mode 100644 index 000000000..e6780c665 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs @@ -0,0 +1,18 @@ +using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Worksheets.Values; + +namespace Unity.Flex.Worksheets.Reporting.DataGenerators +{ + public static class ReportingDataGeneratorFactory + { + public static IReportingDataGenerator Create(CustomField customField, FieldInstanceValue value) + { + return customField.Type switch + { + CustomFieldType.CheckboxGroup => new CheckboxGroupReportDataGenerator(customField, value), + CustomFieldType.DataGrid => new DataGridReportDataGenerator(customField, value), + _ => new DefaultReportDataGenerator(customField, value), + }; + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorService.cs new file mode 100644 index 000000000..63e4588e0 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorService.cs @@ -0,0 +1,43 @@ +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; +using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Worksheets.Values; + +namespace Unity.Flex.Worksheets.Reporting.DataGenerators +{ + public static class ReportingDataGeneratorService + { + public static string GenerateData(Worksheet worksheet, WorksheetInstanceValue instanceCurrentValue) + { + var reportData = new Dictionary>(); + var reportingKeys = worksheet.ReportColumns.Split('|'); + + foreach (var reportKey in reportingKeys) + { + reportData.Add(reportKey, []); + } + + var definitions = worksheet.Sections.SelectMany(s => s.Fields).ToList(); + foreach (var value in instanceCurrentValue.Values) + { + var definition = definitions.Find(s => s.Key == value.Key); + if (definition != null) + { + var keyValues = ReportingDataGeneratorFactory + .Create(definition, value) + .Generate(); + + foreach (var keyValue in from keyValue in keyValues + where reportData.ContainsKey(keyValue.Key) + select keyValue) + { + reportData[keyValue.Key] = keyValue.Value; + } + } + } + + return JsonSerializer.Serialize(reportData); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/CheckboxGroupReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/CheckboxGroupReportingFieldsGenerator.cs similarity index 87% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/CheckboxGroupReportingFieldsGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/CheckboxGroupReportingFieldsGenerator.cs index 537a1c4a7..de5432dc7 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/CheckboxGroupReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/CheckboxGroupReportingFieldsGenerator.cs @@ -1,7 +1,7 @@ using System; using Unity.Flex.Domain.Worksheets; -namespace Unity.Flex.Worksheets.Reporting +namespace Unity.Flex.Worksheets.Reporting.FieldGenerators { public class CheckboxGroupReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) : ReportingFieldsGeneratorBase(customField, separator, maxColumnLength), IReportingFieldsGenerator diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGridReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/DataGridReportingFieldsGenerator.cs similarity index 87% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGridReportingFieldsGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/DataGridReportingFieldsGenerator.cs index 1120519b8..cbba53d0d 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGridReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/DataGridReportingFieldsGenerator.cs @@ -1,7 +1,7 @@ using System; using Unity.Flex.Domain.Worksheets; -namespace Unity.Flex.Worksheets.Reporting +namespace Unity.Flex.Worksheets.Reporting.FieldGenerators { public class DataGridReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) : ReportingFieldsGeneratorBase(customField, separator, maxColumnLength), IReportingFieldsGenerator diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DefaultReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/DefaultReportingFieldsGenerator.cs similarity index 67% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DefaultReportingFieldsGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/DefaultReportingFieldsGenerator.cs index 8f3ea1699..3704796af 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DefaultReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/DefaultReportingFieldsGenerator.cs @@ -1,13 +1,14 @@ using Unity.Flex.Domain.Worksheets; -namespace Unity.Flex.Worksheets.Reporting +namespace Unity.Flex.Worksheets.Reporting.FieldGenerators { public class DefaultReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) : ReportingFieldsGeneratorBase(customField, separator, maxColumnLength), IReportingFieldsGenerator { public (string columns, string keys) Generate() { - return (customField.Name, customField.Key); + // We intentionally use the key twice here + return (customField.Key, customField.Key); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/IReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/IReportingFieldsGenerator.cs similarity index 64% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/IReportingFieldsGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/IReportingFieldsGenerator.cs index 5e829efd9..2bf36ac71 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/IReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/IReportingFieldsGenerator.cs @@ -1,4 +1,4 @@ -namespace Unity.Flex.Worksheets.Reporting +namespace Unity.Flex.Worksheets.Reporting.FieldGenerators { public interface IReportingFieldsGenerator { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorBase.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorBase.cs similarity index 89% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorBase.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorBase.cs index bc26ffd08..7b9d575f9 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorBase.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorBase.cs @@ -1,6 +1,6 @@ using Unity.Flex.Domain.Worksheets; -namespace Unity.Flex.Worksheets.Reporting +namespace Unity.Flex.Worksheets.Reporting.FieldGenerators { public class ReportingFieldsGeneratorBase { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorFactory.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs similarity index 92% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorFactory.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs index 4b656c8ac..7106af76e 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorFactory.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs @@ -1,6 +1,6 @@ using Unity.Flex.Domain.Worksheets; -namespace Unity.Flex.Worksheets.Reporting +namespace Unity.Flex.Worksheets.Reporting.FieldGenerators { public static class ReportingFieldsGeneratorFactory { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs similarity index 77% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorService.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs index 5f5e04ae2..e03374ee7 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/ReportingFieldsGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs @@ -1,20 +1,19 @@ using System.Linq; using System.Text; using Unity.Flex.Domain.Worksheets; -using Volo.Abp.Application.Services; -namespace Unity.Flex.Worksheets.Reporting +namespace Unity.Flex.Worksheets.Reporting.FieldGenerators { - public class ReportingFieldsGeneratorService() : ApplicationService + public static class ReportingFieldsGeneratorService { - internal Worksheet GenerateAndSet(Worksheet worksheet, char separator = '|', uint maxColumnLength = 63) + public static Worksheet GenerateAndSet(Worksheet worksheet, char separator = '|', uint maxColumnLength = 63) { var (reportingKeys, reportingColumns, reportViewName) = GenerateReportingFields(worksheet, separator, maxColumnLength); worksheet.SetReportingFields(reportingKeys, reportingColumns, reportViewName); return worksheet; } - private (string reportingKeys, string reportingColumns, string reportViewName) GenerateReportingFields(Worksheet worksheet, + private static (string reportingKeys, string reportingColumns, string reportViewName) GenerateReportingFields(Worksheet worksheet, char separator, uint maxColumnLength) { @@ -43,7 +42,7 @@ internal Worksheet GenerateAndSet(Worksheet worksheet, char separator = '|', uin keysBuilder.Length--; // Remove the last separator } - return new(columnsBuilder.ToString(), keysBuilder.ToString(), worksheet.Name); + return new(columnsBuilder.ToString(), keysBuilder.ToString(), $"WS-{worksheet.Name.ToUpper()}"); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorEto.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorEto.cs new file mode 100644 index 000000000..6652dc11e --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorEto.cs @@ -0,0 +1,10 @@ +using System; + +namespace Unity.Flex.Worksheets.Reporting +{ + public class WorksheetsDynamicViewGeneratorEto + { + public Guid TenantId { get; set; } + public Guid WorksheetId { get; set; } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorHandler.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorHandler.cs new file mode 100644 index 000000000..c48315197 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorHandler.cs @@ -0,0 +1,45 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using System; +using System.Threading.Tasks; +using Unity.Flex.Domain.Worksheets; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.EventBus; +using Volo.Abp.MultiTenancy; +using Volo.Abp.Uow; + +namespace Unity.Flex.Worksheets.Reporting +{ + public class WorksheetsDynamicViewGeneratorHandler( + IWorksheetRepository worksheetRepository, + ICurrentTenant currentTenant, + IUnitOfWorkManager unitOfWorkManager, + ILogger logger) : ILocalEventHandler, ITransientDependency + { + public async Task HandleEventAsync(WorksheetsDynamicViewGeneratorEto viewGenerationEvent) + { + try + { + using (currentTenant.Change(viewGenerationEvent.TenantId)) + { + using var uow = unitOfWorkManager.Begin(isTransactional: false); + var worksheet = await worksheetRepository.GetAsync(viewGenerationEvent.WorksheetId); + + if (worksheet != null) + { + var dbContext = await worksheetRepository.GetDbContextAsync(); + FormattableString sql = $@"CALL generate_worksheets_view({viewGenerationEvent.WorksheetId});"; + await dbContext.Database.ExecuteSqlAsync(sql); + } + + await uow.CompleteAsync(); + } + } + catch (Exception ex) + { + logger.LogError(ex, "{ErrorMessage}", ex.Message); + } + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs index 3ccbf4ab0..64dd6ca92 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs @@ -8,15 +8,14 @@ using Unity.Flex.Domain.Settings; using Unity.Flex.Domain.Utils; using Unity.Flex.Domain.Worksheets; -using Unity.Flex.Worksheets.Reporting; +using Unity.Flex.Worksheets.Reporting.FieldGenerators; using Volo.Abp; namespace Unity.Flex.Worksheets { [Authorize] - public partial class WorksheetAppService(IWorksheetRepository worksheetRepository, - WorksheetsManager worksheetsManager, - ReportingFieldsGeneratorService reportingFieldsGeneratorService) : FlexAppService, IWorksheetAppService + public partial class WorksheetAppService(IWorksheetRepository worksheetRepository, + WorksheetsManager worksheetsManager) : FlexAppService, IWorksheetAppService { public virtual async Task GetAsync(Guid id) { @@ -109,10 +108,10 @@ public virtual async Task PublishAsync(Guid id) _ = worksheet.SetPublished(true); - _ = reportingFieldsGeneratorService.GenerateAndSet(worksheet); + _ = ReportingFieldsGeneratorService.GenerateAndSet(worksheet); return await Task.FromResult(true); - } + } public virtual async Task DeleteAsync(Guid id) { diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/ApplicationForms/IApplicationFormVersionService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/ApplicationForms/IApplicationFormVersionService.cs index f12e759f9..1edd93147 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/ApplicationForms/IApplicationFormVersionService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/ApplicationForms/IApplicationFormVersionService.cs @@ -2,7 +2,6 @@ using System; using System.Threading.Tasks; using Unity.GrantManager.Forms; -using Volo.Abp; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/GrantManagerFeaturesDefinitionProvider.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/GrantManagerFeaturesDefinitionProvider.cs index 668d0dc8a..603c42610 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/GrantManagerFeaturesDefinitionProvider.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/GrantManagerFeaturesDefinitionProvider.cs @@ -13,7 +13,7 @@ public override void Define(IFeatureDefinitionContext context) { var myGroup = context.AddGroup("GrantManager"); - myGroup.AddFeature("Unity.Payments", + myGroup.AddFeature("Unity.Payments", defaultValue: "false", displayName: LocalizableString .Create("Payments"), @@ -30,12 +30,6 @@ public override void Define(IFeatureDefinitionContext context) displayName: LocalizableString .Create("Flex"), valueType: new ToggleStringValueType()); - - myGroup.AddFeature("Unity.Reporting", - defaultValue: "false", - displayName: LocalizableString - .Create("Enable Reporting Module"), - valueType: new ToggleStringValueType()); } } } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs index 7f3a142cb..95a52cc34 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs @@ -12,7 +12,6 @@ using Unity.GrantManager.Reporting; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; -using Volo.Abp.BackgroundJobs; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; using Volo.Abp.EventBus.Local; @@ -305,7 +304,7 @@ public async Task UpdateOrCreateApplicationFormVersio private async Task QueueDynamicViewGeneratorAsync(ApplicationFormVersion applicationFormVersion) { await _localEventBus.PublishAsync( - new DynamicViewGenerationEto + new SubmissionsDynamicViewGenerationEto { ApplicationFormVersionId = applicationFormVersion.Id, TenantId = CurrentTenant.Id @@ -362,7 +361,7 @@ private async Task UpdateFormVersionWithReportKeysAndColumnsAsync(ApplicationFor applicationFormVersion.ReportColumns = truncatedDelimitedKeys; applicationFormVersion.ReportKeys = pipeDelimitedKeys; - applicationFormVersion.ReportViewName = $"{form.ApplicationFormName}-V{applicationFormVersion.Version}"; + applicationFormVersion.ReportViewName = $"FS-{form.ApplicationFormName?.Replace(" ", "")}-V{applicationFormVersion.Version}"; } private static string[] ExtractNestedKeys(JProperty jProperty) diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGenerationEto.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/SubmissionsDynamicViewGenerationEto.cs similarity index 76% rename from applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGenerationEto.cs rename to applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/SubmissionsDynamicViewGenerationEto.cs index ba3d94d3f..51792f32a 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGenerationEto.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/SubmissionsDynamicViewGenerationEto.cs @@ -2,7 +2,7 @@ namespace Unity.GrantManager.Reporting { - public class DynamicViewGenerationEto + public class SubmissionsDynamicViewGenerationEto { public Guid ApplicationFormVersionId { get; set; } public Guid? TenantId { get; set; } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGeneratorHandler.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/SubmissionsDynamicViewGeneratorHandler.cs similarity index 75% rename from applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGeneratorHandler.cs rename to applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/SubmissionsDynamicViewGeneratorHandler.cs index 24954889d..f5a7e9340 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DynamicViewGeneratorHandler.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/SubmissionsDynamicViewGeneratorHandler.cs @@ -11,13 +11,13 @@ namespace Unity.GrantManager.Reporting { - public class DynamicViewGeneratorHandler( + public class SubmissionsDynamicViewGeneratorHandler( IApplicationFormVersionRepository applicationFormVersionRepository, ICurrentTenant currentTenant, IUnitOfWorkManager unitOfWorkManager, - ILogger logger) : ILocalEventHandler, ITransientDependency + ILogger logger) : ILocalEventHandler, ITransientDependency { - public async Task HandleEventAsync(DynamicViewGenerationEto viewGenerationEvent) + public async Task HandleEventAsync(SubmissionsDynamicViewGenerationEto viewGenerationEvent) { try { @@ -29,7 +29,7 @@ public async Task HandleEventAsync(DynamicViewGenerationEto viewGenerationEvent) if (applicationFormVersion != null) { var dbContext = await applicationFormVersionRepository.GetDbContextAsync(); - FormattableString sql = $@"CALL generate_view({viewGenerationEvent.ApplicationFormVersionId});"; + FormattableString sql = $@"CALL generate_submissions_view({viewGenerationEvent.ApplicationFormVersionId});"; await dbContext.Database.ExecuteSqlAsync(sql); } @@ -38,7 +38,7 @@ public async Task HandleEventAsync(DynamicViewGenerationEto viewGenerationEvent) } catch (Exception ex) { - logger.LogError("{errorMessage}", ex.Message); + logger.LogError(ex, "{ErrorMessage}", ex.Message); } } } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213183520_AddDynamicViewGenerator.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213183520_AddDynamicViewGenerator.cs index 0447ff86d..99149ca27 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213183520_AddDynamicViewGenerator.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20241213183520_AddDynamicViewGenerator.cs @@ -10,7 +10,7 @@ public partial class AddDynamicViewGenerator : Migration /// protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.Sql("CREATE OR REPLACE PROCEDURE generate_view(table_a_id UUID) AS $$\r\nDECLARE\r\n view_name TEXT;\r\n view_columns TEXT;\r\n view_keys TEXT;\r\n column_definitions TEXT;\r\n column_names TEXT[];\r\n key_names TEXT[];\r\n select_clause TEXT;\r\nBEGIN\r\n -- Fetch the name, columns, and keys from Table A\r\n SELECT \"ReportViewName\", \"ReportColumns\", \"ReportKeys\" INTO view_name, view_columns, view_keys\r\n FROM \"ApplicationFormVersion\"\r\n WHERE \"Id\" = table_a_id;\r\n\r\n -- Split the columns and keys into individual names using pipe delimiter\r\n column_names := string_to_array(view_columns, '|');\r\n key_names := string_to_array(view_keys, '|');\r\n\r\n -- Create the column definitions for the view\r\n column_definitions := '';\r\n FOR i IN 1..array_length(column_names, 1) LOOP\r\n column_definitions := column_definitions || format('%I TEXT', column_names[i]);\r\n IF i < array_length(column_names, 1) THEN\r\n column_definitions := column_definitions || ', ';\r\n END IF;\r\n END LOOP;\r\n\r\n -- Create the select clause for the view\r\n select_clause := '';\r\n FOR i IN 1..array_length(key_names, 1) LOOP\r\n IF i > 1 THEN\r\n select_clause := select_clause || ', ';\r\n END IF;\r\n select_clause := select_clause || format(\r\n 'COALESCE((\r\n SELECT value::TEXT\r\n FROM jsonb_each_text(\"ReportData\")\r\n WHERE key = %L\r\n LIMIT 1\r\n ), '''') AS %I',\r\n key_names[i], column_names[i]\r\n );\r\n END LOOP;\r\n\r\n -- Drop the view if it already exists to avoid type conflicts\r\n EXECUTE format('DROP VIEW IF EXISTS %I', view_name);\r\n\r\n -- Create the view query dynamically\r\n EXECUTE format('CREATE VIEW %I AS SELECT \"Id\", %s FROM (SELECT \"Id\", \"ReportData\" FROM \"ApplicationFormSubmissions\" WHERE \"ApplicationFormSubmissions\".\"ApplicationFormVersionId\" = %L) AS subquery',\r\n view_name,\r\n select_clause,\r\n table_a_id\r\n );\r\nEND;\r\n$$ LANGUAGE plpgsql;\r\n"); + migrationBuilder.Sql("CREATE OR REPLACE PROCEDURE generate_submissions_view(table_a_id UUID) AS $$\r\nDECLARE\r\n view_name TEXT;\r\n view_columns TEXT;\r\n view_keys TEXT;\r\n column_definitions TEXT;\r\n column_names TEXT[];\r\n key_names TEXT[];\r\n select_clause TEXT;\r\nBEGIN\r\n -- Fetch the name, columns, and keys from Table A\r\n SELECT \"ReportViewName\", \"ReportColumns\", \"ReportKeys\" INTO view_name, view_columns, view_keys\r\n FROM \"ApplicationFormVersion\"\r\n WHERE \"Id\" = table_a_id;\r\n\r\n -- Split the columns and keys into individual names using pipe delimiter\r\n column_names := string_to_array(view_columns, '|');\r\n key_names := string_to_array(view_keys, '|');\r\n\r\n -- Create the column definitions for the view\r\n column_definitions := '';\r\n FOR i IN 1..array_length(column_names, 1) LOOP\r\n column_definitions := column_definitions || format('%I TEXT', column_names[i]);\r\n IF i < array_length(column_names, 1) THEN\r\n column_definitions := column_definitions || ', ';\r\n END IF;\r\n END LOOP;\r\n\r\n -- Create the select clause for the view\r\n select_clause := '';\r\n FOR i IN 1..array_length(key_names, 1) LOOP\r\n IF i > 1 THEN\r\n select_clause := select_clause || ', ';\r\n END IF;\r\n select_clause := select_clause || format(\r\n 'COALESCE((\r\n SELECT value::TEXT\r\n FROM jsonb_each_text(\"ReportData\")\r\n WHERE key = %L\r\n LIMIT 1\r\n ), '''') AS %I',\r\n key_names[i], column_names[i]\r\n );\r\n END LOOP;\r\n\r\n -- Drop the view if it already exists to avoid type conflicts\r\n EXECUTE format('DROP VIEW IF EXISTS %I', view_name);\r\n\r\n -- Create the view query dynamically\r\n EXECUTE format('CREATE VIEW %I AS SELECT \"Id\", %s FROM (SELECT \"Id\", \"ReportData\" FROM \"ApplicationFormSubmissions\" WHERE \"ApplicationFormSubmissions\".\"ApplicationFormVersionId\" = %L) AS subquery',\r\n view_name,\r\n select_clause,\r\n table_a_id\r\n );\r\nEND;\r\n$$ LANGUAGE plpgsql;\r\n"); } /// diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107172722_AddWorksheetInstanceReportDataColumn.Designer.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107172722_AddWorksheetInstanceReportDataColumn.Designer.cs new file mode 100644 index 000000000..aa1761e80 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107172722_AddWorksheetInstanceReportDataColumn.Designer.cs @@ -0,0 +1,3345 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Unity.GrantManager.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + [DbContext(typeof(GrantTenantDbContext))] + [Migration("20250107172722_AddWorksheetInstanceReportDataColumn")] + partial class AddWorksheetInstanceReportDataColumn + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("ScoresheetInstanceId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("QuestionId"); + + b.HasIndex("ScoresheetInstanceId"); + + b.ToTable("Answers", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("Questions", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Scoresheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("CustomFieldId") + .HasColumnType("uuid"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetInstanceId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetInstanceId"); + + b.ToTable("CustomFieldValues", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetCorrelationId") + .HasColumnType("uuid"); + + b.Property("WorksheetCorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("WorksheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetLinks", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("CustomFields", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Worksheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantName") + .IsRequired() + .HasMaxLength(600) + .HasColumnType("character varying(600)"); + + b.Property("ApproxNumberOfEmployees") + .HasColumnType("text"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FiscalDay") + .HasColumnType("integer"); + + b.Property("FiscalMonth") + .HasColumnType("text"); + + b.Property("IndigenousOrgInd") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MatchPercentage") + .HasColumnType("numeric"); + + b.Property("NonRegisteredBusinessName") + .HasColumnType("text"); + + b.Property("OrgName") + .HasColumnType("text"); + + b.Property("OrgNumber") + .HasColumnType("text"); + + b.Property("OrgStatus") + .HasColumnType("text"); + + b.Property("OrganizationSize") + .HasColumnType("text"); + + b.Property("OrganizationType") + .HasColumnType("text"); + + b.Property("RedStop") + .HasColumnType("boolean"); + + b.Property("Sector") + .HasColumnType("text"); + + b.Property("SectorSubSectorIndustryDesc") + .HasColumnType("text"); + + b.Property("StartedOperatingDate") + .HasColumnType("date"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SubSector") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UnityApplicantId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantName"); + + b.ToTable("Applicants", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AddressType") + .HasColumnType("integer"); + + b.Property("ApplicantId") + .IsRequired() + .HasColumnType("uuid"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Postal") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("Street2") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Unit") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.ToTable("ApplicantAddresses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("BceidBusinessGuid") + .HasColumnType("uuid"); + + b.Property("BceidBusinessName") + .HasColumnType("text"); + + b.Property("BceidUserGuid") + .HasColumnType("uuid"); + + b.Property("BceidUserName") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactOrder") + .HasColumnType("integer"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IdentityEmail") + .HasColumnType("text"); + + b.Property("IdentityName") + .HasColumnType("text"); + + b.Property("IdentityProvider") + .HasColumnType("text"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsConfirmed") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSubUser") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Phone2") + .HasColumnType("text"); + + b.Property("Phone2Extension") + .HasColumnType("text"); + + b.Property("PhoneExtension") + .HasColumnType("text"); + + b.Property("RoleForApplicant") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationId") + .IsUnique(); + + b.HasIndex("OidcSubUser"); + + b.ToTable("ApplicantAgents", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Acquisition") + .HasColumnType("text"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationStatusId") + .HasColumnType("uuid"); + + b.Property("ApprovedAmount") + .HasColumnType("numeric"); + + b.Property("AssessmentResultDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AssessmentResultStatus") + .HasColumnType("text"); + + b.Property("AssessmentStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Community") + .HasColumnType("text"); + + b.Property("CommunityPopulation") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractExecutionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ContractNumber") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeclineRational") + .HasColumnType("text"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("DueDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DueDiligenceStatus") + .HasColumnType("text"); + + b.Property("EconomicRegion") + .HasColumnType("text"); + + b.Property("ElectoralDistrict") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinalDecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("Forestry") + .HasColumnType("text"); + + b.Property("ForestryFocus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LikelihoodOfFunding") + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("NotificationDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("Payload") + .HasColumnType("jsonb"); + + b.Property("PercentageTotalProjectBudget") + .HasColumnType("double precision"); + + b.Property("Place") + .HasColumnType("text"); + + b.Property("ProjectEndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectFundingTotal") + .HasColumnType("numeric"); + + b.Property("ProjectName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("ProjectStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectSummary") + .HasColumnType("text"); + + b.Property("ProposalDate") + .HasColumnType("timestamp without time zone"); + + b.Property("RecommendedAmount") + .HasColumnType("numeric"); + + b.Property("ReferenceNo") + .IsRequired() + .HasColumnType("text"); + + b.Property("RegionalDistrict") + .HasColumnType("text"); + + b.Property("RequestedAmount") + .HasColumnType("numeric"); + + b.Property("RiskRanking") + .HasColumnType("text"); + + b.Property("SigningAuthorityBusinessPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityCellPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityEmail") + .HasColumnType("text"); + + b.Property("SigningAuthorityFullName") + .HasColumnType("text"); + + b.Property("SigningAuthorityTitle") + .HasColumnType("text"); + + b.Property("SubStatus") + .HasColumnType("text"); + + b.Property("SubmissionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TotalProjectBudget") + .HasColumnType("numeric"); + + b.Property("TotalScore") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.HasIndex("ApplicationStatusId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Applications", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssigneeId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Duty") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssigneeId"); + + b.ToTable("ApplicationAssignments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsFileId") + .HasColumnType("text"); + + b.Property("ChefsSumbissionId") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationChefsFileAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactEmail") + .HasColumnType("text"); + + b.Property("ContactFullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactMobilePhone") + .HasColumnType("text"); + + b.Property("ContactTitle") + .HasColumnType("text"); + + b.Property("ContactType") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactWorkPhone") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationContact", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApiKey") + .HasColumnType("text"); + + b.Property("ApplicationFormDescription") + .HasColumnType("text"); + + b.Property("ApplicationFormName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("AttemptedConnectionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("Category") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsCriteriaFormGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConnectionHttpStatus") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeId") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Payable") + .HasColumnType("boolean"); + + b.Property("RenderFormIoToHtml") + .HasColumnType("boolean"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("IntakeId"); + + b.ToTable("ApplicationForms", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormVersionId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsSubmissionGuid") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FormVersionId") + .HasColumnType("uuid"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("RenderedHTML") + .HasColumnType("text"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Submission") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormSubmissions", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsFormVersionGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SubmissionHeaderMapping") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormVersion", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LinkedApplicationId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationLinks", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StatusCode") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("StatusCode") + .IsUnique(); + + b.ToTable("ApplicationStatuses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationTags", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.ToTable("AssessmentAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ApprovalRecommended") + .HasColumnType("boolean"); + + b.Property("AssessorId") + .HasColumnType("uuid"); + + b.Property("CleanGrowth") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("EconomicImpact") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinancialAnalysis") + .HasColumnType("integer"); + + b.Property("InclusiveGrowth") + .HasColumnType("integer"); + + b.Property("IsComplete") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssessorId"); + + b.ToTable("Assessments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("CommenterId"); + + b.ToTable("ApplicationComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.HasIndex("CommenterId"); + + b.ToTable("AssessmentComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Identity.Person", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Badge") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcDisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("OidcSub"); + + b.ToTable("Persons", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Intakes.Intake", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Budget") + .HasColumnType("double precision"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Intakes", (string)null); + }); + + modelBuilder.Entity("Unity.Notifications.Emails.EmailLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("BodyType") + .IsRequired() + .HasColumnType("text"); + + b.Property("CC") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesMsgId") + .HasColumnType("uuid"); + + b.Property("ChesResponse") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FromAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Priority") + .IsRequired() + .HasColumnType("text"); + + b.Property("RetryAttempts") + .HasColumnType("integer"); + + b.Property("SendOnDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SentDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tag") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("ToAddress") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EmailLogs", "Notifications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentConfigurations.PaymentConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MinistryClient") + .HasColumnType("text"); + + b.Property("PaymentIdPrefix") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentThreshold") + .HasColumnType("numeric"); + + b.Property("ProjectNumber") + .HasColumnType("text"); + + b.Property("Responsibility") + .HasColumnType("text"); + + b.Property("ServiceLine") + .HasColumnType("text"); + + b.Property("Stob") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("PaymentConfigurations", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PaymentRequestId"); + + b.ToTable("ExpenseApprovals", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("numeric"); + + b.Property("BatchName") + .IsRequired() + .HasColumnType("text"); + + b.Property("BatchNumber") + .HasColumnType("numeric"); + + b.Property("CasHttpStatusCode") + .HasColumnType("integer"); + + b.Property("CasResponse") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InvoiceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("InvoiceStatus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRecon") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PayeeName") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("text"); + + b.Property("PaymentNumber") + .HasColumnType("text"); + + b.Property("PaymentStatus") + .HasColumnType("text"); + + b.Property("ReferenceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("RequesterName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SiteId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("SupplierNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ReferenceNumber") + .IsUnique(); + + b.HasIndex("SiteId"); + + b.ToTable("PaymentRequests", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddressLine1") + .HasColumnType("text"); + + b.Property("AddressLine2") + .HasColumnType("text"); + + b.Property("AddressLine3") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EFTAdvicePref") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCas") + .HasColumnType("timestamp without time zone"); + + b.Property("Number") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentGroup") + .HasColumnType("integer"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SiteProtected") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("SupplierId"); + + b.ToTable("Sites", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCAS") + .HasColumnType("timestamp without time zone"); + + b.Property("MailingAddress") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SIN") + .HasColumnType("text"); + + b.Property("StandardIndustryClassification") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("Subcategory") + .HasColumnType("text"); + + b.Property("SupplierProtected") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Suppliers", "Payments"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Instances") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Question", "Question") + .WithMany("Answers") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", null) + .WithMany("Answers") + .HasForeignKey("ScoresheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.ScoresheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Sections") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.HasOne("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", null) + .WithMany("Values") + .HasForeignKey("WorksheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Links") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.WorksheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Sections") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany("ApplicantAddresses") + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Applicant"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithOne("ApplicantAgent") + .HasForeignKey("Unity.GrantManager.Applications.ApplicantAgent", "ApplicationId"); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("OidcSubUser") + .HasPrincipalKey("OidcSub"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", "ApplicationForm") + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationStatus", "ApplicationStatus") + .WithMany("Applications") + .HasForeignKey("ApplicationStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.NoAction); + + b.Navigation("Applicant"); + + b.Navigation("ApplicationForm"); + + b.Navigation("ApplicationStatus"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationAssignments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Assignee") + .WithMany() + .HasForeignKey("AssigneeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Application"); + + b.Navigation("Assignee"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.HasOne("Unity.GrantManager.Intakes.Intake", null) + .WithMany() + .HasForeignKey("IntakeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationTags") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("Assessments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("AssessorId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.HasOne("Unity.Payments.Domain.PaymentRequests.PaymentRequest", "PaymentRequest") + .WithMany("ExpenseApprovals") + .HasForeignKey("PaymentRequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentRequest"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Site", "Site") + .WithMany() + .HasForeignKey("SiteId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Site"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Supplier", "Supplier") + .WithMany("Sites") + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Navigation("Values"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Navigation("Links"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Navigation("ApplicantAddresses"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Navigation("ApplicantAgent"); + + b.Navigation("ApplicationAssignments"); + + b.Navigation("ApplicationTags"); + + b.Navigation("Assessments"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Navigation("ExpenseApprovals"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Navigation("Sites"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107172722_AddWorksheetInstanceReportDataColumn.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107172722_AddWorksheetInstanceReportDataColumn.cs new file mode 100644 index 000000000..6032aab3d --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107172722_AddWorksheetInstanceReportDataColumn.cs @@ -0,0 +1,31 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + /// + public partial class AddWorksheetInstanceReportDataColumn : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "ReportData", + schema: "Flex", + table: "WorksheetInstances", + type: "jsonb", + nullable: false, + defaultValue: ""); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ReportData", + schema: "Flex", + table: "WorksheetInstances"); + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107215018_AddWorksheetDynamicViewGenerator.Designer.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107215018_AddWorksheetDynamicViewGenerator.Designer.cs new file mode 100644 index 000000000..5870de4e4 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107215018_AddWorksheetDynamicViewGenerator.Designer.cs @@ -0,0 +1,3345 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Unity.GrantManager.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + [DbContext(typeof(GrantTenantDbContext))] + [Migration("20250107215018_AddWorksheetDynamicViewGenerator")] + partial class AddWorksheetDynamicViewGenerator + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("ScoresheetInstanceId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("QuestionId"); + + b.HasIndex("ScoresheetInstanceId"); + + b.ToTable("Answers", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("Questions", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Scoresheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("CustomFieldId") + .HasColumnType("uuid"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetInstanceId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetInstanceId"); + + b.ToTable("CustomFieldValues", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetCorrelationId") + .HasColumnType("uuid"); + + b.Property("WorksheetCorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("WorksheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetLinks", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("CustomFields", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Worksheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantName") + .IsRequired() + .HasMaxLength(600) + .HasColumnType("character varying(600)"); + + b.Property("ApproxNumberOfEmployees") + .HasColumnType("text"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FiscalDay") + .HasColumnType("integer"); + + b.Property("FiscalMonth") + .HasColumnType("text"); + + b.Property("IndigenousOrgInd") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MatchPercentage") + .HasColumnType("numeric"); + + b.Property("NonRegisteredBusinessName") + .HasColumnType("text"); + + b.Property("OrgName") + .HasColumnType("text"); + + b.Property("OrgNumber") + .HasColumnType("text"); + + b.Property("OrgStatus") + .HasColumnType("text"); + + b.Property("OrganizationSize") + .HasColumnType("text"); + + b.Property("OrganizationType") + .HasColumnType("text"); + + b.Property("RedStop") + .HasColumnType("boolean"); + + b.Property("Sector") + .HasColumnType("text"); + + b.Property("SectorSubSectorIndustryDesc") + .HasColumnType("text"); + + b.Property("StartedOperatingDate") + .HasColumnType("date"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SubSector") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UnityApplicantId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantName"); + + b.ToTable("Applicants", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AddressType") + .HasColumnType("integer"); + + b.Property("ApplicantId") + .IsRequired() + .HasColumnType("uuid"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Postal") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("Street2") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Unit") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.ToTable("ApplicantAddresses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("BceidBusinessGuid") + .HasColumnType("uuid"); + + b.Property("BceidBusinessName") + .HasColumnType("text"); + + b.Property("BceidUserGuid") + .HasColumnType("uuid"); + + b.Property("BceidUserName") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactOrder") + .HasColumnType("integer"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IdentityEmail") + .HasColumnType("text"); + + b.Property("IdentityName") + .HasColumnType("text"); + + b.Property("IdentityProvider") + .HasColumnType("text"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsConfirmed") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSubUser") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Phone2") + .HasColumnType("text"); + + b.Property("Phone2Extension") + .HasColumnType("text"); + + b.Property("PhoneExtension") + .HasColumnType("text"); + + b.Property("RoleForApplicant") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationId") + .IsUnique(); + + b.HasIndex("OidcSubUser"); + + b.ToTable("ApplicantAgents", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Acquisition") + .HasColumnType("text"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationStatusId") + .HasColumnType("uuid"); + + b.Property("ApprovedAmount") + .HasColumnType("numeric"); + + b.Property("AssessmentResultDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AssessmentResultStatus") + .HasColumnType("text"); + + b.Property("AssessmentStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Community") + .HasColumnType("text"); + + b.Property("CommunityPopulation") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractExecutionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ContractNumber") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeclineRational") + .HasColumnType("text"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("DueDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DueDiligenceStatus") + .HasColumnType("text"); + + b.Property("EconomicRegion") + .HasColumnType("text"); + + b.Property("ElectoralDistrict") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinalDecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("Forestry") + .HasColumnType("text"); + + b.Property("ForestryFocus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LikelihoodOfFunding") + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("NotificationDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("Payload") + .HasColumnType("jsonb"); + + b.Property("PercentageTotalProjectBudget") + .HasColumnType("double precision"); + + b.Property("Place") + .HasColumnType("text"); + + b.Property("ProjectEndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectFundingTotal") + .HasColumnType("numeric"); + + b.Property("ProjectName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("ProjectStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectSummary") + .HasColumnType("text"); + + b.Property("ProposalDate") + .HasColumnType("timestamp without time zone"); + + b.Property("RecommendedAmount") + .HasColumnType("numeric"); + + b.Property("ReferenceNo") + .IsRequired() + .HasColumnType("text"); + + b.Property("RegionalDistrict") + .HasColumnType("text"); + + b.Property("RequestedAmount") + .HasColumnType("numeric"); + + b.Property("RiskRanking") + .HasColumnType("text"); + + b.Property("SigningAuthorityBusinessPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityCellPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityEmail") + .HasColumnType("text"); + + b.Property("SigningAuthorityFullName") + .HasColumnType("text"); + + b.Property("SigningAuthorityTitle") + .HasColumnType("text"); + + b.Property("SubStatus") + .HasColumnType("text"); + + b.Property("SubmissionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TotalProjectBudget") + .HasColumnType("numeric"); + + b.Property("TotalScore") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.HasIndex("ApplicationStatusId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Applications", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssigneeId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Duty") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssigneeId"); + + b.ToTable("ApplicationAssignments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsFileId") + .HasColumnType("text"); + + b.Property("ChefsSumbissionId") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationChefsFileAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactEmail") + .HasColumnType("text"); + + b.Property("ContactFullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactMobilePhone") + .HasColumnType("text"); + + b.Property("ContactTitle") + .HasColumnType("text"); + + b.Property("ContactType") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactWorkPhone") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationContact", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApiKey") + .HasColumnType("text"); + + b.Property("ApplicationFormDescription") + .HasColumnType("text"); + + b.Property("ApplicationFormName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("AttemptedConnectionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("Category") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsCriteriaFormGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConnectionHttpStatus") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeId") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Payable") + .HasColumnType("boolean"); + + b.Property("RenderFormIoToHtml") + .HasColumnType("boolean"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("IntakeId"); + + b.ToTable("ApplicationForms", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormVersionId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsSubmissionGuid") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FormVersionId") + .HasColumnType("uuid"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("RenderedHTML") + .HasColumnType("text"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Submission") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormSubmissions", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsFormVersionGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SubmissionHeaderMapping") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormVersion", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LinkedApplicationId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationLinks", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StatusCode") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("StatusCode") + .IsUnique(); + + b.ToTable("ApplicationStatuses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationTags", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.ToTable("AssessmentAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ApprovalRecommended") + .HasColumnType("boolean"); + + b.Property("AssessorId") + .HasColumnType("uuid"); + + b.Property("CleanGrowth") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("EconomicImpact") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinancialAnalysis") + .HasColumnType("integer"); + + b.Property("InclusiveGrowth") + .HasColumnType("integer"); + + b.Property("IsComplete") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssessorId"); + + b.ToTable("Assessments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("CommenterId"); + + b.ToTable("ApplicationComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.HasIndex("CommenterId"); + + b.ToTable("AssessmentComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Identity.Person", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Badge") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcDisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("OidcSub"); + + b.ToTable("Persons", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Intakes.Intake", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Budget") + .HasColumnType("double precision"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Intakes", (string)null); + }); + + modelBuilder.Entity("Unity.Notifications.Emails.EmailLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("BodyType") + .IsRequired() + .HasColumnType("text"); + + b.Property("CC") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesMsgId") + .HasColumnType("uuid"); + + b.Property("ChesResponse") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FromAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Priority") + .IsRequired() + .HasColumnType("text"); + + b.Property("RetryAttempts") + .HasColumnType("integer"); + + b.Property("SendOnDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SentDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tag") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("ToAddress") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EmailLogs", "Notifications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentConfigurations.PaymentConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MinistryClient") + .HasColumnType("text"); + + b.Property("PaymentIdPrefix") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentThreshold") + .HasColumnType("numeric"); + + b.Property("ProjectNumber") + .HasColumnType("text"); + + b.Property("Responsibility") + .HasColumnType("text"); + + b.Property("ServiceLine") + .HasColumnType("text"); + + b.Property("Stob") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("PaymentConfigurations", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PaymentRequestId"); + + b.ToTable("ExpenseApprovals", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("numeric"); + + b.Property("BatchName") + .IsRequired() + .HasColumnType("text"); + + b.Property("BatchNumber") + .HasColumnType("numeric"); + + b.Property("CasHttpStatusCode") + .HasColumnType("integer"); + + b.Property("CasResponse") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InvoiceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("InvoiceStatus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRecon") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PayeeName") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("text"); + + b.Property("PaymentNumber") + .HasColumnType("text"); + + b.Property("PaymentStatus") + .HasColumnType("text"); + + b.Property("ReferenceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("RequesterName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SiteId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("SupplierNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ReferenceNumber") + .IsUnique(); + + b.HasIndex("SiteId"); + + b.ToTable("PaymentRequests", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddressLine1") + .HasColumnType("text"); + + b.Property("AddressLine2") + .HasColumnType("text"); + + b.Property("AddressLine3") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EFTAdvicePref") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCas") + .HasColumnType("timestamp without time zone"); + + b.Property("Number") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentGroup") + .HasColumnType("integer"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SiteProtected") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("SupplierId"); + + b.ToTable("Sites", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCAS") + .HasColumnType("timestamp without time zone"); + + b.Property("MailingAddress") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SIN") + .HasColumnType("text"); + + b.Property("StandardIndustryClassification") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("Subcategory") + .HasColumnType("text"); + + b.Property("SupplierProtected") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Suppliers", "Payments"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Instances") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Question", "Question") + .WithMany("Answers") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", null) + .WithMany("Answers") + .HasForeignKey("ScoresheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.ScoresheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Sections") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.HasOne("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", null) + .WithMany("Values") + .HasForeignKey("WorksheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Links") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.WorksheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Sections") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany("ApplicantAddresses") + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Applicant"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithOne("ApplicantAgent") + .HasForeignKey("Unity.GrantManager.Applications.ApplicantAgent", "ApplicationId"); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("OidcSubUser") + .HasPrincipalKey("OidcSub"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", "ApplicationForm") + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationStatus", "ApplicationStatus") + .WithMany("Applications") + .HasForeignKey("ApplicationStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.NoAction); + + b.Navigation("Applicant"); + + b.Navigation("ApplicationForm"); + + b.Navigation("ApplicationStatus"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationAssignments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Assignee") + .WithMany() + .HasForeignKey("AssigneeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Application"); + + b.Navigation("Assignee"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.HasOne("Unity.GrantManager.Intakes.Intake", null) + .WithMany() + .HasForeignKey("IntakeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationTags") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("Assessments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("AssessorId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.HasOne("Unity.Payments.Domain.PaymentRequests.PaymentRequest", "PaymentRequest") + .WithMany("ExpenseApprovals") + .HasForeignKey("PaymentRequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentRequest"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Site", "Site") + .WithMany() + .HasForeignKey("SiteId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Site"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Supplier", "Supplier") + .WithMany("Sites") + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Navigation("Values"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Navigation("Links"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Navigation("ApplicantAddresses"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Navigation("ApplicantAgent"); + + b.Navigation("ApplicationAssignments"); + + b.Navigation("ApplicationTags"); + + b.Navigation("Assessments"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Navigation("ExpenseApprovals"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Navigation("Sites"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107215018_AddWorksheetDynamicViewGenerator.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107215018_AddWorksheetDynamicViewGenerator.cs new file mode 100644 index 000000000..0db123698 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250107215018_AddWorksheetDynamicViewGenerator.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + /// + public partial class AddWorksheetDynamicViewGenerator : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.Sql("CREATE OR REPLACE PROCEDURE generate_worksheets_view(table_a_id UUID) AS $$\r\nDECLARE\r\n view_name TEXT;\r\n view_columns TEXT;\r\n view_keys TEXT;\r\n column_definitions TEXT;\r\n column_names TEXT[];\r\n key_names TEXT[];\r\n select_clause TEXT;\r\nBEGIN\r\n -- Fetch the name, columns, and keys from Table A\r\n SELECT \"ReportViewName\", \"ReportColumns\", \"ReportKeys\" INTO view_name, view_columns, view_keys\r\n FROM \"Flex\".\"Worksheets\"\r\n WHERE \"Id\" = table_a_id;\r\n\r\n -- Split the columns and keys into individual names using pipe delimiter\r\n column_names := string_to_array(view_columns, '|');\r\n key_names := string_to_array(view_keys, '|');\r\n\r\n -- Create the column definitions for the view\r\n column_definitions := '';\r\n FOR i IN 1..array_length(column_names, 1) LOOP\r\n column_definitions := column_definitions || format('%I TEXT', column_names[i]);\r\n IF i < array_length(column_names, 1) THEN\r\n column_definitions := column_definitions || ', ';\r\n END IF;\r\n END LOOP;\r\n\r\n -- Create the select clause for the view\r\n select_clause := '';\r\n FOR i IN 1..array_length(key_names, 1) LOOP\r\n IF i > 1 THEN\r\n select_clause := select_clause || ', ';\r\n END IF;\r\n select_clause := select_clause || format(\r\n 'COALESCE((\r\n SELECT value::TEXT\r\n FROM jsonb_each_text(\"ReportData\")\r\n WHERE key = %L\r\n LIMIT 1\r\n ), '''') AS %I',\r\n key_names[i], column_names[i]\r\n );\r\n END LOOP;\r\n\r\n -- Drop the view if it already exists to avoid type conflicts\r\n EXECUTE format('DROP VIEW IF EXISTS %I', view_name);\r\n\r\n -- Create the view query dynamically\r\n EXECUTE format('CREATE VIEW %I AS SELECT \"Id\", %s FROM (SELECT \"Id\", \"ReportData\" FROM \"Flex\".\"WorksheetInstances\" WHERE \"Flex\".\"WorksheetInstances\".\"WorksheetId\" = %L) AS subquery',\r\n view_name,\r\n select_clause,\r\n table_a_id\r\n );\r\nEND;\r\n$$ LANGUAGE plpgsql;\r\n"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs index a157f883f..1b5befa37 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs @@ -479,6 +479,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("uuid") .HasColumnName("LastModifierId"); + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + b.Property("TenantId") .HasColumnType("uuid") .HasColumnName("TenantId"); From 0884650735a635f4456c5c240889fc10af378b81 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Thu, 9 Jan 2025 10:46:30 -0800 Subject: [PATCH 06/28] AB#26819 refactor reporting classes --- .../Domain/Services/WorksheetsManager.cs | 7 +- .../CheckboxGroupReportDataGenerator.cs | 2 +- .../DataGridReportDataGenerator.cs | 2 +- .../DefaultReportDataGenerator.cs | 2 +- .../DataGenerators/IReportingDataGenerator.cs | 2 +- .../IReportingDataGeneratorService.cs | 10 ++ .../ReportingDataGeneratorBase.cs | 2 +- .../ReportingDataGeneratorFactory.cs | 3 +- .../ReportingDataGeneratorService.cs | 9 +- .../CheckboxGroupReportingFieldsGenerator.cs | 2 +- .../DataGridReportingFieldsGenerator.cs | 2 +- .../DefaultReportingFieldsGenerator.cs | 2 +- .../IReportingFieldsGenerator.cs | 2 +- .../IReportingFieldsGeneratorService.cs | 9 ++ .../ReportingFieldsGeneratorBase.cs | 2 +- .../ReportingFieldsGeneratorFactory.cs | 3 +- .../ReportingFieldsGeneratorService.cs | 19 ++- .../WorksheetsDynamicViewGeneratorEto.cs | 4 +- .../WorksheetsDynamicViewGeneratorHandler.cs | 2 +- .../Worksheets/WorksheetAppService.cs | 7 +- .../ApplicationFormVersionAppService.cs | 88 +------------ .../Intakes/IntakeFormSubmissionManager.cs | 117 +---------------- .../DataGenerators/IReportingDataGenerator.cs | 7 + .../DataGenerators/ReportingDataGenerator.cs | 124 ++++++++++++++++++ .../IReportingFieldsGeneratorService.cs | 10 ++ .../ReportingFieldsGeneratorService.cs | 95 ++++++++++++++ 26 files changed, 310 insertions(+), 224 deletions(-) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs (88%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/DataGenerators/DataGridReportDataGenerator.cs (88%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/DataGenerators/DefaultReportDataGenerator.cs (90%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/DataGenerators/IReportingDataGenerator.cs (72%) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGeneratorService.cs rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/DataGenerators/ReportingDataGeneratorBase.cs (87%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs (89%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/DataGenerators/ReportingDataGeneratorService.cs (80%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/FieldGenerators/CheckboxGroupReportingFieldsGenerator.cs (87%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/FieldGenerators/DataGridReportingFieldsGenerator.cs (87%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/FieldGenerators/DefaultReportingFieldsGenerator.cs (88%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/FieldGenerators/IReportingFieldsGenerator.cs (64%) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/FieldGenerators/ReportingFieldsGeneratorBase.cs (89%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs (89%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs (70%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/WorksheetsDynamicViewGeneratorEto.cs (60%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/{Worksheets => }/Reporting/WorksheetsDynamicViewGeneratorHandler.cs (97%) create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/IReportingDataGenerator.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGenerator.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs index 88a492bb5..af980ad7c 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs @@ -9,8 +9,8 @@ using Unity.Flex.Domain.WorksheetInstances; using Unity.Flex.Domain.WorksheetLinks; using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Reporting.DataGenerators; using Unity.Flex.WorksheetInstances; -using Unity.Flex.Worksheets.Reporting.DataGenerators; using Unity.Flex.Worksheets.Values; using Volo.Abp.Domain.Services; @@ -18,7 +18,8 @@ namespace Unity.Flex.Domain.Services { public class WorksheetsManager(IWorksheetInstanceRepository worksheetInstanceRepository, IWorksheetRepository worksheetRepository, - IWorksheetLinkRepository worksheetLinkRepository) : DomainService + IWorksheetLinkRepository worksheetLinkRepository, + IReportingDataGeneratorService reportingService) : DomainService { public async Task PersistWorksheetData(PersistWorksheetIntanceValuesEto eventData) { @@ -80,7 +81,7 @@ public async Task UpdateWorksheetInstanceValueAsync(WorksheetInstance instance) instance.SetValue(JsonSerializer.Serialize(instanceCurrentValue)); - instance.SetReportingData(ReportingDataGeneratorService.GenerateData(worksheet, instanceCurrentValue)); + instance.SetReportingData(reportingService.GenerateData(worksheet, instanceCurrentValue)); } private void UpdateExistingWorksheetInstance(WorksheetInstance worksheetInstance, Worksheet? worksheet, List fields) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs similarity index 88% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs index 2e8f97d8c..66f545f0f 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs @@ -3,7 +3,7 @@ using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Values; -namespace Unity.Flex.Worksheets.Reporting.DataGenerators +namespace Unity.Flex.Reporting.DataGenerators { public class CheckboxGroupReportDataGenerator(CustomField customField, FieldInstanceValue value) : ReportingDataGeneratorBase(customField, value), IReportingDataGenerator diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DataGridReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/DataGridReportDataGenerator.cs similarity index 88% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DataGridReportDataGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/DataGridReportDataGenerator.cs index bff0188f8..f63dd9720 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DataGridReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/DataGridReportDataGenerator.cs @@ -3,7 +3,7 @@ using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Values; -namespace Unity.Flex.Worksheets.Reporting.DataGenerators +namespace Unity.Flex.Reporting.DataGenerators { public class DataGridReportDataGenerator(CustomField customField, FieldInstanceValue value) : ReportingDataGeneratorBase(customField, value), IReportingDataGenerator diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DefaultReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/DefaultReportDataGenerator.cs similarity index 90% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DefaultReportDataGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/DefaultReportDataGenerator.cs index cf02c9c28..3d914f7ac 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/DefaultReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/DefaultReportDataGenerator.cs @@ -2,7 +2,7 @@ using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Values; -namespace Unity.Flex.Worksheets.Reporting.DataGenerators +namespace Unity.Flex.Reporting.DataGenerators { public class DefaultReportDataGenerator(CustomField customField, FieldInstanceValue value) : ReportingDataGeneratorBase(customField, value), IReportingDataGenerator diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/IReportingDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGenerator.cs similarity index 72% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/IReportingDataGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGenerator.cs index 09117b0ee..4547d0138 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/IReportingDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGenerator.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Unity.Flex.Worksheets.Reporting.DataGenerators +namespace Unity.Flex.Reporting.DataGenerators { public interface IReportingDataGenerator { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGeneratorService.cs new file mode 100644 index 000000000..dd79231e5 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGeneratorService.cs @@ -0,0 +1,10 @@ +using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Worksheets.Values; + +namespace Unity.Flex.Reporting.DataGenerators +{ + public interface IReportingDataGeneratorService + { + string GenerateData(Worksheet worksheet, WorksheetInstanceValue instanceCurrentValue); + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorBase.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorBase.cs similarity index 87% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorBase.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorBase.cs index da3eb20eb..b78f0857d 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorBase.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorBase.cs @@ -1,7 +1,7 @@ using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Values; -namespace Unity.Flex.Worksheets.Reporting.DataGenerators +namespace Unity.Flex.Reporting.DataGenerators { public class ReportingDataGeneratorBase { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs similarity index 89% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs index e6780c665..6e540deea 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs @@ -1,7 +1,8 @@ using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Worksheets; using Unity.Flex.Worksheets.Values; -namespace Unity.Flex.Worksheets.Reporting.DataGenerators +namespace Unity.Flex.Reporting.DataGenerators { public static class ReportingDataGeneratorFactory { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorService.cs similarity index 80% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorService.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorService.cs index 63e4588e0..40cab32de 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/DataGenerators/ReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorService.cs @@ -3,12 +3,15 @@ using System.Text.Json; using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Values; +using Volo.Abp; +using Volo.Abp.Application.Services; -namespace Unity.Flex.Worksheets.Reporting.DataGenerators +namespace Unity.Flex.Reporting.DataGenerators { - public static class ReportingDataGeneratorService + [RemoteService(false)] + public class ReportingDataGeneratorService : ApplicationService, IReportingDataGeneratorService { - public static string GenerateData(Worksheet worksheet, WorksheetInstanceValue instanceCurrentValue) + public string GenerateData(Worksheet worksheet, WorksheetInstanceValue instanceCurrentValue) { var reportData = new Dictionary>(); var reportingKeys = worksheet.ReportColumns.Split('|'); diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/CheckboxGroupReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CheckboxGroupReportingFieldsGenerator.cs similarity index 87% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/CheckboxGroupReportingFieldsGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CheckboxGroupReportingFieldsGenerator.cs index de5432dc7..8c03d21a8 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/CheckboxGroupReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CheckboxGroupReportingFieldsGenerator.cs @@ -1,7 +1,7 @@ using System; using Unity.Flex.Domain.Worksheets; -namespace Unity.Flex.Worksheets.Reporting.FieldGenerators +namespace Unity.Flex.Reporting.FieldGenerators { public class CheckboxGroupReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) : ReportingFieldsGeneratorBase(customField, separator, maxColumnLength), IReportingFieldsGenerator diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/DataGridReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/DataGridReportingFieldsGenerator.cs similarity index 87% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/DataGridReportingFieldsGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/DataGridReportingFieldsGenerator.cs index cbba53d0d..d46ddecb3 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/DataGridReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/DataGridReportingFieldsGenerator.cs @@ -1,7 +1,7 @@ using System; using Unity.Flex.Domain.Worksheets; -namespace Unity.Flex.Worksheets.Reporting.FieldGenerators +namespace Unity.Flex.Reporting.FieldGenerators { public class DataGridReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) : ReportingFieldsGeneratorBase(customField, separator, maxColumnLength), IReportingFieldsGenerator diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/DefaultReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/DefaultReportingFieldsGenerator.cs similarity index 88% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/DefaultReportingFieldsGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/DefaultReportingFieldsGenerator.cs index 3704796af..13989ae2b 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/DefaultReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/DefaultReportingFieldsGenerator.cs @@ -1,6 +1,6 @@ using Unity.Flex.Domain.Worksheets; -namespace Unity.Flex.Worksheets.Reporting.FieldGenerators +namespace Unity.Flex.Reporting.FieldGenerators { public class DefaultReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) : ReportingFieldsGeneratorBase(customField, separator, maxColumnLength), IReportingFieldsGenerator diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/IReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGenerator.cs similarity index 64% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/IReportingFieldsGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGenerator.cs index 2bf36ac71..959b0db43 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/IReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGenerator.cs @@ -1,4 +1,4 @@ -namespace Unity.Flex.Worksheets.Reporting.FieldGenerators +namespace Unity.Flex.Reporting.FieldGenerators { public interface IReportingFieldsGenerator { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs new file mode 100644 index 000000000..bd6a677e6 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs @@ -0,0 +1,9 @@ +using Unity.Flex.Domain.Worksheets; + +namespace Unity.Flex.Reporting.FieldGenerators +{ + public interface IReportingFieldsGeneratorService + { + Worksheet GenerateAndSet(Worksheet worksheet, char separator = '|', uint maxColumnLength = 63); + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorBase.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorBase.cs similarity index 89% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorBase.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorBase.cs index 7b9d575f9..2a1de8127 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorBase.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorBase.cs @@ -1,6 +1,6 @@ using Unity.Flex.Domain.Worksheets; -namespace Unity.Flex.Worksheets.Reporting.FieldGenerators +namespace Unity.Flex.Reporting.FieldGenerators { public class ReportingFieldsGeneratorBase { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs similarity index 89% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs index 7106af76e..e33384888 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs @@ -1,6 +1,7 @@ using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Worksheets; -namespace Unity.Flex.Worksheets.Reporting.FieldGenerators +namespace Unity.Flex.Reporting.FieldGenerators { public static class ReportingFieldsGeneratorFactory { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs similarity index 70% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs index e03374ee7..f8cf5a7d4 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs @@ -1,15 +1,26 @@ using System.Linq; using System.Text; using Unity.Flex.Domain.Worksheets; +using Volo.Abp; +using Volo.Abp.Application.Services; +using Volo.Abp.EventBus.Local; -namespace Unity.Flex.Worksheets.Reporting.FieldGenerators +namespace Unity.Flex.Reporting.FieldGenerators { - public static class ReportingFieldsGeneratorService + [RemoteService(false)] + public class ReportingFieldsGeneratorService(ILocalEventBus localEventBus) : ApplicationService, IReportingFieldsGeneratorService { - public static Worksheet GenerateAndSet(Worksheet worksheet, char separator = '|', uint maxColumnLength = 63) + public Worksheet GenerateAndSet(Worksheet worksheet, char separator = '|', uint maxColumnLength = 63) { var (reportingKeys, reportingColumns, reportViewName) = GenerateReportingFields(worksheet, separator, maxColumnLength); worksheet.SetReportingFields(reportingKeys, reportingColumns, reportViewName); + + localEventBus.PublishAsync(new WorksheetsDynamicViewGeneratorEto() + { + TenantId = CurrentTenant.Id, + WorksheetId = worksheet.Id + }, true); + return worksheet; } @@ -42,7 +53,7 @@ private static (string reportingKeys, string reportingColumns, string reportView keysBuilder.Length--; // Remove the last separator } - return new(columnsBuilder.ToString(), keysBuilder.ToString(), $"WS-{worksheet.Name.ToUpper()}"); + return new(columnsBuilder.ToString(), keysBuilder.ToString(), $"Worksheet-{worksheet.Name}"); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorEto.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorEto.cs similarity index 60% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorEto.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorEto.cs index 6652dc11e..a7b207cc7 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorEto.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorEto.cs @@ -1,10 +1,10 @@ using System; -namespace Unity.Flex.Worksheets.Reporting +namespace Unity.Flex.Reporting { public class WorksheetsDynamicViewGeneratorEto { - public Guid TenantId { get; set; } + public Guid? TenantId { get; set; } public Guid WorksheetId { get; set; } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorHandler.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs similarity index 97% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorHandler.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs index c48315197..b713bc8d6 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/Reporting/WorksheetsDynamicViewGeneratorHandler.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs @@ -9,7 +9,7 @@ using Volo.Abp.MultiTenancy; using Volo.Abp.Uow; -namespace Unity.Flex.Worksheets.Reporting +namespace Unity.Flex.Reporting { public class WorksheetsDynamicViewGeneratorHandler( IWorksheetRepository worksheetRepository, diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs index 64dd6ca92..0d3599921 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs @@ -8,14 +8,15 @@ using Unity.Flex.Domain.Settings; using Unity.Flex.Domain.Utils; using Unity.Flex.Domain.Worksheets; -using Unity.Flex.Worksheets.Reporting.FieldGenerators; +using Unity.Flex.Reporting.FieldGenerators; using Volo.Abp; namespace Unity.Flex.Worksheets { [Authorize] public partial class WorksheetAppService(IWorksheetRepository worksheetRepository, - WorksheetsManager worksheetsManager) : FlexAppService, IWorksheetAppService + WorksheetsManager worksheetsManager, + IReportingFieldsGeneratorService reportingFieldsGeneratorService) : FlexAppService, IWorksheetAppService { public virtual async Task GetAsync(Guid id) { @@ -108,7 +109,7 @@ public virtual async Task PublishAsync(Guid id) _ = worksheet.SetPublished(true); - _ = ReportingFieldsGeneratorService.GenerateAndSet(worksheet); + _ = reportingFieldsGeneratorService.GenerateAndSet(worksheet); return await Task.FromResult(true); } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs index 95a52cc34..66f8c4bdf 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs @@ -1,7 +1,6 @@ using Microsoft.Extensions.Logging; using Newtonsoft.Json.Linq; using System; -using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using System.Threading.Tasks; @@ -9,12 +8,11 @@ using Unity.GrantManager.Forms; using Unity.GrantManager.Intakes; using Unity.GrantManager.Integration.Chefs; -using Unity.GrantManager.Reporting; +using Unity.GrantManager.Reporting.FieldGenerators; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; -using Volo.Abp.EventBus.Local; using Volo.Abp.Uow; namespace Unity.GrantManager.ApplicationForms @@ -34,8 +32,7 @@ public class ApplicationFormVersionAppService : private readonly IUnitOfWorkManager _unitOfWorkManager; private readonly IFormsApiService _formApiService; private readonly IApplicationFormSubmissionRepository _applicationFormSubmissionRepository; - private readonly IApplicationFormRepository _applicationFormRepository; - private readonly ILocalEventBus _localEventBus; + private readonly IReportingFieldsGeneratorService _reportingFieldsGeneratorService; public ApplicationFormVersionAppService(IRepository repository, IIntakeFormSubmissionMapper intakeFormSubmissionMapper, @@ -43,8 +40,7 @@ public ApplicationFormVersionAppService(IRepository CreateAsync(CreateUpdateApplicationFormVersionDto input) @@ -294,84 +289,11 @@ public async Task UpdateOrCreateApplicationFormVersio applicationFormVersion = await _applicationFormVersionRepository.InsertAsync(applicationFormVersion); } - // Add keys and columns for report generation - await UpdateFormVersionWithReportKeysAndColumnsAsync(applicationFormVersion); - await QueueDynamicViewGeneratorAsync(applicationFormVersion); + await _reportingFieldsGeneratorService.GenerateAndSetAsync(applicationFormVersion); return ObjectMapper.Map(applicationFormVersion); } - private async Task QueueDynamicViewGeneratorAsync(ApplicationFormVersion applicationFormVersion) - { - await _localEventBus.PublishAsync( - new SubmissionsDynamicViewGenerationEto - { - ApplicationFormVersionId = applicationFormVersion.Id, - TenantId = CurrentTenant.Id - }, true); - } - - private async Task UpdateFormVersionWithReportKeysAndColumnsAsync(ApplicationFormVersion applicationFormVersion) - { - if (applicationFormVersion.AvailableChefsFields == null) return; - - var form = await _applicationFormRepository.GetAsync(applicationFormVersion.ApplicationFormId); - JObject jObject = JObject.Parse(applicationFormVersion.AvailableChefsFields); - - // Exclusion array - string[] exclusionArray = ["simplebuttonadvanced", "datagrid", "hidden"]; - string[] nestedKeyFields = ["simplecheckboxes", "simplecheckboxadvanced"]; - - // Dictionary to store full key names and truncated key names - Dictionary keyMapping = []; - - // Filter out properties based on the exclusion array and extend child keys - var keys = jObject - .Properties() - .SelectMany(p => - { - - string? typeValue = JObject.Parse(p.Value.ToString())?["type"]?.ToString(); - if (typeValue != null && exclusionArray.Contains(typeValue)) - { - return []; - } - - // Check for nested key fields and generate dashed keys - if (typeValue != null && nestedKeyFields.Contains(typeValue)) - { - return ExtractNestedKeys(p); - } - - return [p.Name]; - }) - .Distinct() - .Select(fullKey => - { - string truncatedKey = fullKey.Length > 63 ? fullKey[..63] : fullKey; - keyMapping[fullKey] = truncatedKey; - return fullKey; - }); - - // Get all keys and pipe separate them - string pipeDelimitedKeys = string.Join("|", keys); - - // Truncate each key to a maximum of 63 characters and create a pipe-delimited string - string truncatedDelimitedKeys = string.Join("|", keys.Select(k => k.Length > 63 ? k[..63] : k)); - - applicationFormVersion.ReportColumns = truncatedDelimitedKeys; - applicationFormVersion.ReportKeys = pipeDelimitedKeys; - applicationFormVersion.ReportViewName = $"FS-{form.ApplicationFormName?.Replace(" ", "")}-V{applicationFormVersion.Version}"; - } - - private static string[] ExtractNestedKeys(JProperty jProperty) - { - if (jProperty == null) return []; - - string? valuesProp = JObject.Parse(jProperty.Value.ToString())?["values"]?.ToString(); - return string.IsNullOrEmpty(valuesProp) ? [] : valuesProp.Split(','); - } - public async Task GetByChefsFormVersionId(Guid chefsFormVersionId) { var applicationFormVersion = await _applicationFormVersionRepository.GetByChefsFormVersionAsync(chefsFormVersionId); diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs index 6ccc2b753..1f187bb75 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs @@ -1,13 +1,12 @@ using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using System; -using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Unity.GrantManager.Applicants; using Unity.GrantManager.Applications; using Unity.GrantManager.GrantApplications; using Unity.GrantManager.Intakes.Mapping; +using Unity.GrantManager.Reporting.DataGenerators; using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Services; using Volo.Abp.Uow; @@ -21,7 +20,8 @@ public class IntakeFormSubmissionManager(IUnitOfWorkManager _unitOfWorkManager, IApplicationFormSubmissionRepository _applicationFormSubmissionRepository, IIntakeFormSubmissionMapper _intakeFormSubmissionMapper, IApplicationFormVersionRepository _applicationFormVersionRepository, - CustomFieldsIntakeSubmissionMapper _customFieldsIntakeSubmissionMapper) : DomainService, IIntakeFormSubmissionManager + CustomFieldsIntakeSubmissionMapper _customFieldsIntakeSubmissionMapper, + IReportingDataGenerator _reportingDataGenerator) : DomainService, IIntakeFormSubmissionManager { public async Task GetApplicationFormVersionMapping(string chefsFormVersionId) @@ -71,7 +71,7 @@ await _customFieldsIntakeSubmissionMapper.MapAndPersistCustomFields(application. formSubmission, formVersionSubmissionHeaderMapping); - newSubmission.ReportData = GenerateReportDataForSubmission(formSubmission, localFormVersion?.ReportKeys); + newSubmission.ReportData = _reportingDataGenerator.Generate(formSubmission, localFormVersion?.ReportKeys); newSubmission.ApplicationFormVersionId = localFormVersion?.Id; await uow.SaveChangesAsync(); @@ -79,115 +79,6 @@ await _customFieldsIntakeSubmissionMapper.MapAndPersistCustomFields(application. return application.Id; } - private static string? GenerateReportDataForSubmission(dynamic submissionData, string keys) - { - var reportResult = new Dictionary>(); - - JObject submission = JObject.Parse(submissionData.ToString()); - - // Navigate to the "data" node within the "submission" node - JToken? dataNode = submission.SelectToken("submission.submission.data"); - - List keysToTrack = [.. keys.Split('|')]; - - if (dataNode == null) return null; - - // Perform a recursive scan of the data node - ScanNode(dataNode, keysToTrack, reportResult); - - // Ensure all keys are present in the result, even if no matches were found - foreach (var key in keysToTrack) - { - if (!reportResult.ContainsKey(key)) - { - reportResult[key] = []; - } - } - - // Clean up the JSON strings - foreach (var key in reportResult.Keys.ToList()) - { - reportResult[key] = reportResult[key].Select(CleanJsonString).ToList(); - } - - // Sort the dictionary by keys alphabetically - var sortedResult = reportResult.OrderBy(kvp => kvp.Key).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); - - // Create a simple JSON object from the result dictionary - JObject jsonObject = []; - - foreach (var kvp in sortedResult) - { - JArray valuesArray = new(kvp.Value); - jsonObject[kvp.Key] = valuesArray; - } - - if (jsonObject == null) return null; - - // Prep value for db - return jsonObject.ToString(); - } - - static void ScanNode(JToken node, List keysToTrack, Dictionary> result) - { - if (node.Type == JTokenType.Object) - { - foreach (var property in node.Children()) - { - // Check if the key is in the list of keys to track - if (keysToTrack.Contains(property.Name)) - { - // Initialize the list if the key is not yet in the result dictionary - if (!result.TryGetValue(property.Name, out List? value)) - { - value = ([]); - result[property.Name] = value; - } - - value.Add(property.Value.ToString()); - } - - // Recursively scan the property's value - ScanNode(property.Value, keysToTrack, result); - } - } - else if (node.Type == JTokenType.Array) - { - foreach (var item in node.Children()) - { - // Recursively scan each item in the array - ScanNode(item, keysToTrack, result); - } - } - } - - static string CleanJsonString(string jsonString) - { - if (IsJson(jsonString)) - { - try - { - var parsedJson = JsonConvert.DeserializeObject(jsonString); - - // Serialize the JObject back to a JSON string without escape characters - var cleaned = parsedJson != null ? parsedJson.ToString(Formatting.None) : jsonString; - - return cleaned; - } - catch - { - return jsonString; // Return as is if parsing fails - } - } - return jsonString; // Return as is if not a JSON object - } - - static bool IsJson(string str) - { - str = str.Trim(); - return (str.StartsWith('{') && str.EndsWith('}')) || (str.StartsWith('[') && str.EndsWith(']')); - } - private async Task CreateNewApplicationAsync(IntakeMapping intakeMap, ApplicationForm applicationForm) { diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/IReportingDataGenerator.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/IReportingDataGenerator.cs new file mode 100644 index 000000000..6beea9436 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/IReportingDataGenerator.cs @@ -0,0 +1,7 @@ +namespace Unity.GrantManager.Reporting.DataGenerators +{ + public interface IReportingDataGenerator + { + string? Generate(dynamic formSubmission, string? reportKeys); + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGenerator.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGenerator.cs new file mode 100644 index 000000000..8be2d9172 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGenerator.cs @@ -0,0 +1,124 @@ +using Newtonsoft.Json.Linq; +using Newtonsoft.Json; +using System.Collections.Generic; +using System.Linq; +using Volo.Abp.Application.Services; +using Volo.Abp; + +namespace Unity.GrantManager.Reporting.DataGenerators +{ + [RemoteService(false)] + public class ReportingDataGenerator : ApplicationService, IReportingDataGenerator + { + public string? Generate(dynamic formSubmission, string? reportKeys) + { + if (reportKeys == null) return null; + + var reportResult = new Dictionary>(); + + JObject submission = JObject.Parse(formSubmission.ToString()); + + // Navigate to the "data" node within the "submission" node + JToken? dataNode = submission.SelectToken("submission.submission.data"); + + List keysToTrack = [.. reportKeys.Split('|')]; + + if (dataNode == null) return null; + + // Perform a recursive scan of the data node + ScanNode(dataNode, keysToTrack, reportResult); + + // Ensure all keys are present in the result, even if no matches were found + foreach (var key in keysToTrack) + { + if (!reportResult.ContainsKey(key)) + { + reportResult[key] = []; + } + } + + // Clean up the JSON strings + foreach (var key in reportResult.Keys.ToList()) + { + reportResult[key] = reportResult[key].Select(CleanJsonString).ToList(); + } + + // Sort the dictionary by keys alphabetically + var sortedResult = reportResult.OrderBy(kvp => kvp.Key).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + + // Create a simple JSON object from the result dictionary + JObject jsonObject = []; + + foreach (var kvp in sortedResult) + { + JArray valuesArray = new(kvp.Value); + jsonObject[kvp.Key] = valuesArray; + } + + if (jsonObject == null) return null; + + // Prep value for db + return jsonObject.ToString(); + } + + static void ScanNode(JToken node, List keysToTrack, Dictionary> result) + { + if (node.Type == JTokenType.Object) + { + foreach (var property in node.Children()) + { + // Check if the key is in the list of keys to track + if (keysToTrack.Contains(property.Name)) + { + // Initialize the list if the key is not yet in the result dictionary + if (!result.TryGetValue(property.Name, out List? value)) + { + value = ([]); + result[property.Name] = value; + } + + value.Add(property.Value.ToString()); + } + + // Recursively scan the property's value + ScanNode(property.Value, keysToTrack, result); + } + } + else if (node.Type == JTokenType.Array) + { + foreach (var item in node.Children()) + { + // Recursively scan each item in the array + ScanNode(item, keysToTrack, result); + } + } + } + + static string CleanJsonString(string jsonString) + { + if (IsJson(jsonString)) + { + try + { + var parsedJson = JsonConvert.DeserializeObject(jsonString); + + // Serialize the JObject back to a JSON string without escape characters + var cleaned = parsedJson != null ? parsedJson.ToString(Formatting.None) : jsonString; + + return cleaned; + } + catch + { + return jsonString; // Return as is if parsing fails + } + } + return jsonString; // Return as is if not a JSON object + } + + static bool IsJson(string str) + { + str = str.Trim(); + return (str.StartsWith('{') && str.EndsWith('}')) || (str.StartsWith('[') && str.EndsWith(']')); + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs new file mode 100644 index 000000000..847edb628 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs @@ -0,0 +1,10 @@ +using System.Threading.Tasks; +using Unity.GrantManager.Applications; + +namespace Unity.GrantManager.Reporting.FieldGenerators +{ + public interface IReportingFieldsGeneratorService + { + Task GenerateAndSetAsync(ApplicationFormVersion applicationFormVersion); + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs new file mode 100644 index 000000000..ee548e5da --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs @@ -0,0 +1,95 @@ +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Unity.GrantManager.Applications; +using Volo.Abp; +using Volo.Abp.Application.Services; +using Volo.Abp.EventBus.Local; + +namespace Unity.GrantManager.Reporting.FieldGenerators +{ + [RemoteService(false)] + public class ReportingFieldsGeneratorService(ILocalEventBus localEventBus, + IApplicationFormRepository applicationFormRepository) : ApplicationService, IReportingFieldsGeneratorService + { + public async Task GenerateAndSetAsync(ApplicationFormVersion applicationFormVersion) + { + // Add keys and columns for report generation + await UpdateFormVersionWithReportKeysAndColumnsAsync(applicationFormVersion); + await QueueDynamicViewGeneratorAsync(applicationFormVersion); + } + + private async Task QueueDynamicViewGeneratorAsync(ApplicationFormVersion applicationFormVersion) + { + await localEventBus.PublishAsync( + new SubmissionsDynamicViewGenerationEto + { + ApplicationFormVersionId = applicationFormVersion.Id, + TenantId = CurrentTenant.Id + }, true); + } + + private async Task UpdateFormVersionWithReportKeysAndColumnsAsync(ApplicationFormVersion applicationFormVersion) + { + if (applicationFormVersion.AvailableChefsFields == null) return; + + var form = await applicationFormRepository.GetAsync(applicationFormVersion.ApplicationFormId); + JObject jObject = JObject.Parse(applicationFormVersion.AvailableChefsFields); + + // Exclusion array + string[] exclusionArray = ["simplebuttonadvanced", "datagrid", "hidden"]; + string[] nestedKeyFields = ["simplecheckboxes", "simplecheckboxadvanced"]; + + // Dictionary to store full key names and truncated key names + Dictionary keyMapping = []; + + // Filter out properties based on the exclusion array and extend child keys + var keys = jObject + .Properties() + .SelectMany(p => + { + + string? typeValue = JObject.Parse(p.Value.ToString())?["type"]?.ToString(); + if (typeValue != null && exclusionArray.Contains(typeValue)) + { + return []; + } + + // Check for nested key fields and generate dashed keys + if (typeValue != null && nestedKeyFields.Contains(typeValue)) + { + return ExtractNestedKeys(p); + } + + return [p.Name]; + }) + .Distinct() + .Select(fullKey => + { + string truncatedKey = fullKey.Length > 63 ? fullKey[..63] : fullKey; + keyMapping[fullKey] = truncatedKey; + return fullKey; + }); + + // Get all keys and pipe separate them + string pipeDelimitedKeys = string.Join("|", keys); + + // Truncate each key to a maximum of 63 characters and create a pipe-delimited string + string truncatedDelimitedKeys = string.Join("|", keys.Select(k => k.Length > 63 ? k[..63] : k)); + + applicationFormVersion.ReportColumns = truncatedDelimitedKeys; + applicationFormVersion.ReportKeys = pipeDelimitedKeys; + applicationFormVersion.ReportViewName = $"Form-{form.ApplicationFormName}-V{applicationFormVersion.Version}"; + } + + private static string[] ExtractNestedKeys(JProperty jProperty) + { + if (jProperty == null) return []; + + string? valuesProp = JObject.Parse(jProperty.Value.ToString())?["values"]?.ToString(); + return string.IsNullOrEmpty(valuesProp) ? [] : valuesProp.Split(','); + } + } +} From 1295b497390dcc50bcfcad98e6cb0693871d0fbd Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Thu, 9 Jan 2025 13:20:15 -0800 Subject: [PATCH 07/28] AB#26819 start scoresheet reporting additions --- .../ScoresheetInstances/ScoresheetInstance.cs | 4 + .../Domain/Scoresheets/Scoresheet.cs | 20 +- .../Domain/Worksheets/Worksheet.cs | 3 +- .../Reporting/DynamicViewGeneratorEto.cs | 9 + .../CheckboxGroupReportingFieldsGenerator.cs | 4 +- .../CustomFieldsReportingGenerator.cs} | 6 +- .../DataGridReportingFieldsGenerator.cs | 4 +- .../DefaultReportingFieldsGenerator.cs | 4 +- .../IReportingFieldsGeneratorService.cs | 8 +- .../DefaultFieldsGenerator.cs | 13 + .../QuestionsReportingGenerator.cs | 18 + .../ReportingFieldsGeneratorFactory.cs | 10 +- ...oresheetReportingFieldsGeneratorService.cs | 60 + ...rksheetReportingFieldsGeneratorService.cs} | 3 +- .../Reporting/IReportableEntity.cs | 11 + .../ScoresheetsDynamicViewGeneratorEto.cs | 9 + .../ScoresheetsDynamicViewGeneratorHandler.cs | 46 + .../WorksheetsDynamicViewGeneratorEto.cs | 3 +- .../WorksheetsDynamicViewGeneratorHandler.cs | 1 + .../Scoresheets/ScoresheetAppService.cs | 86 +- .../Worksheets/WorksheetAppService.cs | 2 +- ..._AddScoresheetReportingColumns.Designer.cs | 3361 +++++++++++++++++ ...109192642_AddScoresheetReportingColumns.cs | 70 + ...ScoresheetDynamicViewGenerator.Designer.cs | 3361 +++++++++++++++++ ...93223_AddScoresheetDynamicViewGenerator.cs | 22 + .../GrantTenantDbContextModelSnapshot.cs | 16 + 26 files changed, 7086 insertions(+), 68 deletions(-) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DynamicViewGeneratorEto.cs rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/{ => CustomFieldGenerators}/CheckboxGroupReportingFieldsGenerator.cs (63%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/{ReportingFieldsGeneratorBase.cs => CustomFieldGenerators/CustomFieldsReportingGenerator.cs} (60%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/{ => CustomFieldGenerators}/DataGridReportingFieldsGenerator.cs (63%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/{ => CustomFieldGenerators}/DefaultReportingFieldsGenerator.cs (66%) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/{ReportingFieldsGeneratorService.cs => WorksheetReportingFieldsGeneratorService.cs} (92%) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/IReportableEntity.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ScoresheetsDynamicViewGeneratorEto.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ScoresheetsDynamicViewGeneratorHandler.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109192642_AddScoresheetReportingColumns.Designer.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109192642_AddScoresheetReportingColumns.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109193223_AddScoresheetDynamicViewGenerator.Designer.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109193223_AddScoresheetDynamicViewGenerator.cs diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/ScoresheetInstances/ScoresheetInstance.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/ScoresheetInstances/ScoresheetInstance.cs index 774565e8a..8f695f3e6 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/ScoresheetInstances/ScoresheetInstance.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/ScoresheetInstances/ScoresheetInstance.cs @@ -1,5 +1,6 @@ using System; using System.Collections.ObjectModel; +using System.ComponentModel.DataAnnotations.Schema; using System.Text.Json; using Unity.Flex.Domain.Scoresheets; using Unity.Modules.Shared.Correlation; @@ -25,6 +26,9 @@ public class ScoresheetInstance : FullAuditedAggregateRoot, IMultiTenant, public virtual Collection Answers { get; private set; } = []; + [Column(TypeName = "jsonb")] + public virtual string ReportData { get; private set; } = "{}"; + public ScoresheetInstance(Guid id, Guid scoresheetId, Guid correlationId, diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Scoresheets/Scoresheet.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Scoresheets/Scoresheet.cs index 92444cdd5..73c693b27 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Scoresheets/Scoresheet.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Scoresheets/Scoresheet.cs @@ -3,21 +3,26 @@ using System.Linq; using Unity.Flex.Domain.Exceptions; using Unity.Flex.Domain.ScoresheetInstances; +using Unity.Flex.Reporting; using Volo.Abp; using Volo.Abp.Domain.Entities.Auditing; using Volo.Abp.MultiTenancy; namespace Unity.Flex.Domain.Scoresheets { - public class Scoresheet : FullAuditedAggregateRoot, IMultiTenant + public class Scoresheet : FullAuditedAggregateRoot, IMultiTenant, IReportableEntity { public virtual string Title { get; set; } = string.Empty; public virtual string Name { get; private set; } = string.Empty; public virtual uint Version { get; set; } = 1; public virtual uint Order { get; set; } = 0; - public virtual bool Published { get; set; } = false; + public virtual bool Published { get; set; } = false; public Guid? TenantId { get; set; } - + + // For reporting purposes + public virtual string ReportColumns { get; set; } = string.Empty; + public virtual string ReportKeys { get; set; } = string.Empty; + public virtual string ReportViewName { get; set; } = string.Empty; public virtual Collection Sections { get; private set; } = []; public virtual Collection Instances { get; private set; } = []; @@ -100,5 +105,14 @@ internal Scoresheet CloneSection(ScoresheetSection clonedSection) Sections.Add(clonedSection); return this; } + + public Scoresheet SetReportingFields(string keys, string columns, string reportViewName) + { + ReportColumns = columns; + ReportViewName = reportViewName; + ReportKeys = keys; + + return this; + } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/Worksheet.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/Worksheet.cs index 71c011659..34b24f648 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/Worksheet.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/Worksheet.cs @@ -6,10 +6,11 @@ using Volo.Abp.Domain.Entities.Auditing; using Volo.Abp.MultiTenancy; using Unity.Flex.Worksheets; +using Unity.Flex.Reporting; namespace Unity.Flex.Domain.Worksheets { - public class Worksheet : FullAuditedAggregateRoot, IMultiTenant + public class Worksheet : FullAuditedAggregateRoot, IMultiTenant, IReportableEntity { public virtual string Name { get; private set; } = string.Empty; public virtual string Title { get; private set; } = string.Empty; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DynamicViewGeneratorEto.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DynamicViewGeneratorEto.cs new file mode 100644 index 000000000..6f53af203 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DynamicViewGeneratorEto.cs @@ -0,0 +1,9 @@ +using System; + +namespace Unity.Flex.Reporting +{ + public class DynamicViewGeneratorEto + { + public Guid? TenantId { get; set; } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CheckboxGroupReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs similarity index 63% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CheckboxGroupReportingFieldsGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs index 8c03d21a8..415779134 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CheckboxGroupReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs @@ -1,10 +1,10 @@ using System; using Unity.Flex.Domain.Worksheets; -namespace Unity.Flex.Reporting.FieldGenerators +namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators { public class CheckboxGroupReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) - : ReportingFieldsGeneratorBase(customField, separator, maxColumnLength), IReportingFieldsGenerator + : CustomFieldsReportingGenerator(customField, separator, maxColumnLength), IReportingFieldsGenerator { public (string columns, string keys) Generate() { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorBase.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs similarity index 60% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorBase.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs index 2a1de8127..5bed61462 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorBase.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs @@ -1,14 +1,14 @@ using Unity.Flex.Domain.Worksheets; -namespace Unity.Flex.Reporting.FieldGenerators +namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators { - public class ReportingFieldsGeneratorBase + public class CustomFieldsReportingGenerator { protected readonly CustomField customField; protected readonly char separator; protected readonly uint maxColumnLength; - protected ReportingFieldsGeneratorBase(CustomField customField, char separator, uint maxColumnLength) + protected CustomFieldsReportingGenerator(CustomField customField, char separator, uint maxColumnLength) { this.customField = customField; this.separator = separator; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/DataGridReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs similarity index 63% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/DataGridReportingFieldsGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs index d46ddecb3..e6136d216 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/DataGridReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs @@ -1,10 +1,10 @@ using System; using Unity.Flex.Domain.Worksheets; -namespace Unity.Flex.Reporting.FieldGenerators +namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators { public class DataGridReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) - : ReportingFieldsGeneratorBase(customField, separator, maxColumnLength), IReportingFieldsGenerator + : CustomFieldsReportingGenerator(customField, separator, maxColumnLength), IReportingFieldsGenerator { public (string columns, string keys) Generate() { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/DefaultReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs similarity index 66% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/DefaultReportingFieldsGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs index 13989ae2b..847511814 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/DefaultReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs @@ -1,9 +1,9 @@ using Unity.Flex.Domain.Worksheets; -namespace Unity.Flex.Reporting.FieldGenerators +namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators { public class DefaultReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) - : ReportingFieldsGeneratorBase(customField, separator, maxColumnLength), IReportingFieldsGenerator + : CustomFieldsReportingGenerator(customField, separator, maxColumnLength), IReportingFieldsGenerator { public (string columns, string keys) Generate() { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs index bd6a677e6..e299259bf 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs @@ -1,9 +1,7 @@ -using Unity.Flex.Domain.Worksheets; - -namespace Unity.Flex.Reporting.FieldGenerators +namespace Unity.Flex.Reporting.FieldGenerators { - public interface IReportingFieldsGeneratorService + public interface IReportingFieldsGeneratorService where T : IReportableEntity { - Worksheet GenerateAndSet(Worksheet worksheet, char separator = '|', uint maxColumnLength = 63); + T GenerateAndSet(T worksheet, char separator = '|', uint maxColumnLength = 63); } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs new file mode 100644 index 000000000..48abc7745 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs @@ -0,0 +1,13 @@ +using Unity.Flex.Domain.Scoresheets; + +namespace Unity.Flex.Reporting.FieldGenerators.QuestionFieldGenerators +{ + public class DefaultFieldsGenerator(Question question, char separator, uint maxColumnLength) + : QuestionsReportingGenerator(question, separator, maxColumnLength), IReportingFieldsGenerator + { + public (string columns, string keys) Generate() + { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs new file mode 100644 index 000000000..943df7ff5 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs @@ -0,0 +1,18 @@ +using Unity.Flex.Domain.Scoresheets; + +namespace Unity.Flex.Reporting.FieldGenerators.QuestionFieldGenerators +{ + public class QuestionsReportingGenerator + { + protected readonly Question question; + protected readonly char separator; + protected readonly uint maxColumnLength; + + protected QuestionsReportingGenerator(Question question, char separator, uint maxColumnLength) + { + this.question = question; + this.separator = separator; + this.maxColumnLength = maxColumnLength; + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs index e33384888..480235d2e 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs @@ -1,4 +1,7 @@ -using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Domain.Scoresheets; +using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators; +using Unity.Flex.Reporting.FieldGenerators.QuestionFieldGenerators; using Unity.Flex.Worksheets; namespace Unity.Flex.Reporting.FieldGenerators @@ -14,5 +17,10 @@ public static IReportingFieldsGenerator Create(CustomField customField, char sep _ => new DefaultReportingFieldsGenerator(customField, separator, maxColumnLength), }; } + + public static IReportingFieldsGenerator Create(Question question, char separator, uint maxColumnLength) + { + return new DefaultFieldsGenerator(question, separator, maxColumnLength); + } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs new file mode 100644 index 000000000..355c91a6c --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs @@ -0,0 +1,60 @@ +using Volo.Abp.Application.Services; +using Volo.Abp; +using Volo.Abp.EventBus.Local; +using Unity.Flex.Domain.Scoresheets; +using System.Text; +using System.Linq; + +namespace Unity.Flex.Reporting.FieldGenerators +{ + [RemoteService(false)] + public class ScoresheetReportingFieldsGeneratorService(ILocalEventBus localEventBus) : ApplicationService, + IReportingFieldsGeneratorService + { + public Scoresheet GenerateAndSet(Scoresheet worksheet, char separator = '|', uint maxColumnLength = 63) + { + var (reportingKeys, reportingColumns, reportViewName) = GenerateReportingFields(worksheet, separator, maxColumnLength); + worksheet.SetReportingFields(reportingKeys, reportingColumns, reportViewName); + + localEventBus.PublishAsync(new WorksheetsDynamicViewGeneratorEto() + { + TenantId = CurrentTenant.Id, + WorksheetId = worksheet.Id + }, true); + + return worksheet; + } + + private static (string reportingKeys, string reportingColumns, string reportViewName) GenerateReportingFields(Scoresheet scoresheet, + char separator, + uint maxColumnLength) + { + StringBuilder keysBuilder = new(); + StringBuilder columnsBuilder = new(); + + foreach (var field in scoresheet.Sections.SelectMany(s => s.Fields)) + { + var (columns, keys) = ReportingFieldsGeneratorFactory + .Create(field, separator, maxColumnLength) + .Generate(); + + columnsBuilder.Append(columns).Append(separator); + keysBuilder.Append(keys).Append(separator); + } + + // Remove the trailing separator + if (columnsBuilder.Length > 0) + { + columnsBuilder.Length--; + // Remove the last separator + } + + if (keysBuilder.Length > 0) + { + keysBuilder.Length--; // Remove the last separator + } + + return new(columnsBuilder.ToString(), keysBuilder.ToString(), $"Scoresheet-{scoresheet.Name}"); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs similarity index 92% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs index f8cf5a7d4..69a567b73 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs @@ -8,7 +8,8 @@ namespace Unity.Flex.Reporting.FieldGenerators { [RemoteService(false)] - public class ReportingFieldsGeneratorService(ILocalEventBus localEventBus) : ApplicationService, IReportingFieldsGeneratorService + public class WorksheetReportingFieldsGeneratorService(ILocalEventBus localEventBus) : ApplicationService, + IReportingFieldsGeneratorService { public Worksheet GenerateAndSet(Worksheet worksheet, char separator = '|', uint maxColumnLength = 63) { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/IReportableEntity.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/IReportableEntity.cs new file mode 100644 index 000000000..fa5a0450c --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/IReportableEntity.cs @@ -0,0 +1,11 @@ +namespace Unity.Flex.Reporting +{ + public interface IReportableEntity + { + string ReportColumns { get; set; } + string ReportKeys { get; set; } + string ReportViewName { get; set; } + + T SetReportingFields(string keys, string columns, string reportViewName); + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ScoresheetsDynamicViewGeneratorEto.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ScoresheetsDynamicViewGeneratorEto.cs new file mode 100644 index 000000000..2195ca3cb --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ScoresheetsDynamicViewGeneratorEto.cs @@ -0,0 +1,9 @@ +using System; + +namespace Unity.Flex.Reporting +{ + public class ScoresheetsDynamicViewGeneratorEto : DynamicViewGeneratorEto + { + public Guid ScoresheetId { get; set; } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ScoresheetsDynamicViewGeneratorHandler.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ScoresheetsDynamicViewGeneratorHandler.cs new file mode 100644 index 000000000..a31b26b28 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ScoresheetsDynamicViewGeneratorHandler.cs @@ -0,0 +1,46 @@ +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Logging; +using System; +using System.Threading.Tasks; +using Unity.Flex.Domain.Scoresheets; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Domain.Repositories; +using Volo.Abp.EventBus; +using Volo.Abp.MultiTenancy; +using Volo.Abp.Uow; + +namespace Unity.Flex.Reporting +{ + public class ScoresheetsDynamicViewGeneratorHandler( + IScoresheetRepository scoresheetRepository, + ICurrentTenant currentTenant, + IUnitOfWorkManager unitOfWorkManager, + ILogger logger) : ILocalEventHandler, ITransientDependency + { + public async Task HandleEventAsync(ScoresheetsDynamicViewGeneratorEto viewGenerationEvent) + { + try + { + using (currentTenant.Change(viewGenerationEvent.TenantId)) + { + using var uow = unitOfWorkManager.Begin(isTransactional: false); + + var worksheet = await scoresheetRepository.GetAsync(viewGenerationEvent.ScoresheetId); + + if (worksheet != null) + { + var dbContext = await scoresheetRepository.GetDbContextAsync(); + FormattableString sql = $@"CALL generate_scoresheets_view({viewGenerationEvent.ScoresheetId});"; + await dbContext.Database.ExecuteSqlAsync(sql); + } + + await uow.CompleteAsync(); + } + } + catch (Exception ex) + { + logger.LogError(ex, "{ErrorMessage}", ex.Message); + } + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorEto.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorEto.cs index a7b207cc7..d120b4ef3 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorEto.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorEto.cs @@ -2,9 +2,8 @@ namespace Unity.Flex.Reporting { - public class WorksheetsDynamicViewGeneratorEto + public class WorksheetsDynamicViewGeneratorEto : DynamicViewGeneratorEto { - public Guid? TenantId { get; set; } public Guid WorksheetId { get; set; } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs index b713bc8d6..6ac203da8 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs @@ -24,6 +24,7 @@ public async Task HandleEventAsync(WorksheetsDynamicViewGeneratorEto viewGenerat using (currentTenant.Change(viewGenerationEvent.TenantId)) { using var uow = unitOfWorkManager.Begin(isTransactional: false); + var worksheet = await worksheetRepository.GetAsync(viewGenerationEvent.WorksheetId); if (worksheet != null) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs index 22d2aab07..5afed7bb9 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs @@ -7,6 +7,8 @@ using Unity.Flex.Domain.Scoresheets; using Unity.Flex.Domain.Settings; using Unity.Flex.Domain.Utils; +using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Reporting.FieldGenerators; using Volo.Abp; using Volo.Abp.Uow; using Volo.Abp.Validation; @@ -14,45 +16,35 @@ namespace Unity.Flex.Scoresheets { [Authorize] - public partial class ScoresheetAppService : FlexAppService, IScoresheetAppService + public partial class ScoresheetAppService(IUnitOfWorkManager unitOfWorkManager, + IScoresheetRepository scoresheetRepository, + IScoresheetSectionRepository sectionRepository, + IQuestionRepository questionRepository, + IReportingFieldsGeneratorService reportingFieldsGeneratorService) : FlexAppService, IScoresheetAppService { - private readonly IScoresheetRepository _scoresheetRepository; - private readonly IScoresheetSectionRepository _sectionRepository; - private readonly IQuestionRepository _questionRepository; - - private readonly IUnitOfWorkManager _unitOfWorkManager; - private readonly static object _sectionLockObject = new(); private readonly static object _questionLockObject = new(); - public ScoresheetAppService(IUnitOfWorkManager unitOfWorkManager, IScoresheetRepository scoresheetRepository, IScoresheetSectionRepository sectionRepository, IQuestionRepository questionRepository) - { - _unitOfWorkManager = unitOfWorkManager; - _scoresheetRepository = scoresheetRepository; - _sectionRepository = sectionRepository; - _questionRepository = questionRepository; - } - public async Task> GetListAsync() { - var result = await _scoresheetRepository.GetListWithChildrenAsync(); + var result = await scoresheetRepository.GetListWithChildrenAsync(); return ObjectMapper.Map, List>(result); } public virtual async Task GetAsync(Guid id) { - return ObjectMapper.Map(await _scoresheetRepository.GetAsync(id)); + return ObjectMapper.Map(await scoresheetRepository.GetAsync(id)); } public async Task CreateAsync(CreateScoresheetDto dto) { - var existingScoresheet = await _scoresheetRepository.GetByNameAsync(dto.Name, false); + var existingScoresheet = await scoresheetRepository.GetByNameAsync(dto.Name, false); if (existingScoresheet != null) { throw new UserFriendlyException("Scoresheet names must be unique"); } - var result = await _scoresheetRepository.InsertAsync(new Scoresheet(Guid.NewGuid(), dto.Title, dto.Name)); + var result = await scoresheetRepository.InsertAsync(new Scoresheet(Guid.NewGuid(), dto.Title, dto.Name)); return ObjectMapper.Map(result); } @@ -62,12 +54,12 @@ public virtual async Task CreateQuestionInHighestOrderSectionAsync( lock (_questionLockObject) { - ScoresheetSection highestOrderSection = _sectionRepository.GetSectionWithHighestOrderAsync(scoresheetId, true).Result ?? throw new AbpValidationException("Scoresheet has no section."); + ScoresheetSection highestOrderSection = sectionRepository.GetSectionWithHighestOrderAsync(scoresheetId, true).Result ?? throw new AbpValidationException("Scoresheet has no section."); uint highestOrder = (highestOrderSection.Fields != null && highestOrderSection.Fields.Count > 0) ? highestOrderSection.Fields.Max(q => q.Order) : 0; var order = highestOrder + 1; var newQuestion = new Question(Guid.NewGuid(), dto.Name.Trim(), dto.Label, (QuestionType)dto.QuestionType, order, dto.Description, highestOrderSection.Id, dto.Definition); highestOrderSection.AddQuestion(newQuestion); - _ = _sectionRepository.UpdateAsync(highestOrderSection).Result; + _ = sectionRepository.UpdateAsync(highestOrderSection).Result; return ObjectMapper.Map(newQuestion); } } @@ -78,28 +70,28 @@ public virtual async Task CreateSectionAsync(Guid scoreshe lock (_sectionLockObject) { - ScoresheetSection? highestOrderSection = _sectionRepository.GetSectionWithHighestOrderAsync(scoresheetId, true).Result; + ScoresheetSection? highestOrderSection = sectionRepository.GetSectionWithHighestOrderAsync(scoresheetId, true).Result; var order = highestOrderSection == null ? 0 : highestOrderSection.Order + 1; - var scoresheet = _scoresheetRepository.GetAsync(scoresheetId, true).Result; + var scoresheet = scoresheetRepository.GetAsync(scoresheetId, true).Result; ScoresheetSection newSection = new(Guid.NewGuid(), dto.Name.Trim(), order); _ = scoresheet.AddSection(newSection); - _ = _scoresheetRepository.UpdateAsync(scoresheet).Result; + _ = scoresheetRepository.UpdateAsync(scoresheet).Result; return ObjectMapper.Map(newSection); } } public async Task UpdateAsync(Guid scoresheetId, EditScoresheetDto dto) { - var scoresheet = await _scoresheetRepository.GetAsync(scoresheetId); + var scoresheet = await scoresheetRepository.GetAsync(scoresheetId); scoresheet.Title = dto.Title; - await _scoresheetRepository.UpdateAsync(scoresheet); + await scoresheetRepository.UpdateAsync(scoresheet); } public async Task CloneScoresheetAsync(Guid scoresheetIdToClone) { - using var unitOfWork = _unitOfWorkManager.Begin(); + using var unitOfWork = unitOfWorkManager.Begin(); - var originalScoresheet = await _scoresheetRepository.GetWithChildrenAsync(scoresheetIdToClone) ?? throw new AbpValidationException("Scoresheet not found."); + var originalScoresheet = await scoresheetRepository.GetWithChildrenAsync(scoresheetIdToClone) ?? throw new AbpValidationException("Scoresheet not found."); var versionSplit = SheetParserFunctions.SplitSheetNameAndVersion(originalScoresheet.Name); var clonedScoresheet = new Scoresheet(Guid.NewGuid(), originalScoresheet.Title, $"{versionSplit[0]}-v{originalScoresheet.Version + 1}") { @@ -125,7 +117,7 @@ public async Task CloneScoresheetAsync(Guid scoresheetIdToClone) clonedScoresheet.Sections.Add(clonedSection); } - _ = await _scoresheetRepository.InsertAsync(clonedScoresheet); + _ = await scoresheetRepository.InsertAsync(clonedScoresheet); await unitOfWork.SaveChangesAsync(); await unitOfWork.CompleteAsync(); } @@ -133,7 +125,7 @@ public async Task CloneScoresheetAsync(Guid scoresheetIdToClone) public async Task DeleteAsync(Guid id) { await ValidateChangeableScoresheet(id); - await _scoresheetRepository.DeleteAsync(id); + await scoresheetRepository.DeleteAsync(id); } public async Task SaveOrder(List dto) @@ -145,23 +137,23 @@ public async Task SaveOrder(List dto) { if (item.Type == "section") { - var section = await _sectionRepository.GetAsync(item.Id) ?? throw new AbpValidationException("SectionId not found."); + var section = await sectionRepository.GetAsync(item.Id) ?? throw new AbpValidationException("SectionId not found."); section.Order = sectionOrder; sectionOrder++; questionOrder = 0; - await _sectionRepository.UpdateAsync(section); + await sectionRepository.UpdateAsync(section); currentSection = section; } else if (item.Type == "question") { - var question = await _questionRepository.GetAsync(item.Id) ?? throw new AbpValidationException("QuestionId not found."); + var question = await questionRepository.GetAsync(item.Id) ?? throw new AbpValidationException("QuestionId not found."); question.Order = questionOrder; questionOrder++; if (currentSection != null) { question.SectionId = currentSection.Id; } - await _questionRepository.UpdateAsync(question); + await questionRepository.UpdateAsync(question); } else { @@ -172,20 +164,20 @@ public async Task SaveOrder(List dto) public async Task> GetAllPublishedScoresheetsAsync() { - var result = await _scoresheetRepository.GetPublishedListAsync(); + var result = await scoresheetRepository.GetPublishedListAsync(); return ObjectMapper.Map, List>(result); } public async Task> GetNumericQuestionIdsAsync(List questionIdsToCheck) { - var existingQuestions = await _questionRepository.GetListAsync(); + var existingQuestions = await questionRepository.GetListAsync(); return existingQuestions.Where(q => questionIdsToCheck.Contains(q.Id) && q.Type == QuestionType.Number).Select(q => q.Id).ToList(); } public async Task ValidateChangeableScoresheet(Guid scoresheetId) { - var scoresheet = await _scoresheetRepository.GetAsync(scoresheetId); + var scoresheet = await scoresheetRepository.GetAsync(scoresheetId); if (scoresheet.Published) { throw new UserFriendlyException("Cannot change scoresheet. Scoresheet is already published."); @@ -194,9 +186,13 @@ public async Task ValidateChangeableScoresheet(Guid scoresheetId) public async Task PublishScoresheetAsync(Guid id) { - var scoresheet = await _scoresheetRepository.GetAsync(id); + var scoresheet = await scoresheetRepository.GetAsync(id); + scoresheet.Published = true; - await _scoresheetRepository.UpdateAsync(scoresheet); + + scoresheet = reportingFieldsGeneratorService.GenerateAndSet(scoresheet); + + await scoresheetRepository.UpdateAsync(scoresheet); } public async Task> GetYesNoQuestionsAsync(List questionIdsToCheck) @@ -207,14 +203,14 @@ public async Task> GetYesNoQuestionsAsync(List questionI private async Task> GetQuestionsAsync(List questionIdsToCheck, QuestionType type) { - var existingQuestions = await _questionRepository.GetListAsync(); + var existingQuestions = await questionRepository.GetListAsync(); var result = existingQuestions.Where(q => questionIdsToCheck.Contains(q.Id) && q.Type == type).ToList(); return result; } public async Task ExportScoresheet(Guid scoresheetId) { - var worksheet = await _scoresheetRepository.GetAsync(scoresheetId, true); + var worksheet = await scoresheetRepository.GetAsync(scoresheetId, true); var settings = new JsonSerializerSettings { Formatting = Formatting.Indented, @@ -244,7 +240,7 @@ public async Task ImportScoresheetAsync(ScoresheetImportDto scoresheetImportDto) string? name; - var scoresheets = await _scoresheetRepository.GetByNameStartsWithAsync(SheetParserFunctions.RemoveTrailingNumbers(scoresheet.Name)); + var scoresheets = await scoresheetRepository.GetByNameStartsWithAsync(SheetParserFunctions.RemoveTrailingNumbers(scoresheet.Name)); uint maxVersion = 0; uint newVersion = 0; @@ -279,7 +275,7 @@ public async Task ImportScoresheetAsync(ScoresheetImportDto scoresheetImportDto) newScoresheet.Published = false; - await _scoresheetRepository.InsertAsync(newScoresheet); + await scoresheetRepository.InsertAsync(newScoresheet); } @@ -295,9 +291,9 @@ public async Task SaveScoresheetOrder(List scoresheetIds) uint index = 0; foreach (Guid id in scoresheetIds) { - var scoresheet = await _scoresheetRepository.GetAsync(id); + var scoresheet = await scoresheetRepository.GetAsync(id); scoresheet.Order = index++; - await _scoresheetRepository.UpdateAsync(scoresheet); + await scoresheetRepository.UpdateAsync(scoresheet); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs index 0d3599921..3f0eab68d 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs @@ -16,7 +16,7 @@ namespace Unity.Flex.Worksheets [Authorize] public partial class WorksheetAppService(IWorksheetRepository worksheetRepository, WorksheetsManager worksheetsManager, - IReportingFieldsGeneratorService reportingFieldsGeneratorService) : FlexAppService, IWorksheetAppService + IReportingFieldsGeneratorService reportingFieldsGeneratorService) : FlexAppService, IWorksheetAppService { public virtual async Task GetAsync(Guid id) { diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109192642_AddScoresheetReportingColumns.Designer.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109192642_AddScoresheetReportingColumns.Designer.cs new file mode 100644 index 000000000..3bb4bb9ce --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109192642_AddScoresheetReportingColumns.Designer.cs @@ -0,0 +1,3361 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Unity.GrantManager.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + [DbContext(typeof(GrantTenantDbContext))] + [Migration("20250109192642_AddScoresheetReportingColumns")] + partial class AddScoresheetReportingColumns + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("ScoresheetInstanceId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("QuestionId"); + + b.HasIndex("ScoresheetInstanceId"); + + b.ToTable("Answers", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("Questions", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Scoresheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("CustomFieldId") + .HasColumnType("uuid"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetInstanceId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetInstanceId"); + + b.ToTable("CustomFieldValues", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetCorrelationId") + .HasColumnType("uuid"); + + b.Property("WorksheetCorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("WorksheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetLinks", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("CustomFields", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Worksheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantName") + .IsRequired() + .HasMaxLength(600) + .HasColumnType("character varying(600)"); + + b.Property("ApproxNumberOfEmployees") + .HasColumnType("text"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FiscalDay") + .HasColumnType("integer"); + + b.Property("FiscalMonth") + .HasColumnType("text"); + + b.Property("IndigenousOrgInd") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MatchPercentage") + .HasColumnType("numeric"); + + b.Property("NonRegisteredBusinessName") + .HasColumnType("text"); + + b.Property("OrgName") + .HasColumnType("text"); + + b.Property("OrgNumber") + .HasColumnType("text"); + + b.Property("OrgStatus") + .HasColumnType("text"); + + b.Property("OrganizationSize") + .HasColumnType("text"); + + b.Property("OrganizationType") + .HasColumnType("text"); + + b.Property("RedStop") + .HasColumnType("boolean"); + + b.Property("Sector") + .HasColumnType("text"); + + b.Property("SectorSubSectorIndustryDesc") + .HasColumnType("text"); + + b.Property("StartedOperatingDate") + .HasColumnType("date"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SubSector") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UnityApplicantId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantName"); + + b.ToTable("Applicants", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AddressType") + .HasColumnType("integer"); + + b.Property("ApplicantId") + .IsRequired() + .HasColumnType("uuid"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Postal") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("Street2") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Unit") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.ToTable("ApplicantAddresses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("BceidBusinessGuid") + .HasColumnType("uuid"); + + b.Property("BceidBusinessName") + .HasColumnType("text"); + + b.Property("BceidUserGuid") + .HasColumnType("uuid"); + + b.Property("BceidUserName") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactOrder") + .HasColumnType("integer"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IdentityEmail") + .HasColumnType("text"); + + b.Property("IdentityName") + .HasColumnType("text"); + + b.Property("IdentityProvider") + .HasColumnType("text"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsConfirmed") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSubUser") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Phone2") + .HasColumnType("text"); + + b.Property("Phone2Extension") + .HasColumnType("text"); + + b.Property("PhoneExtension") + .HasColumnType("text"); + + b.Property("RoleForApplicant") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationId") + .IsUnique(); + + b.HasIndex("OidcSubUser"); + + b.ToTable("ApplicantAgents", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Acquisition") + .HasColumnType("text"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationStatusId") + .HasColumnType("uuid"); + + b.Property("ApprovedAmount") + .HasColumnType("numeric"); + + b.Property("AssessmentResultDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AssessmentResultStatus") + .HasColumnType("text"); + + b.Property("AssessmentStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Community") + .HasColumnType("text"); + + b.Property("CommunityPopulation") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractExecutionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ContractNumber") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeclineRational") + .HasColumnType("text"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("DueDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DueDiligenceStatus") + .HasColumnType("text"); + + b.Property("EconomicRegion") + .HasColumnType("text"); + + b.Property("ElectoralDistrict") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinalDecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("Forestry") + .HasColumnType("text"); + + b.Property("ForestryFocus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LikelihoodOfFunding") + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("NotificationDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("Payload") + .HasColumnType("jsonb"); + + b.Property("PercentageTotalProjectBudget") + .HasColumnType("double precision"); + + b.Property("Place") + .HasColumnType("text"); + + b.Property("ProjectEndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectFundingTotal") + .HasColumnType("numeric"); + + b.Property("ProjectName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("ProjectStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectSummary") + .HasColumnType("text"); + + b.Property("ProposalDate") + .HasColumnType("timestamp without time zone"); + + b.Property("RecommendedAmount") + .HasColumnType("numeric"); + + b.Property("ReferenceNo") + .IsRequired() + .HasColumnType("text"); + + b.Property("RegionalDistrict") + .HasColumnType("text"); + + b.Property("RequestedAmount") + .HasColumnType("numeric"); + + b.Property("RiskRanking") + .HasColumnType("text"); + + b.Property("SigningAuthorityBusinessPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityCellPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityEmail") + .HasColumnType("text"); + + b.Property("SigningAuthorityFullName") + .HasColumnType("text"); + + b.Property("SigningAuthorityTitle") + .HasColumnType("text"); + + b.Property("SubStatus") + .HasColumnType("text"); + + b.Property("SubmissionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TotalProjectBudget") + .HasColumnType("numeric"); + + b.Property("TotalScore") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.HasIndex("ApplicationStatusId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Applications", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssigneeId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Duty") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssigneeId"); + + b.ToTable("ApplicationAssignments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsFileId") + .HasColumnType("text"); + + b.Property("ChefsSumbissionId") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationChefsFileAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactEmail") + .HasColumnType("text"); + + b.Property("ContactFullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactMobilePhone") + .HasColumnType("text"); + + b.Property("ContactTitle") + .HasColumnType("text"); + + b.Property("ContactType") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactWorkPhone") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationContact", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApiKey") + .HasColumnType("text"); + + b.Property("ApplicationFormDescription") + .HasColumnType("text"); + + b.Property("ApplicationFormName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("AttemptedConnectionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("Category") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsCriteriaFormGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConnectionHttpStatus") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeId") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Payable") + .HasColumnType("boolean"); + + b.Property("RenderFormIoToHtml") + .HasColumnType("boolean"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("IntakeId"); + + b.ToTable("ApplicationForms", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormVersionId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsSubmissionGuid") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FormVersionId") + .HasColumnType("uuid"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("RenderedHTML") + .HasColumnType("text"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Submission") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormSubmissions", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsFormVersionGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SubmissionHeaderMapping") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormVersion", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LinkedApplicationId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationLinks", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StatusCode") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("StatusCode") + .IsUnique(); + + b.ToTable("ApplicationStatuses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationTags", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.ToTable("AssessmentAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ApprovalRecommended") + .HasColumnType("boolean"); + + b.Property("AssessorId") + .HasColumnType("uuid"); + + b.Property("CleanGrowth") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("EconomicImpact") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinancialAnalysis") + .HasColumnType("integer"); + + b.Property("InclusiveGrowth") + .HasColumnType("integer"); + + b.Property("IsComplete") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssessorId"); + + b.ToTable("Assessments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("CommenterId"); + + b.ToTable("ApplicationComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.HasIndex("CommenterId"); + + b.ToTable("AssessmentComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Identity.Person", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Badge") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcDisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("OidcSub"); + + b.ToTable("Persons", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Intakes.Intake", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Budget") + .HasColumnType("double precision"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Intakes", (string)null); + }); + + modelBuilder.Entity("Unity.Notifications.Emails.EmailLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("BodyType") + .IsRequired() + .HasColumnType("text"); + + b.Property("CC") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesMsgId") + .HasColumnType("uuid"); + + b.Property("ChesResponse") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FromAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Priority") + .IsRequired() + .HasColumnType("text"); + + b.Property("RetryAttempts") + .HasColumnType("integer"); + + b.Property("SendOnDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SentDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tag") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("ToAddress") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EmailLogs", "Notifications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentConfigurations.PaymentConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MinistryClient") + .HasColumnType("text"); + + b.Property("PaymentIdPrefix") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentThreshold") + .HasColumnType("numeric"); + + b.Property("ProjectNumber") + .HasColumnType("text"); + + b.Property("Responsibility") + .HasColumnType("text"); + + b.Property("ServiceLine") + .HasColumnType("text"); + + b.Property("Stob") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("PaymentConfigurations", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PaymentRequestId"); + + b.ToTable("ExpenseApprovals", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("numeric"); + + b.Property("BatchName") + .IsRequired() + .HasColumnType("text"); + + b.Property("BatchNumber") + .HasColumnType("numeric"); + + b.Property("CasHttpStatusCode") + .HasColumnType("integer"); + + b.Property("CasResponse") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InvoiceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("InvoiceStatus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRecon") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PayeeName") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("text"); + + b.Property("PaymentNumber") + .HasColumnType("text"); + + b.Property("PaymentStatus") + .HasColumnType("text"); + + b.Property("ReferenceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("RequesterName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SiteId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("SupplierNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ReferenceNumber") + .IsUnique(); + + b.HasIndex("SiteId"); + + b.ToTable("PaymentRequests", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddressLine1") + .HasColumnType("text"); + + b.Property("AddressLine2") + .HasColumnType("text"); + + b.Property("AddressLine3") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EFTAdvicePref") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCas") + .HasColumnType("timestamp without time zone"); + + b.Property("Number") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentGroup") + .HasColumnType("integer"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SiteProtected") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("SupplierId"); + + b.ToTable("Sites", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCAS") + .HasColumnType("timestamp without time zone"); + + b.Property("MailingAddress") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SIN") + .HasColumnType("text"); + + b.Property("StandardIndustryClassification") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("Subcategory") + .HasColumnType("text"); + + b.Property("SupplierProtected") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Suppliers", "Payments"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Instances") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Question", "Question") + .WithMany("Answers") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", null) + .WithMany("Answers") + .HasForeignKey("ScoresheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.ScoresheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Sections") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.HasOne("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", null) + .WithMany("Values") + .HasForeignKey("WorksheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Links") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.WorksheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Sections") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany("ApplicantAddresses") + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Applicant"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithOne("ApplicantAgent") + .HasForeignKey("Unity.GrantManager.Applications.ApplicantAgent", "ApplicationId"); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("OidcSubUser") + .HasPrincipalKey("OidcSub"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", "ApplicationForm") + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationStatus", "ApplicationStatus") + .WithMany("Applications") + .HasForeignKey("ApplicationStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.NoAction); + + b.Navigation("Applicant"); + + b.Navigation("ApplicationForm"); + + b.Navigation("ApplicationStatus"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationAssignments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Assignee") + .WithMany() + .HasForeignKey("AssigneeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Application"); + + b.Navigation("Assignee"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.HasOne("Unity.GrantManager.Intakes.Intake", null) + .WithMany() + .HasForeignKey("IntakeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationTags") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("Assessments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("AssessorId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.HasOne("Unity.Payments.Domain.PaymentRequests.PaymentRequest", "PaymentRequest") + .WithMany("ExpenseApprovals") + .HasForeignKey("PaymentRequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentRequest"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Site", "Site") + .WithMany() + .HasForeignKey("SiteId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Site"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Supplier", "Supplier") + .WithMany("Sites") + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Navigation("Values"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Navigation("Links"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Navigation("ApplicantAddresses"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Navigation("ApplicantAgent"); + + b.Navigation("ApplicationAssignments"); + + b.Navigation("ApplicationTags"); + + b.Navigation("Assessments"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Navigation("ExpenseApprovals"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Navigation("Sites"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109192642_AddScoresheetReportingColumns.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109192642_AddScoresheetReportingColumns.cs new file mode 100644 index 000000000..d11445c78 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109192642_AddScoresheetReportingColumns.cs @@ -0,0 +1,70 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + /// + public partial class AddScoresheetReportingColumns : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "ReportColumns", + schema: "Flex", + table: "Scoresheets", + type: "text", + nullable: false, + defaultValue: ""); + + migrationBuilder.AddColumn( + name: "ReportKeys", + schema: "Flex", + table: "Scoresheets", + type: "text", + nullable: false, + defaultValue: ""); + + migrationBuilder.AddColumn( + name: "ReportViewName", + schema: "Flex", + table: "Scoresheets", + type: "text", + nullable: false, + defaultValue: ""); + + migrationBuilder.AddColumn( + name: "ReportData", + schema: "Flex", + table: "ScoresheetInstances", + type: "jsonb", + nullable: false, + defaultValue: ""); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ReportColumns", + schema: "Flex", + table: "Scoresheets"); + + migrationBuilder.DropColumn( + name: "ReportKeys", + schema: "Flex", + table: "Scoresheets"); + + migrationBuilder.DropColumn( + name: "ReportViewName", + schema: "Flex", + table: "Scoresheets"); + + migrationBuilder.DropColumn( + name: "ReportData", + schema: "Flex", + table: "ScoresheetInstances"); + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109193223_AddScoresheetDynamicViewGenerator.Designer.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109193223_AddScoresheetDynamicViewGenerator.Designer.cs new file mode 100644 index 000000000..2f56f6dbc --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109193223_AddScoresheetDynamicViewGenerator.Designer.cs @@ -0,0 +1,3361 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Unity.GrantManager.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + [DbContext(typeof(GrantTenantDbContext))] + [Migration("20250109193223_AddScoresheetDynamicViewGenerator")] + partial class AddScoresheetDynamicViewGenerator + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("ScoresheetInstanceId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("QuestionId"); + + b.HasIndex("ScoresheetInstanceId"); + + b.ToTable("Answers", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("Questions", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Scoresheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("CustomFieldId") + .HasColumnType("uuid"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetInstanceId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetInstanceId"); + + b.ToTable("CustomFieldValues", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetCorrelationId") + .HasColumnType("uuid"); + + b.Property("WorksheetCorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("WorksheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetLinks", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("CustomFields", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Worksheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantName") + .IsRequired() + .HasMaxLength(600) + .HasColumnType("character varying(600)"); + + b.Property("ApproxNumberOfEmployees") + .HasColumnType("text"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FiscalDay") + .HasColumnType("integer"); + + b.Property("FiscalMonth") + .HasColumnType("text"); + + b.Property("IndigenousOrgInd") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MatchPercentage") + .HasColumnType("numeric"); + + b.Property("NonRegisteredBusinessName") + .HasColumnType("text"); + + b.Property("OrgName") + .HasColumnType("text"); + + b.Property("OrgNumber") + .HasColumnType("text"); + + b.Property("OrgStatus") + .HasColumnType("text"); + + b.Property("OrganizationSize") + .HasColumnType("text"); + + b.Property("OrganizationType") + .HasColumnType("text"); + + b.Property("RedStop") + .HasColumnType("boolean"); + + b.Property("Sector") + .HasColumnType("text"); + + b.Property("SectorSubSectorIndustryDesc") + .HasColumnType("text"); + + b.Property("StartedOperatingDate") + .HasColumnType("date"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SubSector") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UnityApplicantId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantName"); + + b.ToTable("Applicants", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AddressType") + .HasColumnType("integer"); + + b.Property("ApplicantId") + .IsRequired() + .HasColumnType("uuid"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Postal") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("Street2") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Unit") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.ToTable("ApplicantAddresses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("BceidBusinessGuid") + .HasColumnType("uuid"); + + b.Property("BceidBusinessName") + .HasColumnType("text"); + + b.Property("BceidUserGuid") + .HasColumnType("uuid"); + + b.Property("BceidUserName") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactOrder") + .HasColumnType("integer"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IdentityEmail") + .HasColumnType("text"); + + b.Property("IdentityName") + .HasColumnType("text"); + + b.Property("IdentityProvider") + .HasColumnType("text"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsConfirmed") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSubUser") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Phone2") + .HasColumnType("text"); + + b.Property("Phone2Extension") + .HasColumnType("text"); + + b.Property("PhoneExtension") + .HasColumnType("text"); + + b.Property("RoleForApplicant") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationId") + .IsUnique(); + + b.HasIndex("OidcSubUser"); + + b.ToTable("ApplicantAgents", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Acquisition") + .HasColumnType("text"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationStatusId") + .HasColumnType("uuid"); + + b.Property("ApprovedAmount") + .HasColumnType("numeric"); + + b.Property("AssessmentResultDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AssessmentResultStatus") + .HasColumnType("text"); + + b.Property("AssessmentStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Community") + .HasColumnType("text"); + + b.Property("CommunityPopulation") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractExecutionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ContractNumber") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeclineRational") + .HasColumnType("text"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("DueDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DueDiligenceStatus") + .HasColumnType("text"); + + b.Property("EconomicRegion") + .HasColumnType("text"); + + b.Property("ElectoralDistrict") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinalDecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("Forestry") + .HasColumnType("text"); + + b.Property("ForestryFocus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LikelihoodOfFunding") + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("NotificationDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("Payload") + .HasColumnType("jsonb"); + + b.Property("PercentageTotalProjectBudget") + .HasColumnType("double precision"); + + b.Property("Place") + .HasColumnType("text"); + + b.Property("ProjectEndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectFundingTotal") + .HasColumnType("numeric"); + + b.Property("ProjectName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("ProjectStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectSummary") + .HasColumnType("text"); + + b.Property("ProposalDate") + .HasColumnType("timestamp without time zone"); + + b.Property("RecommendedAmount") + .HasColumnType("numeric"); + + b.Property("ReferenceNo") + .IsRequired() + .HasColumnType("text"); + + b.Property("RegionalDistrict") + .HasColumnType("text"); + + b.Property("RequestedAmount") + .HasColumnType("numeric"); + + b.Property("RiskRanking") + .HasColumnType("text"); + + b.Property("SigningAuthorityBusinessPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityCellPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityEmail") + .HasColumnType("text"); + + b.Property("SigningAuthorityFullName") + .HasColumnType("text"); + + b.Property("SigningAuthorityTitle") + .HasColumnType("text"); + + b.Property("SubStatus") + .HasColumnType("text"); + + b.Property("SubmissionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TotalProjectBudget") + .HasColumnType("numeric"); + + b.Property("TotalScore") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.HasIndex("ApplicationStatusId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Applications", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssigneeId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Duty") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssigneeId"); + + b.ToTable("ApplicationAssignments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsFileId") + .HasColumnType("text"); + + b.Property("ChefsSumbissionId") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationChefsFileAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactEmail") + .HasColumnType("text"); + + b.Property("ContactFullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactMobilePhone") + .HasColumnType("text"); + + b.Property("ContactTitle") + .HasColumnType("text"); + + b.Property("ContactType") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactWorkPhone") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationContact", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApiKey") + .HasColumnType("text"); + + b.Property("ApplicationFormDescription") + .HasColumnType("text"); + + b.Property("ApplicationFormName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("AttemptedConnectionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("Category") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsCriteriaFormGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConnectionHttpStatus") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeId") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Payable") + .HasColumnType("boolean"); + + b.Property("RenderFormIoToHtml") + .HasColumnType("boolean"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("IntakeId"); + + b.ToTable("ApplicationForms", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormVersionId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsSubmissionGuid") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FormVersionId") + .HasColumnType("uuid"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("RenderedHTML") + .HasColumnType("text"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Submission") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormSubmissions", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsFormVersionGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SubmissionHeaderMapping") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormVersion", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LinkedApplicationId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationLinks", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StatusCode") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("StatusCode") + .IsUnique(); + + b.ToTable("ApplicationStatuses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationTags", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.ToTable("AssessmentAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ApprovalRecommended") + .HasColumnType("boolean"); + + b.Property("AssessorId") + .HasColumnType("uuid"); + + b.Property("CleanGrowth") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("EconomicImpact") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinancialAnalysis") + .HasColumnType("integer"); + + b.Property("InclusiveGrowth") + .HasColumnType("integer"); + + b.Property("IsComplete") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssessorId"); + + b.ToTable("Assessments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("CommenterId"); + + b.ToTable("ApplicationComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.HasIndex("CommenterId"); + + b.ToTable("AssessmentComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Identity.Person", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Badge") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcDisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("OidcSub"); + + b.ToTable("Persons", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Intakes.Intake", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Budget") + .HasColumnType("double precision"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Intakes", (string)null); + }); + + modelBuilder.Entity("Unity.Notifications.Emails.EmailLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("BodyType") + .IsRequired() + .HasColumnType("text"); + + b.Property("CC") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesMsgId") + .HasColumnType("uuid"); + + b.Property("ChesResponse") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FromAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Priority") + .IsRequired() + .HasColumnType("text"); + + b.Property("RetryAttempts") + .HasColumnType("integer"); + + b.Property("SendOnDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SentDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tag") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("ToAddress") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EmailLogs", "Notifications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentConfigurations.PaymentConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MinistryClient") + .HasColumnType("text"); + + b.Property("PaymentIdPrefix") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentThreshold") + .HasColumnType("numeric"); + + b.Property("ProjectNumber") + .HasColumnType("text"); + + b.Property("Responsibility") + .HasColumnType("text"); + + b.Property("ServiceLine") + .HasColumnType("text"); + + b.Property("Stob") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("PaymentConfigurations", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PaymentRequestId"); + + b.ToTable("ExpenseApprovals", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("numeric"); + + b.Property("BatchName") + .IsRequired() + .HasColumnType("text"); + + b.Property("BatchNumber") + .HasColumnType("numeric"); + + b.Property("CasHttpStatusCode") + .HasColumnType("integer"); + + b.Property("CasResponse") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InvoiceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("InvoiceStatus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRecon") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PayeeName") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("text"); + + b.Property("PaymentNumber") + .HasColumnType("text"); + + b.Property("PaymentStatus") + .HasColumnType("text"); + + b.Property("ReferenceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("RequesterName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SiteId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("SupplierNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ReferenceNumber") + .IsUnique(); + + b.HasIndex("SiteId"); + + b.ToTable("PaymentRequests", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddressLine1") + .HasColumnType("text"); + + b.Property("AddressLine2") + .HasColumnType("text"); + + b.Property("AddressLine3") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EFTAdvicePref") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCas") + .HasColumnType("timestamp without time zone"); + + b.Property("Number") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentGroup") + .HasColumnType("integer"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SiteProtected") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("SupplierId"); + + b.ToTable("Sites", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCAS") + .HasColumnType("timestamp without time zone"); + + b.Property("MailingAddress") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SIN") + .HasColumnType("text"); + + b.Property("StandardIndustryClassification") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("Subcategory") + .HasColumnType("text"); + + b.Property("SupplierProtected") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Suppliers", "Payments"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Instances") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Question", "Question") + .WithMany("Answers") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", null) + .WithMany("Answers") + .HasForeignKey("ScoresheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.ScoresheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Sections") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.HasOne("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", null) + .WithMany("Values") + .HasForeignKey("WorksheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Links") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.WorksheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Sections") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany("ApplicantAddresses") + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Applicant"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithOne("ApplicantAgent") + .HasForeignKey("Unity.GrantManager.Applications.ApplicantAgent", "ApplicationId"); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("OidcSubUser") + .HasPrincipalKey("OidcSub"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", "ApplicationForm") + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationStatus", "ApplicationStatus") + .WithMany("Applications") + .HasForeignKey("ApplicationStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.NoAction); + + b.Navigation("Applicant"); + + b.Navigation("ApplicationForm"); + + b.Navigation("ApplicationStatus"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationAssignments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Assignee") + .WithMany() + .HasForeignKey("AssigneeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Application"); + + b.Navigation("Assignee"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.HasOne("Unity.GrantManager.Intakes.Intake", null) + .WithMany() + .HasForeignKey("IntakeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationTags") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("Assessments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("AssessorId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.HasOne("Unity.Payments.Domain.PaymentRequests.PaymentRequest", "PaymentRequest") + .WithMany("ExpenseApprovals") + .HasForeignKey("PaymentRequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentRequest"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Site", "Site") + .WithMany() + .HasForeignKey("SiteId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Site"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Supplier", "Supplier") + .WithMany("Sites") + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Navigation("Values"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Navigation("Links"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Navigation("ApplicantAddresses"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Navigation("ApplicantAgent"); + + b.Navigation("ApplicationAssignments"); + + b.Navigation("ApplicationTags"); + + b.Navigation("Assessments"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Navigation("ExpenseApprovals"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Navigation("Sites"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109193223_AddScoresheetDynamicViewGenerator.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109193223_AddScoresheetDynamicViewGenerator.cs new file mode 100644 index 000000000..9e2e74bea --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250109193223_AddScoresheetDynamicViewGenerator.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + /// + public partial class AddScoresheetDynamicViewGenerator : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.Sql("CREATE OR REPLACE PROCEDURE generate_scoresheets_view(table_a_id UUID) AS $$\r\nDECLARE\r\n view_name TEXT;\r\n view_columns TEXT;\r\n view_keys TEXT;\r\n column_definitions TEXT;\r\n column_names TEXT[];\r\n key_names TEXT[];\r\n select_clause TEXT;\r\nBEGIN\r\n -- Fetch the name, columns, and keys from Table A\r\n SELECT \"ReportViewName\", \"ReportColumns\", \"ReportKeys\" INTO view_name, view_columns, view_keys\r\n FROM \"Flex\".\"Scoresheets\"\r\n WHERE \"Id\" = table_a_id;\r\n\r\n -- Split the columns and keys into individual names using pipe delimiter\r\n column_names := string_to_array(view_columns, '|');\r\n key_names := string_to_array(view_keys, '|');\r\n\r\n -- Create the column definitions for the view\r\n column_definitions := '';\r\n FOR i IN 1..array_length(column_names, 1) LOOP\r\n column_definitions := column_definitions || format('%I TEXT', column_names[i]);\r\n IF i < array_length(column_names, 1) THEN\r\n column_definitions := column_definitions || ', ';\r\n END IF;\r\n END LOOP;\r\n\r\n -- Create the select clause for the view\r\n select_clause := '';\r\n FOR i IN 1..array_length(key_names, 1) LOOP\r\n IF i > 1 THEN\r\n select_clause := select_clause || ', ';\r\n END IF;\r\n select_clause := select_clause || format(\r\n 'COALESCE((\r\n SELECT value::TEXT\r\n FROM jsonb_each_text(\"ReportData\")\r\n WHERE key = %L\r\n LIMIT 1\r\n ), '''') AS %I',\r\n key_names[i], column_names[i]\r\n );\r\n END LOOP;\r\n\r\n -- Drop the view if it already exists to avoid type conflicts\r\n EXECUTE format('DROP VIEW IF EXISTS %I', view_name);\r\n\r\n -- Create the view query dynamically\r\n EXECUTE format('CREATE VIEW %I AS SELECT \"Id\", %s FROM (SELECT \"Id\", \"ReportData\" FROM \"Flex\".\"ScoresheetInstances\" WHERE \"Flex\".\"ScoresheetInstances\".\"ScoresheetId\" = %L) AS subquery',\r\n view_name,\r\n select_clause,\r\n table_a_id\r\n );\r\nEND;\r\n$$ LANGUAGE plpgsql;\r\n"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs index 1b5befa37..aaa18ff57 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/GrantTenantDbContextModelSnapshot.cs @@ -79,6 +79,10 @@ protected override void BuildModel(ModelBuilder modelBuilder) .HasColumnType("uuid") .HasColumnName("LastModifierId"); + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + b.Property("ScoresheetId") .HasColumnType("uuid"); @@ -290,6 +294,18 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("Published") .HasColumnType("boolean"); + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + b.Property("TenantId") .HasColumnType("uuid") .HasColumnName("TenantId"); From e36a7de6716c2515e8c36ba5cbfea45c4445bf3c Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Fri, 10 Jan 2025 12:12:25 -0800 Subject: [PATCH 08/28] AB#26819 more work on scoresheets and refactor --- .../ScoresheetInstances/ScoresheetInstance.cs | 6 +++ .../Domain/Services/ScoresheetsManager.cs | 44 ++++++++++++++++++- .../Domain/Services/WorksheetsManager.cs | 8 ++-- ...PersistScoresheetSectionInstanceHandler.cs | 30 ++----------- .../DefaultReportDataGenerator.cs | 14 ++++++ .../ReportingDataGeneratorBase.cs | 16 +++++++ .../CheckboxGroupReportDataGenerator.cs | 2 +- .../DataGridReportDataGenerator.cs | 2 +- .../DefaultReportDataGenerator.cs | 2 +- .../ReportingDataGeneratorBase.cs | 2 +- .../IReportingDataGeneratorService.cs | 9 ++-- .../ReportingDataGeneratorFactory.cs | 14 ++++-- ...coresheetsReportingDataGeneratorService.cs | 23 ++++++++++ ...orksheetsReportingDataGeneratorService.cs} | 9 ++-- .../CheckboxGroupReportingFieldsGenerator.cs | 4 +- .../CustomFieldsReportingGenerator.cs | 6 +-- .../DataGridReportingFieldsGenerator.cs | 4 +- .../DefaultReportingFieldsGenerator.cs | 4 +- .../IReportingFieldsGeneratorService.cs | 2 +- .../DefaultFieldsGenerator.cs | 7 +-- .../QuestionsReportingGenerator.cs | 6 +-- .../ReportingFieldsGeneratorFactory.cs | 12 ++--- ...oresheetReportingFieldsGeneratorService.cs | 20 ++++----- ...orksheetReportingFieldsGeneratorService.cs | 17 +++---- .../Scoresheets/QuestionAppService.cs | 18 +++----- .../Scoresheets/ScoresheetAppService.cs | 1 - .../Scoresheets/SectionAppService.cs | 20 +++------ .../src/Unity.Flex.Shared/ReportingConsts.cs | 8 ++++ .../Assessments/IAssessmentAppService.cs | 3 +- .../Assessments/AssessmentAppService.cs | 34 +------------- .../AssessmentScoresWidget/Default.js | 25 ----------- 31 files changed, 187 insertions(+), 185 deletions(-) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/DefaultReportDataGenerator.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGeneratorBase.cs rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/{ => CustomFieldValueGenerators}/CheckboxGroupReportDataGenerator.cs (86%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/{ => CustomFieldValueGenerators}/DataGridReportDataGenerator.cs (85%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/{ => CustomFieldValueGenerators}/DefaultReportDataGenerator.cs (87%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/{ => CustomFieldValueGenerators}/ReportingDataGeneratorBase.cs (85%) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/{ReportingDataGeneratorService.cs => WorksheetsReportingDataGeneratorService.cs} (76%) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/ReportingConsts.cs diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/ScoresheetInstances/ScoresheetInstance.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/ScoresheetInstances/ScoresheetInstance.cs index 8f695f3e6..616db1b56 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/ScoresheetInstances/ScoresheetInstance.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/ScoresheetInstances/ScoresheetInstance.cs @@ -45,5 +45,11 @@ public ScoresheetInstance UpdateValue() Value = JsonSerializer.Serialize(this); return this; } + + public ScoresheetInstance SetReportingData(string reportingData) + { + ReportData = reportingData; + return this; + } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs index 1148b443e..c872cd59f 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs @@ -1,13 +1,21 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; using Unity.Flex.Domain.ScoresheetInstances; using Unity.Flex.Domain.Scoresheets; +using Unity.Flex.Reporting.DataGenerators; +using Unity.Flex.Scoresheets; +using Unity.Flex.Scoresheets.Events; using Unity.Flex.Worksheets.Definitions; using Volo.Abp.Domain.Services; +using Volo.Abp.Validation; namespace Unity.Flex.Domain.Services { - public class ScoresheetsManager : DomainService + public class ScoresheetsManager(IScoresheetInstanceRepository scoresheetInstanceRepository, + IScoresheetRepository scoresheetRepository, + IReportingDataGeneratorService reportingDataGeneratorService) : DomainService { public static List ValidateScoresheetAnswersAsync(ScoresheetInstance scoresheetInstance, Scoresheet scoresheet) { @@ -37,6 +45,38 @@ private static string BuildMissingAnswerError(Question question) { return $"{question.Section?.Order + 1}.{question.Order + 1}: {question.Label} (required)"; } + + public async Task PersistScoresheetData(PersistScoresheetSectionInstanceEto eventData) + { + var instance = await scoresheetInstanceRepository.GetByCorrelationAsync(eventData.AssessmentId) ?? throw new AbpValidationException("Missing ScoresheetInstance."); + var scoresheet = await scoresheetRepository.GetAsync(instance.ScoresheetId); + + var scoresheetAnswers = eventData.AssessmentAnswers.ToList(); + + foreach (var item in scoresheetAnswers) + { + var ans = instance.Answers.FirstOrDefault(a => a.QuestionId == item.QuestionId); + + if (ans != null) + { + ans.SetValue(ValueConverter.Convert(item.Answer ?? "", (QuestionType)item.QuestionType)); + } + else + { + ans = new Answer(Guid.NewGuid()) + { + CurrentValue = ValueConverter.Convert(item?.Answer?.ToString() ?? string.Empty, (QuestionType)item!.QuestionType), + QuestionId = item.QuestionId, + ScoresheetInstanceId = instance.Id + }; + instance.Answers.Add(ans); + } + + instance.SetReportingData(reportingDataGeneratorService.Generate(scoresheet, instance)); + + await scoresheetInstanceRepository.UpdateAsync(instance); + } + } } public static class ScorehseetExtensions diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs index af980ad7c..032d571c5 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs @@ -19,7 +19,7 @@ namespace Unity.Flex.Domain.Services public class WorksheetsManager(IWorksheetInstanceRepository worksheetInstanceRepository, IWorksheetRepository worksheetRepository, IWorksheetLinkRepository worksheetLinkRepository, - IReportingDataGeneratorService reportingService) : DomainService + IReportingDataGeneratorService reportingService) : DomainService { public async Task PersistWorksheetData(PersistWorksheetIntanceValuesEto eventData) { @@ -81,7 +81,7 @@ public async Task UpdateWorksheetInstanceValueAsync(WorksheetInstance instance) instance.SetValue(JsonSerializer.Serialize(instanceCurrentValue)); - instance.SetReportingData(reportingService.GenerateData(worksheet, instanceCurrentValue)); + instance.SetReportingData(reportingService.Generate(worksheet, instanceCurrentValue)); } private void UpdateExistingWorksheetInstance(WorksheetInstance worksheetInstance, Worksheet? worksheet, List fields) @@ -189,9 +189,9 @@ private async Task CreateNewWorksheetInstanceAsync(IWorksheet foreach (var field in allFields) { - var match = eventData.CustomFields.Find(s => s.fieldName == field.Name); + var (fieldName, chefsPropertyName, value) = eventData.CustomFields.Find(s => s.fieldName == field.Name); newInstance.AddValue(field.Id, - ValueConverter.Convert(match.value?.ToString() ?? string.Empty, field.Type, match.chefsPropertyName, eventData.VersionData)); + ValueConverter.Convert(value?.ToString() ?? string.Empty, field.Type, chefsPropertyName, eventData.VersionData)); } var newWorksheetInstance = await worksheetInstanceRepository.InsertAsync(newInstance); diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Handlers/PersistScoresheetSectionInstanceHandler.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Handlers/PersistScoresheetSectionInstanceHandler.cs index de52acc74..164e9c6fa 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Handlers/PersistScoresheetSectionInstanceHandler.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Handlers/PersistScoresheetSectionInstanceHandler.cs @@ -3,6 +3,8 @@ using System.Threading.Tasks; using Unity.Flex.Domain.ScoresheetInstances; using Unity.Flex.Domain.Scoresheets; +using Unity.Flex.Domain.Services; +using Unity.Flex.Reporting.DataGenerators; using Unity.Flex.Scoresheets; using Unity.Flex.Scoresheets.Events; using Volo.Abp.DependencyInjection; @@ -11,36 +13,12 @@ namespace Unity.Flex.Handlers { - public class PersistScoresheetSectionInstanceHandler(IScoresheetInstanceRepository scoresheetInstanceRepository) : ILocalEventHandler, ITransientDependency + public class PersistScoresheetSectionInstanceHandler(ScoresheetsManager scoresheetsManager) : ILocalEventHandler, ITransientDependency { public async Task HandleEventAsync(PersistScoresheetSectionInstanceEto eventData) { - var instance = await scoresheetInstanceRepository.GetByCorrelationAsync(eventData.AssessmentId) ?? throw new AbpValidationException("Missing ScoresheetInstance."); - var scoresheetAnswers = eventData.AssessmentAnswers.ToList(); - - foreach (var item in scoresheetAnswers) - { - var ans = instance.Answers.FirstOrDefault(a => a.QuestionId == item.QuestionId); - - if (ans != null) - { - ans.SetValue(ValueConverter.Convert(item.Answer ?? "", (QuestionType)item.QuestionType)); - } - else - { - ans = new Answer(Guid.NewGuid()) - { - CurrentValue = ValueConverter.Convert(item?.Answer?.ToString() ?? string.Empty, (QuestionType)item!.QuestionType), - QuestionId = item.QuestionId, - ScoresheetInstanceId = instance.Id - }; - instance.Answers.Add(ans); - } - - await scoresheetInstanceRepository.UpdateAsync(instance); - } - + await scoresheetsManager.PersistScoresheetData(eventData); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/DefaultReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/DefaultReportDataGenerator.cs new file mode 100644 index 000000000..730d79764 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/DefaultReportDataGenerator.cs @@ -0,0 +1,14 @@ +using System.Collections.Generic; +using Unity.Flex.Domain.Scoresheets; + +namespace Unity.Flex.Reporting.DataGenerators.AnswerGenerators +{ + public class DefaultReportDataGenerator(Question question, Answer answer) + : ReportingDataGeneratorBase(question, answer), IReportingDataGenerator + { + public Dictionary> Generate() + { + throw new System.NotImplementedException(); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGeneratorBase.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGeneratorBase.cs new file mode 100644 index 000000000..3770600a5 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGeneratorBase.cs @@ -0,0 +1,16 @@ +using Unity.Flex.Domain.Scoresheets; + +namespace Unity.Flex.Reporting.DataGenerators.AnswerGenerators +{ + public class ReportingDataGeneratorBase + { + protected Question question; + protected Answer answer; + + protected ReportingDataGeneratorBase(Question question, Answer answer) + { + this.question = question; + this.answer = answer; + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs similarity index 86% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs index 66f545f0f..182a47b8a 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CheckboxGroupReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs @@ -3,7 +3,7 @@ using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Values; -namespace Unity.Flex.Reporting.DataGenerators +namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators { public class CheckboxGroupReportDataGenerator(CustomField customField, FieldInstanceValue value) : ReportingDataGeneratorBase(customField, value), IReportingDataGenerator diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/DataGridReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs similarity index 85% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/DataGridReportDataGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs index f63dd9720..4715ed219 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/DataGridReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs @@ -3,7 +3,7 @@ using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Values; -namespace Unity.Flex.Reporting.DataGenerators +namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators { public class DataGridReportDataGenerator(CustomField customField, FieldInstanceValue value) : ReportingDataGeneratorBase(customField, value), IReportingDataGenerator diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/DefaultReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs similarity index 87% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/DefaultReportDataGenerator.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs index 3d914f7ac..4b68e5bc0 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/DefaultReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs @@ -2,7 +2,7 @@ using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Values; -namespace Unity.Flex.Reporting.DataGenerators +namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators { public class DefaultReportDataGenerator(CustomField customField, FieldInstanceValue value) : ReportingDataGeneratorBase(customField, value), IReportingDataGenerator diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorBase.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGeneratorBase.cs similarity index 85% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorBase.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGeneratorBase.cs index b78f0857d..e0e56ac36 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorBase.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGeneratorBase.cs @@ -1,7 +1,7 @@ using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Values; -namespace Unity.Flex.Reporting.DataGenerators +namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators { public class ReportingDataGeneratorBase { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGeneratorService.cs index dd79231e5..17f2a6842 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGeneratorService.cs @@ -1,10 +1,7 @@ -using Unity.Flex.Domain.Worksheets; -using Unity.Flex.Worksheets.Values; - -namespace Unity.Flex.Reporting.DataGenerators +namespace Unity.Flex.Reporting.DataGenerators { - public interface IReportingDataGeneratorService + public interface IReportingDataGeneratorService where T : IReportableEntity { - string GenerateData(Worksheet worksheet, WorksheetInstanceValue instanceCurrentValue); + string Generate(T sheet, U instance); } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs index 6e540deea..98516d3e3 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs @@ -1,4 +1,5 @@ -using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Domain.Scoresheets; +using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets; using Unity.Flex.Worksheets.Values; @@ -10,10 +11,15 @@ public static IReportingDataGenerator Create(CustomField customField, FieldInsta { return customField.Type switch { - CustomFieldType.CheckboxGroup => new CheckboxGroupReportDataGenerator(customField, value), - CustomFieldType.DataGrid => new DataGridReportDataGenerator(customField, value), - _ => new DefaultReportDataGenerator(customField, value), + CustomFieldType.CheckboxGroup => new CustomFieldValueGenerators.CheckboxGroupReportDataGenerator(customField, value), + CustomFieldType.DataGrid => new CustomFieldValueGenerators.DataGridReportDataGenerator(customField, value), + _ => new CustomFieldValueGenerators.DefaultReportDataGenerator(customField, value), }; } + + public static IReportingDataGenerator Create(Question question, Answer answer) + { + return new AnswerGenerators.DefaultReportDataGenerator(question, answer); + } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs new file mode 100644 index 000000000..e8404a78b --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using System.Text.Json; +using Unity.Flex.Domain.ScoresheetInstances; +using Unity.Flex.Domain.Scoresheets; +using Volo.Abp; +using Volo.Abp.Application.Services; + +namespace Unity.Flex.Reporting.DataGenerators +{ + [RemoteService(false)] + public class ScoresheetsReportingDataGeneratorService : ApplicationService, + IReportingDataGeneratorService + { + public string Generate(Scoresheet scoresheet, ScoresheetInstance instanceValue) + { + var reportData = new Dictionary>(); + + var keys = scoresheet.ReportKeys.Split(ReportingConsts.ReportFieldDelimiter); + + return JsonSerializer.Serialize(reportData); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs similarity index 76% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorService.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs index 40cab32de..1592817ec 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs @@ -9,12 +9,13 @@ namespace Unity.Flex.Reporting.DataGenerators { [RemoteService(false)] - public class ReportingDataGeneratorService : ApplicationService, IReportingDataGeneratorService + public class WorksheetsReportingDataGeneratorService : ApplicationService, + IReportingDataGeneratorService { - public string GenerateData(Worksheet worksheet, WorksheetInstanceValue instanceCurrentValue) + public string Generate(Worksheet worksheet, WorksheetInstanceValue instanceValue) { var reportData = new Dictionary>(); - var reportingKeys = worksheet.ReportColumns.Split('|'); + var reportingKeys = worksheet.ReportColumns.Split(ReportingConsts.ReportFieldDelimiter); foreach (var reportKey in reportingKeys) { @@ -22,7 +23,7 @@ public string GenerateData(Worksheet worksheet, WorksheetInstanceValue instanceC } var definitions = worksheet.Sections.SelectMany(s => s.Fields).ToList(); - foreach (var value in instanceCurrentValue.Values) + foreach (var value in instanceValue.Values) { var definition = definitions.Find(s => s.Key == value.Key); if (definition != null) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs index 415779134..b0aa05d99 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs @@ -3,8 +3,8 @@ namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators { - public class CheckboxGroupReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) - : CustomFieldsReportingGenerator(customField, separator, maxColumnLength), IReportingFieldsGenerator + public class CheckboxGroupReportingFieldsGenerator(CustomField customField) + : CustomFieldsReportingGenerator(customField), IReportingFieldsGenerator { public (string columns, string keys) Generate() { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs index 5bed61462..1a04c5664 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs @@ -5,14 +5,10 @@ namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators public class CustomFieldsReportingGenerator { protected readonly CustomField customField; - protected readonly char separator; - protected readonly uint maxColumnLength; - protected CustomFieldsReportingGenerator(CustomField customField, char separator, uint maxColumnLength) + protected CustomFieldsReportingGenerator(CustomField customField) { this.customField = customField; - this.separator = separator; - this.maxColumnLength = maxColumnLength; } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs index e6136d216..5ab66f93f 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs @@ -3,8 +3,8 @@ namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators { - public class DataGridReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) - : CustomFieldsReportingGenerator(customField, separator, maxColumnLength), IReportingFieldsGenerator + public class DataGridReportingFieldsGenerator(CustomField customField) + : CustomFieldsReportingGenerator(customField), IReportingFieldsGenerator { public (string columns, string keys) Generate() { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs index 847511814..427630127 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs @@ -2,8 +2,8 @@ namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators { - public class DefaultReportingFieldsGenerator(CustomField customField, char separator, uint maxColumnLength) - : CustomFieldsReportingGenerator(customField, separator, maxColumnLength), IReportingFieldsGenerator + public class DefaultReportingFieldsGenerator(CustomField customField) + : CustomFieldsReportingGenerator(customField), IReportingFieldsGenerator { public (string columns, string keys) Generate() { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs index e299259bf..62dca839a 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs @@ -2,6 +2,6 @@ { public interface IReportingFieldsGeneratorService where T : IReportableEntity { - T GenerateAndSet(T worksheet, char separator = '|', uint maxColumnLength = 63); + T GenerateAndSet(T sheet); } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs index 48abc7745..68427e31c 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs @@ -2,12 +2,13 @@ namespace Unity.Flex.Reporting.FieldGenerators.QuestionFieldGenerators { - public class DefaultFieldsGenerator(Question question, char separator, uint maxColumnLength) - : QuestionsReportingGenerator(question, separator, maxColumnLength), IReportingFieldsGenerator + public class DefaultFieldsGenerator(Question question) + : QuestionsReportingGenerator(question), IReportingFieldsGenerator { public (string columns, string keys) Generate() { - throw new System.NotImplementedException(); + // We intentionally use the name twice here + return (question.Name, question.Name); } } } \ No newline at end of file diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs index 943df7ff5..1ebe7a55e 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs @@ -5,14 +5,10 @@ namespace Unity.Flex.Reporting.FieldGenerators.QuestionFieldGenerators public class QuestionsReportingGenerator { protected readonly Question question; - protected readonly char separator; - protected readonly uint maxColumnLength; - protected QuestionsReportingGenerator(Question question, char separator, uint maxColumnLength) + protected QuestionsReportingGenerator(Question question) { this.question = question; - this.separator = separator; - this.maxColumnLength = maxColumnLength; } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs index 480235d2e..ed9cd2c42 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorFactory.cs @@ -8,19 +8,19 @@ namespace Unity.Flex.Reporting.FieldGenerators { public static class ReportingFieldsGeneratorFactory { - public static IReportingFieldsGenerator Create(CustomField customField, char separator, uint maxColumnLength) + public static IReportingFieldsGenerator Create(CustomField customField) { return customField.Type switch { - CustomFieldType.CheckboxGroup => new CheckboxGroupReportingFieldsGenerator(customField, separator, maxColumnLength), - CustomFieldType.DataGrid => new DataGridReportingFieldsGenerator(customField, separator, maxColumnLength), - _ => new DefaultReportingFieldsGenerator(customField, separator, maxColumnLength), + CustomFieldType.CheckboxGroup => new CheckboxGroupReportingFieldsGenerator(customField), + CustomFieldType.DataGrid => new DataGridReportingFieldsGenerator(customField), + _ => new DefaultReportingFieldsGenerator(customField), }; } - public static IReportingFieldsGenerator Create(Question question, char separator, uint maxColumnLength) + public static IReportingFieldsGenerator Create(Question question) { - return new DefaultFieldsGenerator(question, separator, maxColumnLength); + return new DefaultFieldsGenerator(question); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs index 355c91a6c..871223b3e 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs @@ -11,23 +11,21 @@ namespace Unity.Flex.Reporting.FieldGenerators public class ScoresheetReportingFieldsGeneratorService(ILocalEventBus localEventBus) : ApplicationService, IReportingFieldsGeneratorService { - public Scoresheet GenerateAndSet(Scoresheet worksheet, char separator = '|', uint maxColumnLength = 63) + public Scoresheet GenerateAndSet(Scoresheet scoresheet) { - var (reportingKeys, reportingColumns, reportViewName) = GenerateReportingFields(worksheet, separator, maxColumnLength); - worksheet.SetReportingFields(reportingKeys, reportingColumns, reportViewName); + var (reportingKeys, reportingColumns, reportViewName) = GenerateReportingFields(scoresheet); + scoresheet.SetReportingFields(reportingKeys, reportingColumns, reportViewName); localEventBus.PublishAsync(new WorksheetsDynamicViewGeneratorEto() { TenantId = CurrentTenant.Id, - WorksheetId = worksheet.Id + WorksheetId = scoresheet.Id }, true); - return worksheet; + return scoresheet; } - private static (string reportingKeys, string reportingColumns, string reportViewName) GenerateReportingFields(Scoresheet scoresheet, - char separator, - uint maxColumnLength) + private static (string reportingKeys, string reportingColumns, string reportViewName) GenerateReportingFields(Scoresheet scoresheet) { StringBuilder keysBuilder = new(); StringBuilder columnsBuilder = new(); @@ -35,11 +33,11 @@ private static (string reportingKeys, string reportingColumns, string reportView foreach (var field in scoresheet.Sections.SelectMany(s => s.Fields)) { var (columns, keys) = ReportingFieldsGeneratorFactory - .Create(field, separator, maxColumnLength) + .Create(field) .Generate(); - columnsBuilder.Append(columns).Append(separator); - keysBuilder.Append(keys).Append(separator); + columnsBuilder.Append(columns).Append(ReportingConsts.ReportFieldDelimiter); + keysBuilder.Append(keys).Append(ReportingConsts.ReportFieldDelimiter); } // Remove the trailing separator diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs index 69a567b73..74cdd3ad3 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs @@ -8,12 +8,11 @@ namespace Unity.Flex.Reporting.FieldGenerators { [RemoteService(false)] - public class WorksheetReportingFieldsGeneratorService(ILocalEventBus localEventBus) : ApplicationService, - IReportingFieldsGeneratorService + public class WorksheetReportingFieldsGeneratorService(ILocalEventBus localEventBus) : ApplicationService, IReportingFieldsGeneratorService { - public Worksheet GenerateAndSet(Worksheet worksheet, char separator = '|', uint maxColumnLength = 63) + public Worksheet GenerateAndSet(Worksheet worksheet) { - var (reportingKeys, reportingColumns, reportViewName) = GenerateReportingFields(worksheet, separator, maxColumnLength); + var (reportingKeys, reportingColumns, reportViewName) = GenerateReportingFields(worksheet); worksheet.SetReportingFields(reportingKeys, reportingColumns, reportViewName); localEventBus.PublishAsync(new WorksheetsDynamicViewGeneratorEto() @@ -25,9 +24,7 @@ public Worksheet GenerateAndSet(Worksheet worksheet, char separator = '|', uint return worksheet; } - private static (string reportingKeys, string reportingColumns, string reportViewName) GenerateReportingFields(Worksheet worksheet, - char separator, - uint maxColumnLength) + private static (string reportingKeys, string reportingColumns, string reportViewName) GenerateReportingFields(Worksheet worksheet) { StringBuilder keysBuilder = new(); StringBuilder columnsBuilder = new(); @@ -35,11 +32,11 @@ private static (string reportingKeys, string reportingColumns, string reportView foreach (var field in worksheet.Sections.SelectMany(s => s.Fields)) { var (columns, keys) = ReportingFieldsGeneratorFactory - .Create(field, separator, maxColumnLength) + .Create(field) .Generate(); - columnsBuilder.Append(columns).Append(separator); - keysBuilder.Append(keys).Append(separator); + columnsBuilder.Append(columns).Append(ReportingConsts.ReportFieldDelimiter); + keysBuilder.Append(keys).Append(ReportingConsts.ReportFieldDelimiter); } // Remove the trailing separator diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/QuestionAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/QuestionAppService.cs index 8abec4ae4..58ccb8ef3 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/QuestionAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/QuestionAppService.cs @@ -9,38 +9,30 @@ namespace Unity.Flex.Scoresheets { [Authorize] - public class QuestionAppService : FlexAppService, IQuestionAppService + public class QuestionAppService(IQuestionRepository questionRepository) : FlexAppService, IQuestionAppService { - private readonly IQuestionRepository _questionRepository; - - public QuestionAppService(IQuestionRepository questionRepository) - { - _questionRepository = questionRepository; - } - public virtual async Task GetAsync(Guid id) { - var question = await _questionRepository.GetAsync(id) ?? throw new EntityNotFoundException(); + var question = await questionRepository.GetAsync(id) ?? throw new EntityNotFoundException(); return ObjectMapper.Map(question); - } public async Task UpdateAsync(Guid id, EditQuestionDto dto) { var questionName = dto.Name.Trim(); - var question = await _questionRepository.GetAsync(id) ?? throw new AbpValidationException("Missing QuestionId:" + id); + var question = await questionRepository.GetAsync(id) ?? throw new AbpValidationException("Missing QuestionId:" + id); question.SetName(questionName); question.Label = dto.Label; question.Description = dto.Description; question.Type = (QuestionType)dto.QuestionType; question.Definition = DefinitionResolver.Resolve(question.Type, dto.Definition); - return ObjectMapper.Map(await _questionRepository.UpdateAsync(question)); + return ObjectMapper.Map(await questionRepository.UpdateAsync(question)); } public async Task DeleteAsync(Guid id) { - await _questionRepository.DeleteAsync(id); + await questionRepository.DeleteAsync(id); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs index 5afed7bb9..163b84e41 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs @@ -172,7 +172,6 @@ public async Task> GetNumericQuestionIdsAsync(List questionIdsT { var existingQuestions = await questionRepository.GetListAsync(); return existingQuestions.Where(q => questionIdsToCheck.Contains(q.Id) && q.Type == QuestionType.Number).Select(q => q.Id).ToList(); - } public async Task ValidateChangeableScoresheet(Guid scoresheetId) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/SectionAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/SectionAppService.cs index 8ceeddffa..7c272e507 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/SectionAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/SectionAppService.cs @@ -8,20 +8,12 @@ namespace Unity.Flex.Scoresheets { [Authorize] - public class SectionAppService : FlexAppService, ISectionAppService + public class SectionAppService(IScoresheetSectionRepository sectionRepository, + IScoresheetRepository scoresheetRepository) : FlexAppService, ISectionAppService { - private readonly IScoresheetSectionRepository _sectionRepository; - private readonly IScoresheetRepository _scoresheetRepository; - - public SectionAppService(IScoresheetSectionRepository sectionRepository, IScoresheetRepository scoresheetRepository) - { - _sectionRepository = sectionRepository; - _scoresheetRepository = scoresheetRepository; - } - public virtual async Task GetAsync(Guid id) { - return ObjectMapper.Map(await _sectionRepository.GetAsync(id)); + return ObjectMapper.Map(await sectionRepository.GetAsync(id)); } public async Task UpdateAsync(Guid id, EditSectionDto dto) @@ -34,14 +26,14 @@ public async Task UpdateAsync(Guid id, EditSectionDto dto) public async Task DeleteAsync(Guid id) { - await _sectionRepository.DeleteAsync(id); + await sectionRepository.DeleteAsync(id); } private async Task<(Scoresheet scoresheet, ScoresheetSection section)> GetScoresheetAndSectionAsync(Guid sectionId) { - var scoresheet = await _scoresheetRepository.GetBySectionAsync(sectionId, true) ?? throw new EntityNotFoundException(); + var scoresheet = await scoresheetRepository.GetBySectionAsync(sectionId, true) ?? throw new EntityNotFoundException(); var section = scoresheet.Sections.FirstOrDefault(s => s.Id == sectionId) ?? throw new EntityNotFoundException(); - + return (scoresheet, section); } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/ReportingConsts.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/ReportingConsts.cs new file mode 100644 index 000000000..67fb88328 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/ReportingConsts.cs @@ -0,0 +1,8 @@ +namespace Unity.Flex +{ + public static class ReportingConsts + { + public const char ReportFieldDelimiter = '|'; + public const int ReportColumnMaxLength = 63; + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Assessments/IAssessmentAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Assessments/IAssessmentAppService.cs index 0039032f0..30da0385e 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Assessments/IAssessmentAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Assessments/IAssessmentAppService.cs @@ -15,7 +15,6 @@ public interface IAssessmentAppService : IApplicationService, ICommentsService Task> GetPermittedActions(Guid assessmentId); Task ExecuteAssessmentAction(Guid assessmentId, AssessmentAction triggerAction); Task GetCurrentUserAssessmentId(Guid applicationId); - Task UpdateAssessmentScore(AssessmentScoresDto dto); - Task SaveScoresheetAnswer(Guid assessmentId, Guid questionId, string? answer, int questionType); + Task UpdateAssessmentScore(AssessmentScoresDto dto); Task SaveScoresheetSectionAnswers(AssessmentScoreSectionDto dto); } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Assessments/AssessmentAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Assessments/AssessmentAppService.cs index 2848e7e33..a80c97ecd 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Assessments/AssessmentAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Assessments/AssessmentAppService.cs @@ -384,39 +384,7 @@ public async Task UpdateAssessmentScore(AssessmentScoresDto dto) { throw new AbpValidationException(ex.Message, ex); } - - } - - public async Task SaveScoresheetAnswer(Guid assessmentId, Guid questionId, string? answer, int questionType) - { - var assessment = await _assessmentRepository.GetAsync(assessmentId); - if (assessment != null) - { - if (CurrentUser.GetId() != assessment.AssessorId) - { - throw new AbpValidationException("Error: You do not own this assessment record."); - } - if (assessment.Status.Equals(AssessmentState.COMPLETED)) - { - throw new AbpValidationException("Error: This assessment is already completed."); - } - - if (await _featureChecker.IsEnabledAsync(UnityFlex)) - { - await _localEventBus.PublishAsync(new PersistScoresheetInstanceEto() - { - CorrelationId = assessmentId, - QuestionId = questionId, - Answer = answer, - QuestionType = questionType - }); - } - } - else - { - throw new AbpValidationException("AssessmentId Not Found: " + assessmentId + "."); - } - } + } public async Task SaveScoresheetSectionAnswers(AssessmentScoreSectionDto dto) { diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentScoresWidget/Default.js b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentScoresWidget/Default.js index fb16b8266..9104e9281 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentScoresWidget/Default.js +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentScoresWidget/Default.js @@ -313,31 +313,6 @@ function updateSubtotal() { }, 500); } - -function saveChanges(questionId, inputFieldPrefix, saveButtonPrefix, questionType, discardButtonPrefix) { - const inputField = document.getElementById(inputFieldPrefix + questionId); - const saveButton = document.getElementById(saveButtonPrefix + questionId); - const discardButton = document.getElementById(discardButtonPrefix + questionId); - const assessmentId = $("#AssessmentId").val(); - let answerValue = inputField.value; - if (questionType == 1 && !answerValue) { - answerValue = 0; - } - unity.grantManager.assessments.assessment.saveScoresheetAnswer(assessmentId, questionId, answerValue, questionType) - .then(response => { - abp.notify.success( - 'Answer is successfully saved.', - 'Save Answer' - ); - inputField.setAttribute('data-original-value', inputField.value); - saveButton.disabled = true; - discardButton.disabled = true; - updateSubtotal(); - PubSub.publish('refresh_review_list_without_sidepanel', assessmentId); - }); - -} - function discardChanges(questionId, inputFieldPrefix, saveButtonPrefix, discardButtonPrefix) { const inputField = document.getElementById(inputFieldPrefix + questionId); const saveButton = document.getElementById(saveButtonPrefix + questionId); From 2afa09eb2a496cc2ccb5c169b30fdcfb34359ace Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Fri, 10 Jan 2025 12:36:51 -0800 Subject: [PATCH 09/28] AB#26819 fix unit test warnings --- .../Applications/ApplicationAppServiceTests.cs | 4 ++-- .../Components/AttachmentControllerTests.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/applications/Unity.GrantManager/test/Unity.GrantManager.Application.Tests/Applications/ApplicationAppServiceTests.cs b/applications/Unity.GrantManager/test/Unity.GrantManager.Application.Tests/Applications/ApplicationAppServiceTests.cs index 996df81df..a071d3204 100644 --- a/applications/Unity.GrantManager/test/Unity.GrantManager.Application.Tests/Applications/ApplicationAppServiceTests.cs +++ b/applications/Unity.GrantManager/test/Unity.GrantManager.Application.Tests/Applications/ApplicationAppServiceTests.cs @@ -55,7 +55,7 @@ public async Task AddRemoveAssigneeAsync_Should_AddRemove_Assignee() // Assert - IQueryable queryableAssignment = _userAssignmentRepository.GetQueryableAsync().Result; + IQueryable queryableAssignment = await _userAssignmentRepository.GetQueryableAsync(); var assignments = queryableAssignment.ToList(); assignments.Count.ShouldBe(1); @@ -63,7 +63,7 @@ public async Task AddRemoveAssigneeAsync_Should_AddRemove_Assignee() await _grantApplicationAppServiceTest.DeleteAssigneeAsync(application.Id, uData.Id); await uow.SaveChangesAsync(); - IQueryable queryableAssignment2 = _userAssignmentRepository.GetQueryableAsync().Result; + IQueryable queryableAssignment2 = await _userAssignmentRepository.GetQueryableAsync(); var assignments2 = queryableAssignment2.ToList(); assignments2.Count.ShouldBe(0); } diff --git a/applications/Unity.GrantManager/test/Unity.GrantManager.Web.Tests/Components/AttachmentControllerTests.cs b/applications/Unity.GrantManager/test/Unity.GrantManager.Web.Tests/Components/AttachmentControllerTests.cs index 20a1ce798..a61b5c3cd 100644 --- a/applications/Unity.GrantManager/test/Unity.GrantManager.Web.Tests/Components/AttachmentControllerTests.cs +++ b/applications/Unity.GrantManager/test/Unity.GrantManager.Web.Tests/Components/AttachmentControllerTests.cs @@ -65,7 +65,7 @@ public async Task DownloadChefsAttachments_ReturnsChefsAttachmentFile() // Act Task download = attachmentController.DownloadChefsAttachment(formSubmissionId, chefsFileAttachmentId, fileName); - var downloadedFile = (FileContentResult) download.Result; + var downloadedFile = (FileContentResult) await download; // assert Assert.NotNull(downloadedFile); From 716d4a0c75232815f9bbc70d6cf2deb4fa632d62 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Mon, 13 Jan 2025 13:02:57 -0800 Subject: [PATCH 10/28] AB#26819 scoresheet views added --- .../Scoresheets/QuestionDto.cs | 1 + .../Domain/Scoresheets/Question.cs | 2 +- .../Domain/Services/ScoresheetsManager.cs | 6 +- .../PersistScoresheetInstanceHandler.cs | 2 +- .../DefaultReportDataGenerator.cs | 14 +- .../ReportingDataGeneratorBase.cs | 5 +- .../ReportingDataGeneratorFactory.cs | 7 +- ...coresheetsReportingDataGeneratorService.cs | 28 +- ...WorksheetsReportingDataGeneratorService.cs | 1 + .../DefaultFieldsGenerator.cs | 3 +- .../QuestionsReportingGenerator.cs | 28 +- ...oresheetReportingFieldsGeneratorService.cs | 19 +- ...orksheetReportingFieldsGeneratorService.cs | 15 +- .../Reporting/ReportingExtensions.cs | 17 ++ .../Scoresheets/QuestionAppService.cs | 1 + .../Scoresheets/ScoresheetAppService.cs | 4 +- .../Unity.Flex.Shared/FlexTypeExtensions.cs | 2 +- .../Enums/QuestionType.cs | 2 +- .../src/Unity.Flex.Shared/ValueConverter.cs | 2 +- .../src/Unity.Flex.Shared/ValueResolver.cs | 2 +- .../Definitions/DefinitionResolver.cs | 2 +- .../QuestionModal.cshtml.cs | 1 + .../QuestionDefinitionWidget/Default.cshtml | 11 +- .../QuestionDefinitionViewModel.cs | 2 +- .../QuestionDefinitionWidget.cs | 2 +- .../QuestionSelectListWidget/Default.cshtml | 3 +- .../Assessments/AssessmentAppService.cs | 7 +- .../AssessmentScoresWidgetViewComponent.cs | 1 + .../AssessmentScoresWidget/Default.cshtml | 261 +++++++++--------- 29 files changed, 256 insertions(+), 195 deletions(-) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ReportingExtensions.cs rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/{Scoresheet => Scoresheets}/Enums/QuestionType.cs (78%) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Scoresheets/QuestionDto.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Scoresheets/QuestionDto.cs index a3d8178b5..affa91464 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Scoresheets/QuestionDto.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Scoresheets/QuestionDto.cs @@ -1,5 +1,6 @@ using System; using System.Text.Json; +using Unity.Flex.Scoresheets.Enums; using Unity.Flex.Worksheets.Definitions; using Volo.Abp.Application.Dtos; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Scoresheets/Question.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Scoresheets/Question.cs index 4e2c76807..62ab38021 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Scoresheets/Question.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Scoresheets/Question.cs @@ -1,6 +1,5 @@ using System; using System.Collections.ObjectModel; -using Unity.Flex.Scoresheets; using System.ComponentModel.DataAnnotations.Schema; using Unity.Flex.Worksheets.Definitions; using Volo.Abp.Domain.Entities.Auditing; @@ -8,6 +7,7 @@ using Newtonsoft.Json; using Volo.Abp; using System.Linq; +using Unity.Flex.Scoresheets.Enums; namespace Unity.Flex.Domain.Scoresheets { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs index c872cd59f..174b0aaac 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs @@ -5,7 +5,7 @@ using Unity.Flex.Domain.ScoresheetInstances; using Unity.Flex.Domain.Scoresheets; using Unity.Flex.Reporting.DataGenerators; -using Unity.Flex.Scoresheets; +using Unity.Flex.Scoresheets.Enums; using Unity.Flex.Scoresheets.Events; using Unity.Flex.Worksheets.Definitions; using Volo.Abp.Domain.Services; @@ -72,10 +72,10 @@ public async Task PersistScoresheetData(PersistScoresheetSectionInstanceEto even instance.Answers.Add(ans); } - instance.SetReportingData(reportingDataGeneratorService.Generate(scoresheet, instance)); - await scoresheetInstanceRepository.UpdateAsync(instance); } + + instance.SetReportingData(reportingDataGeneratorService.Generate(scoresheet, instance)); } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Handlers/PersistScoresheetInstanceHandler.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Handlers/PersistScoresheetInstanceHandler.cs index fec8cce44..4860ed762 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Handlers/PersistScoresheetInstanceHandler.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Handlers/PersistScoresheetInstanceHandler.cs @@ -3,7 +3,7 @@ using System.Threading.Tasks; using Unity.Flex.Domain.ScoresheetInstances; using Unity.Flex.Domain.Scoresheets; -using Unity.Flex.Scoresheets; +using Unity.Flex.Scoresheets.Enums; using Unity.Flex.Scoresheets.Events; using Volo.Abp.DependencyInjection; using Volo.Abp.EventBus; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/DefaultReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/DefaultReportDataGenerator.cs index 730d79764..0dd89264b 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/DefaultReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/DefaultReportDataGenerator.cs @@ -3,12 +3,20 @@ namespace Unity.Flex.Reporting.DataGenerators.AnswerGenerators { - public class DefaultReportDataGenerator(Question question, Answer answer) - : ReportingDataGeneratorBase(question, answer), IReportingDataGenerator + public class DefaultReportDataGenerator(Answer answer) + : ReportingDataGeneratorBase(answer), IReportingDataGenerator { public Dictionary> Generate() { - throw new System.NotImplementedException(); + return new Dictionary> + { + { + answer.Question!.Name, new List() + { + ValueResolver.Resolve(answer.CurrentValue ?? string.Empty, answer.Question!.Type)?.ToString() ?? string.Empty + } + } + }; } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGeneratorBase.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGeneratorBase.cs index 3770600a5..4c7006743 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGeneratorBase.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGeneratorBase.cs @@ -4,12 +4,9 @@ namespace Unity.Flex.Reporting.DataGenerators.AnswerGenerators { public class ReportingDataGeneratorBase { - protected Question question; protected Answer answer; - - protected ReportingDataGeneratorBase(Question question, Answer answer) + protected ReportingDataGeneratorBase(Answer answer) { - this.question = question; this.answer = answer; } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs index 98516d3e3..eaa7e045d 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs @@ -1,4 +1,5 @@ -using Unity.Flex.Domain.Scoresheets; +using Unity.Flex.Domain.ScoresheetInstances; +using Unity.Flex.Domain.Scoresheets; using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets; using Unity.Flex.Worksheets.Values; @@ -17,9 +18,9 @@ public static IReportingDataGenerator Create(CustomField customField, FieldInsta }; } - public static IReportingDataGenerator Create(Question question, Answer answer) + public static IReportingDataGenerator Create(Answer answer) { - return new AnswerGenerators.DefaultReportDataGenerator(question, answer); + return new AnswerGenerators.DefaultReportDataGenerator(answer); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs index e8404a78b..a9a9c9dd7 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using System.Text.Json; using Unity.Flex.Domain.ScoresheetInstances; using Unity.Flex.Domain.Scoresheets; @@ -15,7 +16,32 @@ public string Generate(Scoresheet scoresheet, ScoresheetInstance instanceValue) { var reportData = new Dictionary>(); - var keys = scoresheet.ReportKeys.Split(ReportingConsts.ReportFieldDelimiter); + var reportingKeys = scoresheet.ReportKeys.Split(ReportingConsts.ReportFieldDelimiter); + var answers = instanceValue.Answers.ToList(); + + foreach (var reportKey in reportingKeys) + { + reportData.Add(reportKey, []); + } + + foreach (var (key, answer) in from key in reportData + let answerKeys = answers.Find(s => s.Question?.Name == key.Key) + select (key, answerKeys)) + { + if (answer != null) + { + var keyValues = ReportingDataGeneratorFactory + .Create(answer) + .Generate(); + + foreach (var keyValue in from keyValue in keyValues + where reportData.ContainsKey(keyValue.Key) + select keyValue) + { + reportData[keyValue.Key] = keyValue.Value; + } + } + } return JsonSerializer.Serialize(reportData); } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs index 1592817ec..9c65d9131 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs @@ -23,6 +23,7 @@ public string Generate(Worksheet worksheet, WorksheetInstanceValue instanceValue } var definitions = worksheet.Sections.SelectMany(s => s.Fields).ToList(); + foreach (var value in instanceValue.Values) { var definition = definitions.Find(s => s.Key == value.Key); diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs index 68427e31c..9a70b547c 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs @@ -7,8 +7,7 @@ public class DefaultFieldsGenerator(Question question) { public (string columns, string keys) Generate() { - // We intentionally use the name twice here - return (question.Name, question.Name); + return (SanitizeColumnName(question.Name), question.Name); } } } \ No newline at end of file diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs index 1ebe7a55e..b650218fd 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs @@ -1,8 +1,9 @@ -using Unity.Flex.Domain.Scoresheets; +using System.Text.RegularExpressions; +using Unity.Flex.Domain.Scoresheets; namespace Unity.Flex.Reporting.FieldGenerators.QuestionFieldGenerators { - public class QuestionsReportingGenerator + public partial class QuestionsReportingGenerator { protected readonly Question question; @@ -10,5 +11,28 @@ protected QuestionsReportingGenerator(Question question) { this.question = question; } + + protected static string SanitizeColumnName(string input) + { + // Remove invalid characters (keep only letters, numbers, and underscores) + string sanitized = ValidColumnName().Replace(input, ""); + + // Truncate to 63 characters + if (sanitized.Length > ReportingConsts.ReportColumnMaxLength) + { + sanitized = sanitized[..ReportingConsts.ReportColumnMaxLength]; + } + + // Ensure the column name doesn't start with a number + if (char.IsDigit(sanitized[0])) + { + sanitized = "_" + sanitized; + } + + return sanitized; + } + + [GeneratedRegex(@"[^a-zA-Z0-9_]")] + private static partial Regex ValidColumnName(); } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs index 871223b3e..9636e7fa0 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs @@ -16,10 +16,10 @@ public Scoresheet GenerateAndSet(Scoresheet scoresheet) var (reportingKeys, reportingColumns, reportViewName) = GenerateReportingFields(scoresheet); scoresheet.SetReportingFields(reportingKeys, reportingColumns, reportViewName); - localEventBus.PublishAsync(new WorksheetsDynamicViewGeneratorEto() + localEventBus.PublishAsync(new ScoresheetsDynamicViewGeneratorEto() { TenantId = CurrentTenant.Id, - WorksheetId = scoresheet.Id + ScoresheetId = scoresheet.Id }, true); return scoresheet; @@ -40,19 +40,10 @@ private static (string reportingKeys, string reportingColumns, string reportView keysBuilder.Append(keys).Append(ReportingConsts.ReportFieldDelimiter); } - // Remove the trailing separator - if (columnsBuilder.Length > 0) - { - columnsBuilder.Length--; - // Remove the last separator - } - - if (keysBuilder.Length > 0) - { - keysBuilder.Length--; // Remove the last separator - } + columnsBuilder.TrimEndDelimeter(); + keysBuilder.TrimEndDelimeter(); - return new(columnsBuilder.ToString(), keysBuilder.ToString(), $"Scoresheet-{scoresheet.Name}"); + return new(keysBuilder.ToString(), columnsBuilder.ToString(), $"Scoresheet-{scoresheet.Name}"); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs index 74cdd3ad3..2f0e0ebe3 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs @@ -39,19 +39,10 @@ private static (string reportingKeys, string reportingColumns, string reportView keysBuilder.Append(keys).Append(ReportingConsts.ReportFieldDelimiter); } - // Remove the trailing separator - if (columnsBuilder.Length > 0) - { - columnsBuilder.Length--; - // Remove the last separator - } - - if (keysBuilder.Length > 0) - { - keysBuilder.Length--; // Remove the last separator - } + columnsBuilder.TrimEndDelimeter(); + keysBuilder.TrimEndDelimeter(); - return new(columnsBuilder.ToString(), keysBuilder.ToString(), $"Worksheet-{worksheet.Name}"); + return new(keysBuilder.ToString(), columnsBuilder.ToString(), $"Worksheet-{worksheet.Name}"); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ReportingExtensions.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ReportingExtensions.cs new file mode 100644 index 000000000..b44cd9d54 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ReportingExtensions.cs @@ -0,0 +1,17 @@ +using System.Text; + +namespace Unity.Flex.Reporting +{ + public static class ReportingExtensions + { + public static void TrimEndDelimeter(this StringBuilder stringBuilder) + { + // Remove the trailing separator + if (stringBuilder.Length > 0) + { + stringBuilder.Length--; + // Remove the last separator + } + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/QuestionAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/QuestionAppService.cs index 58ccb8ef3..7375797cc 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/QuestionAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/QuestionAppService.cs @@ -2,6 +2,7 @@ using System; using System.Threading.Tasks; using Unity.Flex.Domain.Scoresheets; +using Unity.Flex.Scoresheets.Enums; using Unity.Flex.Worksheets.Definitions; using Volo.Abp.Domain.Entities; using Volo.Abp.Validation; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs index 163b84e41..11252c329 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs @@ -7,8 +7,8 @@ using Unity.Flex.Domain.Scoresheets; using Unity.Flex.Domain.Settings; using Unity.Flex.Domain.Utils; -using Unity.Flex.Domain.Worksheets; using Unity.Flex.Reporting.FieldGenerators; +using Unity.Flex.Scoresheets.Enums; using Volo.Abp; using Volo.Abp.Uow; using Volo.Abp.Validation; @@ -277,8 +277,6 @@ public async Task ImportScoresheetAsync(ScoresheetImportDto scoresheetImportDto) await scoresheetRepository.InsertAsync(newScoresheet); } - - public async Task> GetSelectListQuestionsAsync(List questionIdsToCheck) { var result = await GetQuestionsAsync(questionIdsToCheck, QuestionType.SelectList); diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/FlexTypeExtensions.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/FlexTypeExtensions.cs index bcb45a30f..22b68bdb8 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/FlexTypeExtensions.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/FlexTypeExtensions.cs @@ -1,6 +1,6 @@ using System.Linq; using System.Text.Json; -using Unity.Flex.Scoresheets; +using Unity.Flex.Scoresheets.Enums; using Unity.Flex.Worksheets; using Unity.Flex.Worksheets.Definitions; using Unity.Flex.Worksheets.Values; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/Scoresheet/Enums/QuestionType.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/Scoresheets/Enums/QuestionType.cs similarity index 78% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/Scoresheet/Enums/QuestionType.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/Scoresheets/Enums/QuestionType.cs index 46a0b9185..c12532452 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/Scoresheet/Enums/QuestionType.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/Scoresheets/Enums/QuestionType.cs @@ -1,4 +1,4 @@ -namespace Unity.Flex.Scoresheets +namespace Unity.Flex.Scoresheets.Enums { public enum QuestionType { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/ValueConverter.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/ValueConverter.cs index 83c32297e..21356fec6 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/ValueConverter.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/ValueConverter.cs @@ -1,6 +1,6 @@ using System; using System.Text.Json; -using Unity.Flex.Scoresheets; +using Unity.Flex.Scoresheets.Enums; using Unity.Flex.Worksheets; using Unity.Flex.Worksheets.Values; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/ValueResolver.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/ValueResolver.cs index 66426a323..9a461b499 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/ValueResolver.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/ValueResolver.cs @@ -1,6 +1,6 @@ using System; using System.Text.Json; -using Unity.Flex.Scoresheets; +using Unity.Flex.Scoresheets.Enums; using Unity.Flex.Worksheets; using Unity.Flex.Worksheets.Values; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/Worksheets/Definitions/DefinitionResolver.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/Worksheets/Definitions/DefinitionResolver.cs index 1c797c4bf..3d184fac8 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/Worksheets/Definitions/DefinitionResolver.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Shared/Worksheets/Definitions/DefinitionResolver.cs @@ -1,6 +1,6 @@ using System; using System.Text.Json; -using Unity.Flex.Scoresheets; +using Unity.Flex.Scoresheets.Enums; namespace Unity.Flex.Worksheets.Definitions { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Pages/ScoresheetConfiguration/QuestionModal.cshtml.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Pages/ScoresheetConfiguration/QuestionModal.cshtml.cs index 97076882d..3fc412033 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Pages/ScoresheetConfiguration/QuestionModal.cshtml.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Pages/ScoresheetConfiguration/QuestionModal.cshtml.cs @@ -6,6 +6,7 @@ using System.Linq; using System.Threading.Tasks; using Unity.Flex.Scoresheets; +using Unity.Flex.Scoresheets.Enums; using Unity.Flex.Web.Views.Shared.Components.QuestionDefinitionWidget; using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form; using Volo.Abp.Validation; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionDefinitionWidget/Default.cshtml b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionDefinitionWidget/Default.cshtml index 5216eea0d..73dfc2ee4 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionDefinitionWidget/Default.cshtml +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionDefinitionWidget/Default.cshtml @@ -5,32 +5,33 @@ @using Unity.Flex.Web.Views.Shared.Components.TextAreaDefinitionWidget @using Unity.Flex.Web.Views.Shared.Components.TextDefinitionWidget; @using Unity.Flex; +@using Unity.Flex.Scoresheets.Enums; @model QuestionDefinitionViewModel; @switch (Model.Type) { - case Unity.Flex.Scoresheets.QuestionType.Text: + case QuestionType.Text: @await Component.InvokeAsync(typeof(TextDefinitionWidget), new { Model.Definition }) break; - case Unity.Flex.Scoresheets.QuestionType.Number: + case QuestionType.Number: @await Component.InvokeAsync(typeof(NumericDefinitionWidget), new { Model.Definition }) break; - case Unity.Flex.Scoresheets.QuestionType.YesNo: + case QuestionType.YesNo: @await Component.InvokeAsync(typeof(QuestionYesNoDefinitionWidget), new { Model.Definition }) break; - case Unity.Flex.Scoresheets.QuestionType.SelectList: + case QuestionType.SelectList: @await Component.InvokeAsync(typeof(QuestionSelectListDefinitionWidget), new { Model.Definition }) break; - case Unity.Flex.Scoresheets.QuestionType.TextArea: + case QuestionType.TextArea: @await Component.InvokeAsync(typeof(TextAreaDefinitionWidget), new { Model.Definition }) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionDefinitionWidget/QuestionDefinitionViewModel.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionDefinitionWidget/QuestionDefinitionViewModel.cs index d2ab68f22..c6a4b9f95 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionDefinitionWidget/QuestionDefinitionViewModel.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionDefinitionWidget/QuestionDefinitionViewModel.cs @@ -1,4 +1,4 @@ -using Unity.Flex.Scoresheets; +using Unity.Flex.Scoresheets.Enums; namespace Unity.Flex.Web.Views.Shared.Components.QuestionDefinitionWidget { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionDefinitionWidget/QuestionDefinitionWidget.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionDefinitionWidget/QuestionDefinitionWidget.cs index a2ffea8ae..3af4e543d 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionDefinitionWidget/QuestionDefinitionWidget.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionDefinitionWidget/QuestionDefinitionWidget.cs @@ -6,8 +6,8 @@ using System.Collections.Generic; using System; using Microsoft.AspNetCore.Http; -using Unity.Flex.Scoresheets; using Unity.Flex.Worksheets.Definitions; +using Unity.Flex.Scoresheets.Enums; namespace Unity.Flex.Web.Views.Shared.Components.QuestionDefinitionWidget { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionSelectListWidget/Default.cshtml b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionSelectListWidget/Default.cshtml index 6bc71d220..aa077f19d 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionSelectListWidget/Default.cshtml +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Views/Shared/Components/QuestionSelectListWidget/Default.cshtml @@ -2,6 +2,7 @@ @using Unity.Flex.Web.Views.Shared.Components.QuestionSelectListWidget; @using Unity.Flex.Worksheets.Definitions; @using Unity.Flex; +@using Unity.Flex.Scoresheets.Enums; @model QuestionSelectListViewModel; @@ -14,7 +15,7 @@ disabled="@Model.IsDisabled" onchange="handleInputChange('@Model.QuestionId','answer-selectlist-')"> - @foreach (var item in ((QuestionSelectListDefinition?)Model.Definition?.ConvertDefinition(Unity.Flex.Scoresheets.QuestionType.SelectList))?.Options ?? []) + @foreach (var item in ((QuestionSelectListDefinition?)Model.Definition?.ConvertDefinition(QuestionType.SelectList))?.Options ?? []) { var truncatedValue = item.Value.Length > 70 ? item.Value.Substring(0, 70) + " ..." : item.Value; @truncatedValue diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Assessments/AssessmentAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Assessments/AssessmentAppService.cs index a80c97ecd..1b33b7008 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Assessments/AssessmentAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Assessments/AssessmentAppService.cs @@ -7,6 +7,7 @@ using System.Threading.Tasks; using Unity.Flex; using Unity.Flex.Scoresheets; +using Unity.Flex.Scoresheets.Enums; using Unity.Flex.Scoresheets.Events; using Unity.Flex.Worksheets.Definitions; using Unity.GrantManager.Applications; @@ -162,7 +163,7 @@ private async Task GetSelectListAnswerSubtotal(ScoresheetInstanceDto ins double selectListSubtotal = instance.Answers.Where(a => existingSelectListQuestionIds.Contains(a.QuestionId)) .Sum(answer => { - var value = ValueResolver.Resolve(answer.CurrentValue!, Unity.Flex.Scoresheets.QuestionType.SelectList)!.ToString(); + var value = ValueResolver.Resolve(answer.CurrentValue!, QuestionType.SelectList)!.ToString(); var question = existingSelectListQuestions.Find(q => q.Id == answer.QuestionId) ?? throw new AbpValidationException("Missing QuestionId"); var definition = JsonSerializer.Deserialize(question.Definition ?? "{}"); var selectedOption = definition?.Options.Find(o => o.Value == value); @@ -185,7 +186,7 @@ private async Task GetYesNoAnswerSubtotal(ScoresheetInstanceDto instance double yesNoSubtotal = instance.Answers.Where(a => existingYesNoQuestionIds.Contains(a.QuestionId)) .Sum(answer => { - var value = ValueResolver.Resolve(answer.CurrentValue!, Unity.Flex.Scoresheets.QuestionType.YesNo)!.ToString(); + var value = ValueResolver.Resolve(answer.CurrentValue!, QuestionType.YesNo)!.ToString(); var question = existingYesNoQuestions.Find(q => q.Id == answer.QuestionId) ?? throw new AbpValidationException("Missing QuestionId"); var definition = JsonSerializer.Deserialize(question.Definition ?? "{}"); return value switch @@ -202,7 +203,7 @@ private async Task GetNumericAnswerSubtotal(ScoresheetInstanceDto instan { var existingNumericQuestionIds = await _scoresheetAppService.GetNumericQuestionIdsAsync(questionIds); double numericSubtotal = instance.Answers.Where(a => existingNumericQuestionIds.Contains(a.QuestionId)) - .Sum(a => Convert.ToDouble(ValueResolver.Resolve(a.CurrentValue!, Unity.Flex.Scoresheets.QuestionType.Number)!.ToString())); + .Sum(a => Convert.ToDouble(ValueResolver.Resolve(a.CurrentValue!, QuestionType.Number)!.ToString())); return numericSubtotal; } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentScoresWidget/AssessmentScoresWidgetViewComponent.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentScoresWidget/AssessmentScoresWidgetViewComponent.cs index c051c4dc6..0e40f9362 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentScoresWidget/AssessmentScoresWidgetViewComponent.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentScoresWidget/AssessmentScoresWidgetViewComponent.cs @@ -12,6 +12,7 @@ using System.Linq; using Unity.Flex.Worksheets; using Unity.Flex; +using Unity.Flex.Scoresheets.Enums; namespace Unity.GrantManager.Web.Views.Shared.Components.AssessmentScoresWidget { diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentScoresWidget/Default.cshtml b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentScoresWidget/Default.cshtml index 2db064fd0..715b42c66 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentScoresWidget/Default.cshtml +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Web/Views/Shared/Components/AssessmentScoresWidget/Default.cshtml @@ -6,6 +6,7 @@ @using Unity.GrantManager.Web.Views.Shared.Components.AssessmentScoresWidget; @using Unity.Flex.Scoresheets; @using Unity.Flex; +@using Unity.Flex.Scoresheets.Enums; @model AssessmentScoresWidgetViewModel @{ @@ -14,157 +15,157 @@ @if (Model.Scoresheet != null) { - -
- @if (Model.Scoresheet.Sections.Any()) - { -
- - -
- } + +
+ @if (Model.Scoresheet.Sections.Any()) + { +
+ + +
+ } +
-
-
- @if (Model.Scoresheet.Sections.Any()) +
+ @if (Model.Scoresheet.Sections.Any()) + { + var sectionNumber = 1; + @foreach (var sec in Model.Scoresheet.Sections.OrderBy(s => s.Order)) { - var sectionNumber = 1; - @foreach (var sec in Model.Scoresheet.Sections.OrderBy(s => s.Order)) - { -
-
-

+
+ +

-

-
-
-
- @if (sec.Fields != null && sec.Fields.Any()) + @sectionNumber. @sec.Name + +

+
+
+
+ @if (sec.Fields != null && sec.Fields.Any()) + { + var questionNumber = 1; + @foreach (var question in sec.Fields.OrderBy(q => q.Order)) { - var questionNumber = 1; - @foreach (var question in sec.Fields.OrderBy(q => q.Order)) - { - var convertedDefinition = question.Definition?.ConvertDefinition(question.Type); - -
-

+ var convertedDefinition = question.Definition?.ConvertDefinition(question.Type); + +
+

-

-
-
-

@question.Description

+ @sectionNumber.@questionNumber @question.Label + @if (question.Definition?.ConvertDefinition(question.Type)?.GetIsRequired() == true) + { + * + } + +

+
+
+

@question.Description

- @switch (question.Type) + @switch (question.Type) + { + case QuestionType.Number: { - case QuestionType.Number: - { - @await Component.InvokeAsync(typeof(QuestionNumberWidget), - new - { - QuestionId = question.Id, - IsDisabled = Model.IsDisabled(), - Answer = Convert.ToDouble(string.IsNullOrEmpty(question.Answer) ? 0 : question.Answer), - Min = convertedDefinition?.GetMinValueOrNull(), - Max = convertedDefinition?.GetMaxValueOrNull(), - Required = convertedDefinition?.GetIsRequired() - }) - break; - } - case QuestionType.YesNo: + @await Component.InvokeAsync(typeof(QuestionNumberWidget), + new + { + QuestionId = question.Id, + IsDisabled = Model.IsDisabled(), + Answer = Convert.ToDouble(string.IsNullOrEmpty(question.Answer) ? 0 : question.Answer), + Min = convertedDefinition?.GetMinValueOrNull(), + Max = convertedDefinition?.GetMaxValueOrNull(), + Required = convertedDefinition?.GetIsRequired() + }) + break; + } + case QuestionType.YesNo: + { + @await Component.InvokeAsync(typeof(QuestionYesNoWidget), new { - @await Component.InvokeAsync(typeof(QuestionYesNoWidget), new - { - QuestionId = question.Id, - IsDisabled = Model.IsDisabled(), - Answer = question.Answer, - YesValue = convertedDefinition?.GetYesValueOrNull(), - NoValue = convertedDefinition?.GetNoValueOrNull(), - Required = convertedDefinition?.GetIsRequired() - }) - break; - } - case QuestionType.Text: + QuestionId = question.Id, + IsDisabled = Model.IsDisabled(), + Answer = question.Answer, + YesValue = convertedDefinition?.GetYesValueOrNull(), + NoValue = convertedDefinition?.GetNoValueOrNull(), + Required = convertedDefinition?.GetIsRequired() + }) + break; + } + case QuestionType.Text: + { + @await Component.InvokeAsync(typeof(QuestionTextWidget), new { - @await Component.InvokeAsync(typeof(QuestionTextWidget), new - { - QuestionId = question.Id, - IsDisabled = Model.IsDisabled(), - Answer = question.Answer, - MinLength = convertedDefinition?.GetMinLengthValueOrNull(), - MaxLength = convertedDefinition?.GetMaxLengthValueOrNull(), - Required = convertedDefinition?.GetIsRequired() - }) - break; - } - case QuestionType.SelectList: + QuestionId = question.Id, + IsDisabled = Model.IsDisabled(), + Answer = question.Answer, + MinLength = convertedDefinition?.GetMinLengthValueOrNull(), + MaxLength = convertedDefinition?.GetMaxLengthValueOrNull(), + Required = convertedDefinition?.GetIsRequired() + }) + break; + } + case QuestionType.SelectList: + { + @await Component.InvokeAsync(typeof(QuestionSelectListWidget), new { - @await Component.InvokeAsync(typeof(QuestionSelectListWidget), new - { - QuestionId = question.Id, - IsDisabled = Model.IsDisabled(), - Answer = question.Answer, - Definition = question.Definition, - Required = convertedDefinition?.GetIsRequired() - }) - break; - } - case QuestionType.TextArea: + QuestionId = question.Id, + IsDisabled = Model.IsDisabled(), + Answer = question.Answer, + Definition = question.Definition, + Required = convertedDefinition?.GetIsRequired() + }) + break; + } + case QuestionType.TextArea: + { + @await Component.InvokeAsync(typeof(QuestionTextAreaWidget), new { - @await Component.InvokeAsync(typeof(QuestionTextAreaWidget), new - { - QuestionId = question.Id, - IsDisabled = Model.IsDisabled(), - Answer = question.Answer, - MinLength = convertedDefinition?.GetMinLengthValueOrNull(), - MaxLength = convertedDefinition?.GetMaxLengthValueOrNull(), - Rows = convertedDefinition?.GetRowsOrZero(), - Required = convertedDefinition?.GetIsRequired() - }) - break; - } + QuestionId = question.Id, + IsDisabled = Model.IsDisabled(), + Answer = question.Answer, + MinLength = convertedDefinition?.GetMinLengthValueOrNull(), + MaxLength = convertedDefinition?.GetMaxLengthValueOrNull(), + Rows = convertedDefinition?.GetRowsOrZero(), + Required = convertedDefinition?.GetIsRequired() + }) + break; } -
+ }
- questionNumber++; - } - } - else - { -

No questions available.

+
+ questionNumber++; } -
-
-
- - + } + else + { +

No questions available.

+ }
- -
- sectionNumber++; - } - } - else - { -

No sections available.

+
+ + +
+
+ +
+ sectionNumber++; } -
-
-
- - + } + else + { +

No sections available.

+ }
+
+ + +
+ } else { From b7b0da823179605eb245be0289e3497796680ab3 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Mon, 13 Jan 2025 14:12:16 -0800 Subject: [PATCH 11/28] AB#26819 checkbox group column builder and fix audit json loop --- .../Domain/Worksheets/CustomField.cs | 4 ++- .../Domain/Worksheets/WorksheetSection.cs | 3 ++ .../CheckboxGroupReportingFieldsGenerator.cs | 34 +++++++++++++++++-- .../DataGridReportingFieldsGenerator.cs | 2 +- .../DefaultReportingFieldsGenerator.cs | 2 +- .../IReportingFieldsGenerator.cs | 2 +- .../DefaultFieldsGenerator.cs | 4 +-- ...oresheetReportingFieldsGeneratorService.cs | 13 ++++--- ...orksheetReportingFieldsGeneratorService.cs | 15 +++++--- 9 files changed, 61 insertions(+), 18 deletions(-) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/CustomField.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/CustomField.cs index 4e401f0cc..1eca950ce 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/CustomField.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/CustomField.cs @@ -1,6 +1,7 @@ using System; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; +using System.Text.Json.Serialization; using Unity.Flex.Worksheets; using Unity.Flex.Worksheets.Definitions; using Volo.Abp; @@ -23,7 +24,8 @@ public class CustomField : FullAuditedEntity, IMultiTenant public Guid? TenantId { get; set; } - // Navigation + // Navigation + [JsonIgnore] public virtual WorksheetSection Section { set => _section = value; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/WorksheetSection.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/WorksheetSection.cs index b074fc63b..be6fdef71 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/WorksheetSection.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Worksheets/WorksheetSection.cs @@ -1,6 +1,7 @@ using System; using System.Collections.ObjectModel; using System.Linq; +using System.Text.Json.Serialization; using Volo.Abp; using Volo.Abp.Domain.Entities.Auditing; using Volo.Abp.MultiTenancy; @@ -11,6 +12,8 @@ public class WorksheetSection : FullAuditedEntity, IMultiTenant { // Navigation public virtual Guid WorksheetId { get; set; } + + [JsonIgnore] public virtual Worksheet Worksheet { set => _worksheet = value; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs index b0aa05d99..c6399c713 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs @@ -1,14 +1,42 @@ -using System; +using System.Linq; +using System.Text; +using System.Text.Json; using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Worksheets.Definitions; namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators { public class CheckboxGroupReportingFieldsGenerator(CustomField customField) : CustomFieldsReportingGenerator(customField), IReportingFieldsGenerator { - public (string columns, string keys) Generate() + public (string keys, string columns) Generate() { - throw new NotImplementedException(); + var value = JsonSerializer.Deserialize(customField.Definition.ToString()); + StringBuilder keysString = new(); + StringBuilder columnsString = new(); + + if (value == null) + { + return (string.Empty, string.Empty); + } + + var options = value.Options ?? []; + + foreach (var key in options.Select(s => s.Key)) + { + keysString + .Append(key) + .Append(ReportingConsts.ReportFieldDelimiter); + + columnsString + .Append(key) + .Append(ReportingConsts.ReportFieldDelimiter); + } + + keysString.TrimEndDelimeter(); + columnsString.TrimEndDelimeter(); + + return (keysString.ToString(), columnsString.ToString()); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs index 5ab66f93f..4ce58bb52 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs @@ -6,7 +6,7 @@ namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators public class DataGridReportingFieldsGenerator(CustomField customField) : CustomFieldsReportingGenerator(customField), IReportingFieldsGenerator { - public (string columns, string keys) Generate() + public (string keys, string columns) Generate() { throw new NotImplementedException(); } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs index 427630127..13760d631 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs @@ -5,7 +5,7 @@ namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators public class DefaultReportingFieldsGenerator(CustomField customField) : CustomFieldsReportingGenerator(customField), IReportingFieldsGenerator { - public (string columns, string keys) Generate() + public (string keys, string columns) Generate() { // We intentionally use the key twice here return (customField.Key, customField.Key); diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGenerator.cs index 959b0db43..d0a13c396 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/IReportingFieldsGenerator.cs @@ -2,6 +2,6 @@ { public interface IReportingFieldsGenerator { - (string columns, string keys) Generate(); + (string keys, string columns) Generate(); } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs index 9a70b547c..f32dc6ff5 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/DefaultFieldsGenerator.cs @@ -5,9 +5,9 @@ namespace Unity.Flex.Reporting.FieldGenerators.QuestionFieldGenerators public class DefaultFieldsGenerator(Question question) : QuestionsReportingGenerator(question), IReportingFieldsGenerator { - public (string columns, string keys) Generate() + public (string keys, string columns) Generate() { - return (SanitizeColumnName(question.Name), question.Name); + return (question.Name, SanitizeColumnName(question.Name)); } } } \ No newline at end of file diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs index 9636e7fa0..b36f41789 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorService.cs @@ -32,16 +32,21 @@ private static (string reportingKeys, string reportingColumns, string reportView foreach (var field in scoresheet.Sections.SelectMany(s => s.Fields)) { - var (columns, keys) = ReportingFieldsGeneratorFactory + var (keys, columns) = ReportingFieldsGeneratorFactory .Create(field) .Generate(); - columnsBuilder.Append(columns).Append(ReportingConsts.ReportFieldDelimiter); - keysBuilder.Append(keys).Append(ReportingConsts.ReportFieldDelimiter); + keysBuilder + .Append(keys) + .Append(ReportingConsts.ReportFieldDelimiter); + + columnsBuilder + .Append(columns) + .Append(ReportingConsts.ReportFieldDelimiter); } - columnsBuilder.TrimEndDelimeter(); keysBuilder.TrimEndDelimeter(); + columnsBuilder.TrimEndDelimeter(); return new(keysBuilder.ToString(), columnsBuilder.ToString(), $"Scoresheet-{scoresheet.Name}"); } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs index 2f0e0ebe3..3e3d3cc5b 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorService.cs @@ -31,16 +31,21 @@ private static (string reportingKeys, string reportingColumns, string reportView foreach (var field in worksheet.Sections.SelectMany(s => s.Fields)) { - var (columns, keys) = ReportingFieldsGeneratorFactory + var (keys, columns) = ReportingFieldsGeneratorFactory .Create(field) .Generate(); - columnsBuilder.Append(columns).Append(ReportingConsts.ReportFieldDelimiter); - keysBuilder.Append(keys).Append(ReportingConsts.ReportFieldDelimiter); - } + keysBuilder + .Append(keys) + .Append(ReportingConsts.ReportFieldDelimiter); - columnsBuilder.TrimEndDelimeter(); + columnsBuilder + .Append(columns) + .Append(ReportingConsts.ReportFieldDelimiter); + } + keysBuilder.TrimEndDelimeter(); + columnsBuilder.TrimEndDelimeter(); return new(keysBuilder.ToString(), columnsBuilder.ToString(), $"Worksheet-{worksheet.Name}"); } From 2941799068a452b3f275f17bd5cc3eeb6060d486 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Tue, 14 Jan 2025 10:20:55 -0800 Subject: [PATCH 12/28] AB#26819 checkboxgroup report datagenerator added --- .../CheckboxGroupReportDataGenerator.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs index 182a47b8a..f38a08dac 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs @@ -1,5 +1,5 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; +using System.Text.Json; using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Values; @@ -10,7 +10,16 @@ public class CheckboxGroupReportDataGenerator(CustomField customField, FieldInst { public Dictionary> Generate() { - throw new NotImplementedException(); + var values = new Dictionary>(); + + var checkboxValue = JsonSerializer.Deserialize(value.Value); + + foreach (var option in checkboxValue ?? []) + { + values.Add(option.Key, [option.Value.ToString()]); + } + + return values; } } } From f425eb1facc7893faadb59a8f097c641a9e97257 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Tue, 14 Jan 2025 12:03:37 -0800 Subject: [PATCH 13/28] AB#26819 refactor and add datagrid report field generator --- .../CheckboxGroupReportingFieldsGenerator.cs | 24 +++++---------- .../CustomFieldsReportingGenerator.cs | 13 ++++++++- .../DataGridReportingFieldsGenerator.cs | 29 +++++++++++++++++-- .../Reporting/ReportingExtensions.cs | 7 +++++ 4 files changed, 53 insertions(+), 20 deletions(-) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs index c6399c713..f4f87ae79 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs @@ -1,5 +1,4 @@ using System.Linq; -using System.Text; using System.Text.Json; using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Definitions; @@ -11,32 +10,23 @@ public class CheckboxGroupReportingFieldsGenerator(CustomField customField) { public (string keys, string columns) Generate() { - var value = JsonSerializer.Deserialize(customField.Definition.ToString()); - StringBuilder keysString = new(); - StringBuilder columnsString = new(); + var definition = JsonSerializer.Deserialize(customField.Definition.ToString()); - if (value == null) + if (definition == null) { return (string.Empty, string.Empty); } - var options = value.Options ?? []; + var options = definition.Options ?? []; foreach (var key in options.Select(s => s.Key)) { - keysString - .Append(key) - .Append(ReportingConsts.ReportFieldDelimiter); - - columnsString - .Append(key) - .Append(ReportingConsts.ReportFieldDelimiter); + var fieldName = $"{customField.Key}-{key}"; + keysString.AddFieldAndDelimiter(fieldName); + columnsString.AddFieldAndDelimiter(fieldName); } - keysString.TrimEndDelimeter(); - columnsString.TrimEndDelimeter(); - - return (keysString.ToString(), columnsString.ToString()); + return TrimAndCreateKeysAndColumns(keysString, columnsString); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs index 1a04c5664..1c814b63e 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs @@ -1,14 +1,25 @@ -using Unity.Flex.Domain.Worksheets; +using System.Text; +using Unity.Flex.Domain.Worksheets; namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators { public class CustomFieldsReportingGenerator { protected readonly CustomField customField; + protected StringBuilder keysString = new(); + protected StringBuilder columnsString = new(); protected CustomFieldsReportingGenerator(CustomField customField) { this.customField = customField; } + + protected static (string keys, string columns) TrimAndCreateKeysAndColumns(StringBuilder keysString, StringBuilder columnsString) + { + keysString.TrimEndDelimeter(); + columnsString.TrimEndDelimeter(); + + return (keysString.ToString(), columnsString.ToString()); + } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs index 4ce58bb52..8124873b0 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs @@ -1,5 +1,7 @@ -using System; +using System.Linq; +using System.Text.Json; using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Worksheets.Definitions; namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators { @@ -8,7 +10,30 @@ public class DataGridReportingFieldsGenerator(CustomField customField) { public (string keys, string columns) Generate() { - throw new NotImplementedException(); + var dynamicKeyColumn = "DynamicColumns"; + var definition = JsonSerializer.Deserialize(customField.Definition.ToString()); + + if (definition == null) + { + return (string.Empty, string.Empty); + } + + if (definition.Dynamic) + { + var fieldName = $"{customField.Key}-{dynamicKeyColumn}"; + // We need to add a placeholder column for the dynamic columns, these are hydrated during an intake + keysString.AddFieldAndDelimiter(fieldName); + columnsString.AddFieldAndDelimiter(fieldName); + } + + foreach (var columnName in definition.Columns.Select(s => s.Name)) + { + var fieldName = $"{customField.Key}-{columnName}"; + keysString.AddFieldAndDelimiter(fieldName); + columnsString.AddFieldAndDelimiter(fieldName); + } + + return TrimAndCreateKeysAndColumns(keysString, columnsString); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ReportingExtensions.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ReportingExtensions.cs index b44cd9d54..8a8978c88 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ReportingExtensions.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ReportingExtensions.cs @@ -13,5 +13,12 @@ public static void TrimEndDelimeter(this StringBuilder stringBuilder) // Remove the last separator } } + + public static StringBuilder AddFieldAndDelimiter(this StringBuilder stringBuilder, string field) + { + return stringBuilder + .Append(field) + .Append(ReportingConsts.ReportFieldDelimiter); + } } } From 80b493b753051932edb3594455bfe6e5961d32b6 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Tue, 14 Jan 2025 13:31:37 -0800 Subject: [PATCH 14/28] AB#26819 refactor and add summaries --- .../DefaultReportDataGenerator.cs | 6 +++- ...ratorBase.cs => ReportingDataGenerator.cs} | 4 +-- .../CheckboxGroupReportDataGenerator.cs | 8 +++-- .../DataGridReportDataGenerator.cs | 34 ++++++++++++++++--- .../DefaultReportDataGenerator.cs | 2 +- ...ratorBase.cs => ReportingDataGenerator.cs} | 4 +-- .../CheckboxGroupReportingFieldsGenerator.cs | 4 +++ .../CustomFieldsReportingGenerator.cs | 6 ++++ .../DataGridReportingFieldsGenerator.cs | 27 +++++++++++---- .../DefaultReportingFieldsGenerator.cs | 4 +++ 10 files changed, 80 insertions(+), 19 deletions(-) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/{ReportingDataGeneratorBase.cs => ReportingDataGenerator.cs} (66%) rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/{ReportingDataGeneratorBase.cs => ReportingDataGenerator.cs} (71%) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/DefaultReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/DefaultReportDataGenerator.cs index 0dd89264b..e587d9597 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/DefaultReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/DefaultReportDataGenerator.cs @@ -4,8 +4,12 @@ namespace Unity.Flex.Reporting.DataGenerators.AnswerGenerators { public class DefaultReportDataGenerator(Answer answer) - : ReportingDataGeneratorBase(answer), IReportingDataGenerator + : ReportingDataGenerator(answer), IReportingDataGenerator { + /// + /// Default key values pairing for the reporting data generation + /// + /// Dictionary with keys and matched values for reporting data public Dictionary> Generate() { return new Dictionary> diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGeneratorBase.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGenerator.cs similarity index 66% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGeneratorBase.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGenerator.cs index 4c7006743..dbba22369 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGeneratorBase.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGenerator.cs @@ -2,10 +2,10 @@ namespace Unity.Flex.Reporting.DataGenerators.AnswerGenerators { - public class ReportingDataGeneratorBase + public class ReportingDataGenerator { protected Answer answer; - protected ReportingDataGeneratorBase(Answer answer) + protected ReportingDataGenerator(Answer answer) { this.answer = answer; } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs index f38a08dac..25b2fb767 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs @@ -6,8 +6,12 @@ namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators { public class CheckboxGroupReportDataGenerator(CustomField customField, FieldInstanceValue value) - : ReportingDataGeneratorBase(customField, value), IReportingDataGenerator + : ReportingDataGenerator(customField, value), IReportingDataGenerator { + /// + /// Generate a list of keys and matched values for reporting data for a checkboxgroup component + /// + /// Dictionary of unique keys with any matching values for the keys public Dictionary> Generate() { var values = new Dictionary>(); @@ -16,7 +20,7 @@ public Dictionary> Generate() foreach (var option in checkboxValue ?? []) { - values.Add(option.Key, [option.Value.ToString()]); + values.Add($"{customField.Key}-{option.Key}", [option.Value.ToString()]); } return values; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs index 4715ed219..be8ba8ca0 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs @@ -1,16 +1,42 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; +using System.Linq; +using System.Text.Json; using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Values; namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators { public class DataGridReportDataGenerator(CustomField customField, FieldInstanceValue value) - : ReportingDataGeneratorBase(customField, value), IReportingDataGenerator + : ReportingDataGenerator(customField, value), IReportingDataGenerator { + /// + /// Generate the keys and values for a datagrid for reporting + /// + /// ictionary of unique keys with any matching values for the keys public Dictionary> Generate() { - throw new NotImplementedException(); + var values = new Dictionary>(); + var rowsValue = JsonSerializer.Deserialize(value.Value); + + if (rowsValue == null) return values; + + foreach (var cells in rowsValue.Rows.Select(s => s.Cells)) + { + foreach (var cell in cells) + { + var fieldName = $"{customField.Key}-{cell.Key}"; + if (values.TryGetValue(fieldName, out List? value)) + { + value.Add(cell.Value); + } + else + { + values.Add(fieldName, [cell.Value]); + } + } + } + + return values; } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs index 4b68e5bc0..757ecbca2 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs @@ -5,7 +5,7 @@ namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators { public class DefaultReportDataGenerator(CustomField customField, FieldInstanceValue value) - : ReportingDataGeneratorBase(customField, value), IReportingDataGenerator + : ReportingDataGenerator(customField, value), IReportingDataGenerator { public Dictionary> Generate() { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGeneratorBase.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGenerator.cs similarity index 71% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGeneratorBase.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGenerator.cs index e0e56ac36..06a167ab7 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGeneratorBase.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGenerator.cs @@ -3,12 +3,12 @@ namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators { - public class ReportingDataGeneratorBase + public class ReportingDataGenerator { protected CustomField customField; protected FieldInstanceValue value; - protected ReportingDataGeneratorBase(CustomField customField, FieldInstanceValue value) + protected ReportingDataGenerator(CustomField customField, FieldInstanceValue value) { this.customField = customField; this.value = value; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs index f4f87ae79..e188d1136 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CheckboxGroupReportingFieldsGenerator.cs @@ -8,6 +8,10 @@ namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators public class CheckboxGroupReportingFieldsGenerator(CustomField customField) : CustomFieldsReportingGenerator(customField), IReportingFieldsGenerator { + /// + /// Generate the keys and columns string that represents the fields data for reporting purposes base on the custom field + /// + /// A tuple with the keys and column delimited by the reporting fields delimeter public (string keys, string columns) Generate() { var definition = JsonSerializer.Deserialize(customField.Definition.ToString()); diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs index 1c814b63e..a93d0b340 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs @@ -14,6 +14,12 @@ protected CustomFieldsReportingGenerator(CustomField customField) this.customField = customField; } + /// + /// Trim any trailing delimeter characters and return the stringified keys and columns + /// + /// + /// + /// A tuple with the formatted keys and columns for reporting fields protected static (string keys, string columns) TrimAndCreateKeysAndColumns(StringBuilder keysString, StringBuilder columnsString) { keysString.TrimEndDelimeter(); diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs index 8124873b0..3a8cb1214 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DataGridReportingFieldsGenerator.cs @@ -8,6 +8,10 @@ namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators public class DataGridReportingFieldsGenerator(CustomField customField) : CustomFieldsReportingGenerator(customField), IReportingFieldsGenerator { + /// + /// Generate the keys and columns for reporting fields for a datagrid + /// + /// A tuple with the formatted keys and columns for reporting fields public (string keys, string columns) Generate() { var dynamicKeyColumn = "DynamicColumns"; @@ -18,22 +22,31 @@ public class DataGridReportingFieldsGenerator(CustomField customField) return (string.Empty, string.Empty); } - if (definition.Dynamic) + AddDynamicColumns(dynamicKeyColumn, definition); + AddColumnDefinitions(definition); + + return TrimAndCreateKeysAndColumns(keysString, columnsString); + } + + private void AddColumnDefinitions(DataGridDefinition definition) + { + foreach (var columnName in definition.Columns.Select(s => s.Name)) { - var fieldName = $"{customField.Key}-{dynamicKeyColumn}"; - // We need to add a placeholder column for the dynamic columns, these are hydrated during an intake + var fieldName = $"{customField.Key}-{columnName}"; keysString.AddFieldAndDelimiter(fieldName); columnsString.AddFieldAndDelimiter(fieldName); } + } - foreach (var columnName in definition.Columns.Select(s => s.Name)) + private void AddDynamicColumns(string dynamicKeyColumn, DataGridDefinition definition) + { + if (definition.Dynamic) { - var fieldName = $"{customField.Key}-{columnName}"; + var fieldName = $"{customField.Key}-{dynamicKeyColumn}"; + // We need to add a placeholder column for the dynamic columns, these are hydrated during an intake keysString.AddFieldAndDelimiter(fieldName); columnsString.AddFieldAndDelimiter(fieldName); } - - return TrimAndCreateKeysAndColumns(keysString, columnsString); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs index 13760d631..c0cd1d2dd 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs @@ -5,6 +5,10 @@ namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators public class DefaultReportingFieldsGenerator(CustomField customField) : CustomFieldsReportingGenerator(customField), IReportingFieldsGenerator { + /// + /// Generate the default reporting fields keys and columns for a custom field + /// + /// A tuple with the formatted keys and columns for reporting fields public (string keys, string columns) Generate() { // We intentionally use the key twice here From 97e9b901514d4108b66cf0f4b7549c58138a6646 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Wed, 15 Jan 2025 14:00:47 -0800 Subject: [PATCH 15/28] AB#26819 update reporting functions and start services for retrospective report data generation --- .../ReportingDataGenerator.cs | 3 + .../DataGridReportDataGenerator.cs | 2 +- .../DefaultReportDataGenerator.cs | 4 + .../ReportingDataGenerator.cs | 3 + ...coresheetsReportingDataGeneratorFactory.cs | 17 + ...coresheetsReportingDataGeneratorService.cs | 2 +- ...orksheetsReportingDataGeneratorFactory.cs} | 17 +- ...WorksheetsReportingDataGeneratorService.cs | 8 +- .../CustomFieldsReportingGenerator.cs | 4 +- .../DefaultReportingFieldsGenerator.cs | 2 +- .../QuestionsReportingGenerator.cs | 28 +- .../ReportingFieldsGenerator.cs | 32 + .../ScoresheetsDynamicViewGeneratorHandler.cs | 5 + .../WorksheetsDynamicViewGeneratorHandler.cs | 7 +- .../IReportingDataGeneratorAppService.cs | 11 + .../ReportingDataGeneratorAppService.cs | 47 + .../ReportingFieldsGeneratorService.cs | 11 +- .../Reporting/ReportingConsts.cs | 8 + .../SubmissionsDynamicViewGeneratorHandler.cs | 5 + ...teUpdateReportSchemaProcedures.Designer.cs | 3361 +++++++++++++++++ ...0723_CreateUpdateReportSchemaProcedures.cs | 27 + 21 files changed, 3559 insertions(+), 45 deletions(-) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorFactory.cs rename applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/{ReportingDataGeneratorFactory.cs => WorksheetsReportingDataGeneratorFactory.cs} (60%) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGenerator.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/IReportingDataGeneratorAppService.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGeneratorAppService.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/ReportingConsts.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250115190723_CreateUpdateReportSchemaProcedures.Designer.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250115190723_CreateUpdateReportSchemaProcedures.cs diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGenerator.cs index dbba22369..e8499f0ca 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/AnswerGenerators/ReportingDataGenerator.cs @@ -2,6 +2,9 @@ namespace Unity.Flex.Reporting.DataGenerators.AnswerGenerators { + /// + /// Answer Report Data Generator Base + /// public class ReportingDataGenerator { protected Answer answer; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs index be8ba8ca0..a8d6a5f30 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs @@ -12,7 +12,7 @@ public class DataGridReportDataGenerator(CustomField customField, FieldInstanceV /// /// Generate the keys and values for a datagrid for reporting /// - /// ictionary of unique keys with any matching values for the keys + /// Dictionary of unique keys with any matching values for the keys public Dictionary> Generate() { var values = new Dictionary>(); diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs index 757ecbca2..dc39c1410 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs @@ -7,6 +7,10 @@ namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators public class DefaultReportDataGenerator(CustomField customField, FieldInstanceValue value) : ReportingDataGenerator(customField, value), IReportingDataGenerator { + /// + /// Default key values pairing for the reporting data generation + /// + /// Dictionary with keys and matched values for reporting data public Dictionary> Generate() { return new Dictionary> diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGenerator.cs index 06a167ab7..03d952681 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGenerator.cs @@ -3,6 +3,9 @@ namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators { + /// + /// Custom Fields Report Data Generator Base + /// public class ReportingDataGenerator { protected CustomField customField; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorFactory.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorFactory.cs new file mode 100644 index 000000000..c254ff382 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorFactory.cs @@ -0,0 +1,17 @@ +using Unity.Flex.Domain.Scoresheets; + +namespace Unity.Flex.Reporting.DataGenerators +{ + public static class ScoresheetsReportingDataGeneratorFactory + { + /// + /// Returns the correct Answer Type Data Generator based on the Answer + /// + /// + /// Relevant IReportingDataGenerator that can generate the ReportingData field relevant to the type + public static IReportingDataGenerator Create(Answer answer) + { + return new AnswerGenerators.DefaultReportDataGenerator(answer); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs index a9a9c9dd7..34147dc83 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs @@ -30,7 +30,7 @@ public string Generate(Scoresheet scoresheet, ScoresheetInstance instanceValue) { if (answer != null) { - var keyValues = ReportingDataGeneratorFactory + var keyValues = ScoresheetsReportingDataGeneratorFactory .Create(answer) .Generate(); diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorFactory.cs similarity index 60% rename from applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs rename to applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorFactory.cs index eaa7e045d..589273b3d 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ReportingDataGeneratorFactory.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorFactory.cs @@ -1,13 +1,17 @@ -using Unity.Flex.Domain.ScoresheetInstances; -using Unity.Flex.Domain.Scoresheets; -using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets; using Unity.Flex.Worksheets.Values; namespace Unity.Flex.Reporting.DataGenerators { - public static class ReportingDataGeneratorFactory + public static class WorksheetsReportingDataGeneratorFactory { + /// + /// Returns the correct Field Type Data Generator based on the Custom Field Type + /// + /// + /// + /// Relevant IReportingDataGenerator that can generate the ReportingData field relevant to the type public static IReportingDataGenerator Create(CustomField customField, FieldInstanceValue value) { return customField.Type switch @@ -17,10 +21,5 @@ public static IReportingDataGenerator Create(CustomField customField, FieldInsta _ => new CustomFieldValueGenerators.DefaultReportDataGenerator(customField, value), }; } - - public static IReportingDataGenerator Create(Answer answer) - { - return new AnswerGenerators.DefaultReportDataGenerator(answer); - } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs index 9c65d9131..69017b9e6 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs @@ -12,6 +12,12 @@ namespace Unity.Flex.Reporting.DataGenerators public class WorksheetsReportingDataGeneratorService : ApplicationService, IReportingDataGeneratorService { + /// + /// Generates the data for the Worksheet ReportData field + /// + /// + /// + /// Serialized Key/Values Pair of values for ReportData public string Generate(Worksheet worksheet, WorksheetInstanceValue instanceValue) { var reportData = new Dictionary>(); @@ -29,7 +35,7 @@ public string Generate(Worksheet worksheet, WorksheetInstanceValue instanceValue var definition = definitions.Find(s => s.Key == value.Key); if (definition != null) { - var keyValues = ReportingDataGeneratorFactory + var keyValues = WorksheetsReportingDataGeneratorFactory .Create(definition, value) .Generate(); diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs index a93d0b340..11462d278 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs @@ -3,7 +3,7 @@ namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators { - public class CustomFieldsReportingGenerator + public class CustomFieldsReportingGenerator : ReportingFieldsGenerator { protected readonly CustomField customField; protected StringBuilder keysString = new(); @@ -25,7 +25,7 @@ protected static (string keys, string columns) TrimAndCreateKeysAndColumns(Strin keysString.TrimEndDelimeter(); columnsString.TrimEndDelimeter(); - return (keysString.ToString(), columnsString.ToString()); + return (keysString.ToString(), SanitizeColumnName(columnsString.ToString())); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs index c0cd1d2dd..6d8f4fbeb 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/DefaultReportingFieldsGenerator.cs @@ -12,7 +12,7 @@ public class DefaultReportingFieldsGenerator(CustomField customField) public (string keys, string columns) Generate() { // We intentionally use the key twice here - return (customField.Key, customField.Key); + return (customField.Key, SanitizeColumnName(customField.Key)); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs index b650218fd..0be4bb2ce 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/QuestionFieldGenerators/QuestionsReportingGenerator.cs @@ -1,9 +1,8 @@ -using System.Text.RegularExpressions; -using Unity.Flex.Domain.Scoresheets; +using Unity.Flex.Domain.Scoresheets; namespace Unity.Flex.Reporting.FieldGenerators.QuestionFieldGenerators { - public partial class QuestionsReportingGenerator + public class QuestionsReportingGenerator : ReportingFieldsGenerator { protected readonly Question question; @@ -11,28 +10,5 @@ protected QuestionsReportingGenerator(Question question) { this.question = question; } - - protected static string SanitizeColumnName(string input) - { - // Remove invalid characters (keep only letters, numbers, and underscores) - string sanitized = ValidColumnName().Replace(input, ""); - - // Truncate to 63 characters - if (sanitized.Length > ReportingConsts.ReportColumnMaxLength) - { - sanitized = sanitized[..ReportingConsts.ReportColumnMaxLength]; - } - - // Ensure the column name doesn't start with a number - if (char.IsDigit(sanitized[0])) - { - sanitized = "_" + sanitized; - } - - return sanitized; - } - - [GeneratedRegex(@"[^a-zA-Z0-9_]")] - private static partial Regex ValidColumnName(); } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGenerator.cs new file mode 100644 index 000000000..62c3239d0 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ReportingFieldsGenerator.cs @@ -0,0 +1,32 @@ +using System.Text.RegularExpressions; + +namespace Unity.Flex.Reporting.FieldGenerators +{ + public partial class ReportingFieldsGenerator + { + protected ReportingFieldsGenerator() { } + + protected static string SanitizeColumnName(string input) + { + // Remove invalid characters (keep only letters, numbers, and underscores) + string sanitized = ValidColumnName().Replace(input, ""); + + // Truncate to 63 characters + if (sanitized.Length > ReportingConsts.ReportColumnMaxLength) + { + sanitized = sanitized[..ReportingConsts.ReportColumnMaxLength]; + } + + // Ensure the column name doesn't start with a number + if (char.IsDigit(sanitized[0])) + { + sanitized = "_" + sanitized; + } + + return sanitized; + } + + [GeneratedRegex(@"[^a-zA-Z0-9_]")] + private static partial Regex ValidColumnName(); + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ScoresheetsDynamicViewGeneratorHandler.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ScoresheetsDynamicViewGeneratorHandler.cs index a31b26b28..2fdf49b8f 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ScoresheetsDynamicViewGeneratorHandler.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/ScoresheetsDynamicViewGeneratorHandler.cs @@ -17,6 +17,11 @@ public class ScoresheetsDynamicViewGeneratorHandler( IUnitOfWorkManager unitOfWorkManager, ILogger logger) : ILocalEventHandler, ITransientDependency { + /// + /// Generate a view in the database using the generate_scoresheets_view procedure based on the scoresheet + /// + /// + /// public async Task HandleEventAsync(ScoresheetsDynamicViewGeneratorEto viewGenerationEvent) { try diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs index 6ac203da8..75702d38d 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs @@ -17,8 +17,13 @@ public class WorksheetsDynamicViewGeneratorHandler( IUnitOfWorkManager unitOfWorkManager, ILogger logger) : ILocalEventHandler, ITransientDependency { + /// + /// Generate a view in the database using the generate_worksheets_view function based on the worksheet + /// + /// + /// public async Task HandleEventAsync(WorksheetsDynamicViewGeneratorEto viewGenerationEvent) - { + { try { using (currentTenant.Change(viewGenerationEvent.TenantId)) diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/IReportingDataGeneratorAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/IReportingDataGeneratorAppService.cs new file mode 100644 index 000000000..7050ed45b --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/IReportingDataGeneratorAppService.cs @@ -0,0 +1,11 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace Unity.GrantManager.Reporting +{ + public interface IReportingDataGeneratorAppService : IApplicationService + { + Task GenerateReportData(Guid submissionId); + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGeneratorAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGeneratorAppService.cs new file mode 100644 index 000000000..e3db84be9 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGeneratorAppService.cs @@ -0,0 +1,47 @@ +using Microsoft.AspNetCore.Authorization; +using Newtonsoft.Json.Linq; +using System; +using System.Threading.Tasks; +using Unity.GrantManager.Applications; +using Volo.Abp.Application.Services; +using Volo.Abp.Domain.Entities; + +namespace Unity.GrantManager.Reporting.DataGenerators +{ + [Authorize] + public class ReportingDataGeneratorAppService(IReportingDataGenerator reportingDataGenerator, + IApplicationFormSubmissionRepository applicationFormSubmissionRepository, + IApplicationFormVersionRepository applicationFormVersionRepository) : ApplicationService, IReportingDataGeneratorAppService + { + public async Task GenerateReportData(Guid submissionId) + { + var submission = await applicationFormSubmissionRepository.GetAsync(submissionId); + Guid applicationFormVersionId; + ApplicationFormVersion? applicationFormVersion; + + if (submission.ApplicationFormVersionId == null) + { + applicationFormVersion = await applicationFormVersionRepository.GetByChefsFormVersionAsync(submission.FormVersionId ?? Guid.Empty); + + if (applicationFormVersion == null) + { + throw new EntityNotFoundException(); + } + + applicationFormVersionId = applicationFormVersion.Id; + } + else + { + applicationFormVersionId = submission.ApplicationFormVersionId.Value; + } + + applicationFormVersion = await applicationFormVersionRepository.GetAsync(applicationFormVersionId) ?? throw new EntityNotFoundException(); + + JObject submissionData = JObject.Parse(submission.Submission); + + var reportData = reportingDataGenerator.Generate(submissionData, applicationFormVersion.ReportKeys); + + submission.ReportData = reportData ?? "{}"; + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs index ee548e5da..5646ae4a9 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/ReportingFieldsGeneratorService.cs @@ -14,6 +14,11 @@ namespace Unity.GrantManager.Reporting.FieldGenerators public class ReportingFieldsGeneratorService(ILocalEventBus localEventBus, IApplicationFormRepository applicationFormRepository) : ApplicationService, IReportingFieldsGeneratorService { + /// + /// Dissect the form version schema and extract key value pairs to be stored as the base for reporting + /// + /// + /// public async Task GenerateAndSetAsync(ApplicationFormVersion applicationFormVersion) { // Add keys and columns for report generation @@ -68,16 +73,16 @@ private async Task UpdateFormVersionWithReportKeysAndColumnsAsync(ApplicationFor .Distinct() .Select(fullKey => { - string truncatedKey = fullKey.Length > 63 ? fullKey[..63] : fullKey; + string truncatedKey = fullKey.Length > ReportingConsts.ReportColumnMaxLength ? fullKey[..ReportingConsts.ReportColumnMaxLength] : fullKey; keyMapping[fullKey] = truncatedKey; return fullKey; }); // Get all keys and pipe separate them - string pipeDelimitedKeys = string.Join("|", keys); + string pipeDelimitedKeys = string.Join(ReportingConsts.ReportFieldDelimiter, keys); // Truncate each key to a maximum of 63 characters and create a pipe-delimited string - string truncatedDelimitedKeys = string.Join("|", keys.Select(k => k.Length > 63 ? k[..63] : k)); + string truncatedDelimitedKeys = string.Join(ReportingConsts.ReportFieldDelimiter, keys.Select(k => k.Length > ReportingConsts.ReportColumnMaxLength ? k[..ReportingConsts.ReportColumnMaxLength] : k)); applicationFormVersion.ReportColumns = truncatedDelimitedKeys; applicationFormVersion.ReportKeys = pipeDelimitedKeys; diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/ReportingConsts.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/ReportingConsts.cs new file mode 100644 index 000000000..86ab018a7 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/ReportingConsts.cs @@ -0,0 +1,8 @@ +namespace Unity.GrantManager.Reporting +{ + public static class ReportingConsts + { + public const char ReportFieldDelimiter = '|'; + public const int ReportColumnMaxLength = 63; + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/SubmissionsDynamicViewGeneratorHandler.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/SubmissionsDynamicViewGeneratorHandler.cs index f5a7e9340..0c10de933 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/SubmissionsDynamicViewGeneratorHandler.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/SubmissionsDynamicViewGeneratorHandler.cs @@ -17,6 +17,11 @@ public class SubmissionsDynamicViewGeneratorHandler( IUnitOfWorkManager unitOfWorkManager, ILogger logger) : ILocalEventHandler, ITransientDependency { + /// + /// Generate a View in the database using the generate_submissions_view function based on the application form version + /// + /// + /// public async Task HandleEventAsync(SubmissionsDynamicViewGenerationEto viewGenerationEvent) { try diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250115190723_CreateUpdateReportSchemaProcedures.Designer.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250115190723_CreateUpdateReportSchemaProcedures.Designer.cs new file mode 100644 index 000000000..c47fa65bd --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250115190723_CreateUpdateReportSchemaProcedures.Designer.cs @@ -0,0 +1,3361 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; +using Unity.GrantManager.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + [DbContext(typeof(GrantTenantDbContext))] + [Migration("20250115190723_CreateUpdateReportSchemaProcedures")] + partial class CreateUpdateReportSchemaProcedures + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.PostgreSql) + .HasAnnotation("ProductVersion", "8.0.8") + .HasAnnotation("Relational:MaxIdentifierLength", 63); + + NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Value") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("QuestionId") + .HasColumnType("uuid"); + + b.Property("ScoresheetInstanceId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.HasIndex("QuestionId"); + + b.HasIndex("ScoresheetInstanceId"); + + b.ToTable("Answers", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("Questions", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Scoresheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ScoresheetId"); + + b.ToTable("ScoresheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("CustomFieldId") + .HasColumnType("uuid"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetInstanceId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetInstanceId"); + + b.ToTable("CustomFieldValues", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("CurrentValue") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetCorrelationId") + .HasColumnType("uuid"); + + b.Property("WorksheetCorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.ToTable("WorksheetInstances", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UiAnchor") + .IsRequired() + .HasColumnType("text"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetLinks", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Definition") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Enabled") + .HasColumnType("boolean"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("Key") + .IsRequired() + .HasColumnType("text"); + + b.Property("Label") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("SectionId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("SectionId"); + + b.ToTable("CustomFields", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .IsRequired() + .HasColumnType("text"); + + b.Property("Version") + .HasColumnType("bigint"); + + b.HasKey("Id"); + + b.ToTable("Worksheets", "Flex"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("Order") + .HasColumnType("bigint"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("WorksheetId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("WorksheetId"); + + b.ToTable("WorksheetSections", "Flex"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantName") + .IsRequired() + .HasMaxLength(600) + .HasColumnType("character varying(600)"); + + b.Property("ApproxNumberOfEmployees") + .HasColumnType("text"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FiscalDay") + .HasColumnType("integer"); + + b.Property("FiscalMonth") + .HasColumnType("text"); + + b.Property("IndigenousOrgInd") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MatchPercentage") + .HasColumnType("numeric"); + + b.Property("NonRegisteredBusinessName") + .HasColumnType("text"); + + b.Property("OrgName") + .HasColumnType("text"); + + b.Property("OrgNumber") + .HasColumnType("text"); + + b.Property("OrgStatus") + .HasColumnType("text"); + + b.Property("OrganizationSize") + .HasColumnType("text"); + + b.Property("OrganizationType") + .HasColumnType("text"); + + b.Property("RedStop") + .HasColumnType("boolean"); + + b.Property("Sector") + .HasColumnType("text"); + + b.Property("SectorSubSectorIndustryDesc") + .HasColumnType("text"); + + b.Property("StartedOperatingDate") + .HasColumnType("date"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SubSector") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("UnityApplicantId") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantName"); + + b.ToTable("Applicants", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AddressType") + .HasColumnType("integer"); + + b.Property("ApplicantId") + .IsRequired() + .HasColumnType("uuid"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Postal") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("Street") + .HasColumnType("text"); + + b.Property("Street2") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Unit") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.ToTable("ApplicantAddresses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("BceidBusinessGuid") + .HasColumnType("uuid"); + + b.Property("BceidBusinessName") + .HasColumnType("text"); + + b.Property("BceidUserGuid") + .HasColumnType("uuid"); + + b.Property("BceidUserName") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactOrder") + .HasColumnType("integer"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Email") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IdentityEmail") + .HasColumnType("text"); + + b.Property("IdentityName") + .HasColumnType("text"); + + b.Property("IdentityProvider") + .HasColumnType("text"); + + b.Property("IsActive") + .HasColumnType("boolean"); + + b.Property("IsConfirmed") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSubUser") + .HasColumnType("text"); + + b.Property("Phone") + .HasColumnType("text"); + + b.Property("Phone2") + .HasColumnType("text"); + + b.Property("Phone2Extension") + .HasColumnType("text"); + + b.Property("PhoneExtension") + .HasColumnType("text"); + + b.Property("RoleForApplicant") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Title") + .HasColumnType("text"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationId") + .IsUnique(); + + b.HasIndex("OidcSubUser"); + + b.ToTable("ApplicantAgents", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Acquisition") + .HasColumnType("text"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationStatusId") + .HasColumnType("uuid"); + + b.Property("ApprovedAmount") + .HasColumnType("numeric"); + + b.Property("AssessmentResultDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AssessmentResultStatus") + .HasColumnType("text"); + + b.Property("AssessmentStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Community") + .HasColumnType("text"); + + b.Property("CommunityPopulation") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractExecutionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ContractNumber") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeclineRational") + .HasColumnType("text"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("DueDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DueDiligenceStatus") + .HasColumnType("text"); + + b.Property("EconomicRegion") + .HasColumnType("text"); + + b.Property("ElectoralDistrict") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinalDecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("Forestry") + .HasColumnType("text"); + + b.Property("ForestryFocus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LikelihoodOfFunding") + .HasColumnType("text"); + + b.Property("Notes") + .HasColumnType("text"); + + b.Property("NotificationDate") + .HasColumnType("timestamp without time zone"); + + b.Property("OwnerId") + .HasColumnType("uuid"); + + b.Property("Payload") + .HasColumnType("jsonb"); + + b.Property("PercentageTotalProjectBudget") + .HasColumnType("double precision"); + + b.Property("Place") + .HasColumnType("text"); + + b.Property("ProjectEndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectFundingTotal") + .HasColumnType("numeric"); + + b.Property("ProjectName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("ProjectStartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ProjectSummary") + .HasColumnType("text"); + + b.Property("ProposalDate") + .HasColumnType("timestamp without time zone"); + + b.Property("RecommendedAmount") + .HasColumnType("numeric"); + + b.Property("ReferenceNo") + .IsRequired() + .HasColumnType("text"); + + b.Property("RegionalDistrict") + .HasColumnType("text"); + + b.Property("RequestedAmount") + .HasColumnType("numeric"); + + b.Property("RiskRanking") + .HasColumnType("text"); + + b.Property("SigningAuthorityBusinessPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityCellPhone") + .HasColumnType("text"); + + b.Property("SigningAuthorityEmail") + .HasColumnType("text"); + + b.Property("SigningAuthorityFullName") + .HasColumnType("text"); + + b.Property("SigningAuthorityTitle") + .HasColumnType("text"); + + b.Property("SubStatus") + .HasColumnType("text"); + + b.Property("SubmissionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("TotalProjectBudget") + .HasColumnType("numeric"); + + b.Property("TotalScore") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.HasIndex("ApplicationStatusId"); + + b.HasIndex("OwnerId"); + + b.ToTable("Applications", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssigneeId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("Duty") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssigneeId"); + + b.ToTable("ApplicationAssignments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsFileId") + .HasColumnType("text"); + + b.Property("ChefsSumbissionId") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationChefsFileAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContactEmail") + .HasColumnType("text"); + + b.Property("ContactFullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactMobilePhone") + .HasColumnType("text"); + + b.Property("ContactTitle") + .HasColumnType("text"); + + b.Property("ContactType") + .IsRequired() + .HasColumnType("text"); + + b.Property("ContactWorkPhone") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationContact", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApiKey") + .HasColumnType("text"); + + b.Property("ApplicationFormDescription") + .HasColumnType("text"); + + b.Property("ApplicationFormName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("AttemptedConnectionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("Category") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsCriteriaFormGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConnectionHttpStatus") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeId") + .HasColumnType("uuid"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Payable") + .HasColumnType("boolean"); + + b.Property("RenderFormIoToHtml") + .HasColumnType("boolean"); + + b.Property("ScoresheetId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("IntakeId"); + + b.ToTable("ApplicationForms", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("ApplicationFormVersionId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ChefsSubmissionGuid") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FormVersionId") + .HasColumnType("uuid"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("RenderedHTML") + .HasColumnType("text"); + + b.Property("ReportData") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("Submission") + .IsRequired() + .HasColumnType("jsonb"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicantId"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormSubmissions", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationFormId") + .HasColumnType("uuid"); + + b.Property("AvailableChefsFields") + .HasColumnType("text"); + + b.Property("ChefsApplicationFormGuid") + .HasColumnType("text"); + + b.Property("ChefsFormVersionGuid") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Published") + .HasColumnType("boolean"); + + b.Property("ReportColumns") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportKeys") + .IsRequired() + .HasColumnType("text"); + + b.Property("ReportViewName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SubmissionHeaderMapping") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Version") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationFormId"); + + b.ToTable("ApplicationFormVersion", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LinkedApplicationId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationLinks", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InternalStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StatusCode") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("StatusCode") + .IsUnique(); + + b.ToTable("ApplicationStatuses", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Text") + .IsRequired() + .HasMaxLength(250) + .HasColumnType("character varying(250)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.ToTable("ApplicationTags", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FileName") + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("S3ObjectKey") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Time") + .HasColumnType("timestamp without time zone"); + + b.Property("UserId") + .HasColumnType("uuid"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.ToTable("AssessmentAttachments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("ApprovalRecommended") + .HasColumnType("boolean"); + + b.Property("AssessorId") + .HasColumnType("uuid"); + + b.Property("CleanGrowth") + .HasColumnType("integer"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("EconomicImpact") + .HasColumnType("integer"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FinancialAnalysis") + .HasColumnType("integer"); + + b.Property("InclusiveGrowth") + .HasColumnType("integer"); + + b.Property("IsComplete") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Status") + .IsRequired() + .HasMaxLength(50) + .HasColumnType("character varying(50)"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("AssessorId"); + + b.ToTable("Assessments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId"); + + b.HasIndex("CommenterId"); + + b.ToTable("ApplicationComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("Comment") + .IsRequired() + .HasColumnType("text"); + + b.Property("CommenterId") + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("AssessmentId"); + + b.HasIndex("CommenterId"); + + b.ToTable("AssessmentComments", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Identity.Person", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Badge") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FullName") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("OidcDisplayName") + .IsRequired() + .HasColumnType("text"); + + b.Property("OidcSub") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("OidcSub"); + + b.ToTable("Persons", (string)null); + }); + + modelBuilder.Entity("Unity.GrantManager.Intakes.Intake", b => + { + b.Property("Id") + .HasColumnType("uuid"); + + b.Property("Budget") + .HasColumnType("double precision"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EndDate") + .HasColumnType("timestamp without time zone"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IntakeName") + .IsRequired() + .HasMaxLength(255) + .HasColumnType("character varying(255)"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("StartDate") + .HasColumnType("timestamp without time zone"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Intakes", (string)null); + }); + + modelBuilder.Entity("Unity.Notifications.Emails.EmailLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ApplicantId") + .HasColumnType("uuid"); + + b.Property("ApplicationId") + .HasColumnType("uuid"); + + b.Property("AssessmentId") + .HasColumnType("uuid"); + + b.Property("BCC") + .IsRequired() + .HasColumnType("text"); + + b.Property("Body") + .IsRequired() + .HasColumnType("text"); + + b.Property("BodyType") + .IsRequired() + .HasColumnType("text"); + + b.Property("CC") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesMsgId") + .HasColumnType("uuid"); + + b.Property("ChesResponse") + .IsRequired() + .HasColumnType("text"); + + b.Property("ChesStatus") + .IsRequired() + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("FromAddress") + .IsRequired() + .HasColumnType("text"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("Priority") + .IsRequired() + .HasColumnType("text"); + + b.Property("RetryAttempts") + .HasColumnType("integer"); + + b.Property("SendOnDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("SentDateTime") + .HasColumnType("timestamp without time zone"); + + b.Property("Status") + .IsRequired() + .HasColumnType("text"); + + b.Property("Subject") + .IsRequired() + .HasColumnType("text"); + + b.Property("Tag") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("ToAddress") + .IsRequired() + .HasColumnType("text"); + + b.HasKey("Id"); + + b.ToTable("EmailLogs", "Notifications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentConfigurations.PaymentConfiguration", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("MinistryClient") + .HasColumnType("text"); + + b.Property("PaymentIdPrefix") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentThreshold") + .HasColumnType("numeric"); + + b.Property("ProjectNumber") + .HasColumnType("text"); + + b.Property("Responsibility") + .HasColumnType("text"); + + b.Property("ServiceLine") + .HasColumnType("text"); + + b.Property("Stob") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("PaymentConfigurations", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DecisionDate") + .HasColumnType("timestamp without time zone"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PaymentRequestId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.Property("Type") + .HasColumnType("integer"); + + b.HasKey("Id"); + + b.HasIndex("PaymentRequestId"); + + b.ToTable("ExpenseApprovals", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("Amount") + .HasColumnType("numeric"); + + b.Property("BatchName") + .IsRequired() + .HasColumnType("text"); + + b.Property("BatchNumber") + .HasColumnType("numeric"); + + b.Property("CasHttpStatusCode") + .HasColumnType("integer"); + + b.Property("CasResponse") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ContractNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("text"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("InvoiceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("InvoiceStatus") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsRecon") + .HasColumnType("boolean"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("PayeeName") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentDate") + .HasColumnType("text"); + + b.Property("PaymentNumber") + .HasColumnType("text"); + + b.Property("PaymentStatus") + .HasColumnType("text"); + + b.Property("ReferenceNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("RequesterName") + .IsRequired() + .HasColumnType("text"); + + b.Property("SiteId") + .HasColumnType("uuid"); + + b.Property("Status") + .HasColumnType("integer"); + + b.Property("SupplierNumber") + .IsRequired() + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("ReferenceNumber") + .IsUnique(); + + b.HasIndex("SiteId"); + + b.ToTable("PaymentRequests", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("AddressLine1") + .HasColumnType("text"); + + b.Property("AddressLine2") + .HasColumnType("text"); + + b.Property("AddressLine3") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("Country") + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("EFTAdvicePref") + .HasColumnType("text"); + + b.Property("EmailAddress") + .HasColumnType("text"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCas") + .HasColumnType("timestamp without time zone"); + + b.Property("Number") + .IsRequired() + .HasColumnType("text"); + + b.Property("PaymentGroup") + .HasColumnType("integer"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SiteProtected") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("SupplierId") + .HasColumnType("uuid"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("SupplierId"); + + b.ToTable("Sites", "Payments"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uuid"); + + b.Property("BusinessNumber") + .HasColumnType("text"); + + b.Property("City") + .HasColumnType("text"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("character varying(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasColumnType("uuid"); + + b.Property("CorrelationProvider") + .IsRequired() + .HasColumnType("text"); + + b.Property("CreationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uuid") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uuid") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("text") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("boolean") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("timestamp without time zone") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uuid") + .HasColumnName("LastModifierId"); + + b.Property("LastUpdatedInCAS") + .HasColumnType("timestamp without time zone"); + + b.Property("MailingAddress") + .HasColumnType("text"); + + b.Property("Name") + .HasColumnType("text"); + + b.Property("Number") + .HasColumnType("text"); + + b.Property("PostalCode") + .HasColumnType("text"); + + b.Property("ProviderId") + .HasColumnType("text"); + + b.Property("Province") + .HasColumnType("text"); + + b.Property("SIN") + .HasColumnType("text"); + + b.Property("StandardIndustryClassification") + .HasColumnType("text"); + + b.Property("Status") + .HasColumnType("text"); + + b.Property("Subcategory") + .HasColumnType("text"); + + b.Property("SupplierProtected") + .HasColumnType("text"); + + b.Property("TenantId") + .HasColumnType("uuid") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("Suppliers", "Payments"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Instances") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Answer", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Question", "Question") + .WithMany("Answers") + .HasForeignKey("QuestionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", null) + .WithMany("Answers") + .HasForeignKey("ScoresheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Question"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.ScoresheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Scoresheets.Scoresheet", "Scoresheet") + .WithMany("Sections") + .HasForeignKey("ScoresheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Scoresheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.CustomFieldValue", b => + { + b.HasOne("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", null) + .WithMany("Values") + .HasForeignKey("WorksheetInstanceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetLinks.WorksheetLink", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Links") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.CustomField", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.WorksheetSection", "Section") + .WithMany("Fields") + .HasForeignKey("SectionId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Section"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.HasOne("Unity.Flex.Domain.Worksheets.Worksheet", "Worksheet") + .WithMany("Sections") + .HasForeignKey("WorksheetId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Worksheet"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAddress", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany("ApplicantAddresses") + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Applicant"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicantAgent", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithOne("ApplicantAgent") + .HasForeignKey("Unity.GrantManager.Applications.ApplicantAgent", "ApplicationId"); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("OidcSubUser") + .HasPrincipalKey("OidcSub"); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", "Applicant") + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", "ApplicationForm") + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationStatus", "ApplicationStatus") + .WithMany("Applications") + .HasForeignKey("ApplicationStatusId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Owner") + .WithMany() + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.NoAction); + + b.Navigation("Applicant"); + + b.Navigation("ApplicationForm"); + + b.Navigation("ApplicationStatus"); + + b.Navigation("Owner"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAssignment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationAssignments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", "Assignee") + .WithMany() + .HasForeignKey("AssigneeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Application"); + + b.Navigation("Assignee"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationChefsFileAttachment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationContact", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationForm", b => + { + b.HasOne("Unity.GrantManager.Intakes.Intake", null) + .WithMany() + .HasForeignKey("IntakeId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormSubmission", b => + { + b.HasOne("Unity.GrantManager.Applications.Applicant", null) + .WithMany() + .HasForeignKey("ApplicantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationFormVersion", b => + { + b.HasOne("Unity.GrantManager.Applications.ApplicationForm", null) + .WithMany() + .HasForeignKey("ApplicationFormId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationLink", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationTags", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("ApplicationTags") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.AssessmentAttachment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Assessments.Assessment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", "Application") + .WithMany("Assessments") + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("AssessorId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Application"); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.ApplicationComment", b => + { + b.HasOne("Unity.GrantManager.Applications.Application", null) + .WithMany() + .HasForeignKey("ApplicationId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.GrantManager.Comments.AssessmentComment", b => + { + b.HasOne("Unity.GrantManager.Assessments.Assessment", null) + .WithMany() + .HasForeignKey("AssessmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Unity.GrantManager.Identity.Person", null) + .WithMany() + .HasForeignKey("CommenterId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.ExpenseApproval", b => + { + b.HasOne("Unity.Payments.Domain.PaymentRequests.PaymentRequest", "PaymentRequest") + .WithMany("ExpenseApprovals") + .HasForeignKey("PaymentRequestId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PaymentRequest"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Site", "Site") + .WithMany() + .HasForeignKey("SiteId") + .OnDelete(DeleteBehavior.NoAction) + .IsRequired(); + + b.Navigation("Site"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Site", b => + { + b.HasOne("Unity.Payments.Domain.Suppliers.Supplier", "Supplier") + .WithMany("Sites") + .HasForeignKey("SupplierId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Supplier"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.ScoresheetInstances.ScoresheetInstance", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Question", b => + { + b.Navigation("Answers"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.Scoresheet", b => + { + b.Navigation("Instances"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Scoresheets.ScoresheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.WorksheetInstances.WorksheetInstance", b => + { + b.Navigation("Values"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.Worksheet", b => + { + b.Navigation("Links"); + + b.Navigation("Sections"); + }); + + modelBuilder.Entity("Unity.Flex.Domain.Worksheets.WorksheetSection", b => + { + b.Navigation("Fields"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Applicant", b => + { + b.Navigation("ApplicantAddresses"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.Application", b => + { + b.Navigation("ApplicantAgent"); + + b.Navigation("ApplicationAssignments"); + + b.Navigation("ApplicationTags"); + + b.Navigation("Assessments"); + }); + + modelBuilder.Entity("Unity.GrantManager.Applications.ApplicationStatus", b => + { + b.Navigation("Applications"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.PaymentRequests.PaymentRequest", b => + { + b.Navigation("ExpenseApprovals"); + }); + + modelBuilder.Entity("Unity.Payments.Domain.Suppliers.Supplier", b => + { + b.Navigation("Sites"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250115190723_CreateUpdateReportSchemaProcedures.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250115190723_CreateUpdateReportSchemaProcedures.cs new file mode 100644 index 000000000..22203af12 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.EntityFrameworkCore/Migrations/TenantMigrations/20250115190723_CreateUpdateReportSchemaProcedures.cs @@ -0,0 +1,27 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace Unity.GrantManager.Migrations.TenantMigrations +{ + /// + public partial class CreateUpdateReportSchemaProcedures : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + // Create/Update the submission reporting view generator + migrationBuilder.Sql("CREATE OR REPLACE PROCEDURE generate_submissions_view(table_a_id UUID) AS $$\r\nDECLARE\r\n view_name TEXT;\r\n view_columns TEXT;\r\n view_keys TEXT;\r\n column_definitions TEXT;\r\n column_names TEXT[];\r\n key_names TEXT[];\r\n select_clause TEXT;\r\nBEGIN\r\n -- Fetch the name, columns, and keys from Table A\r\n SELECT \"ReportViewName\", \"ReportColumns\", \"ReportKeys\" INTO view_name, view_columns, view_keys\r\n FROM \"ApplicationFormVersion\"\r\n WHERE \"Id\" = table_a_id;\r\n\r\n -- Split the columns and keys into individual names using pipe delimiter\r\n column_names := string_to_array(view_columns, '|');\r\n key_names := string_to_array(view_keys, '|');\r\n\r\n -- Create the column definitions for the view\r\n column_definitions := '';\r\n FOR i IN 1..array_length(column_names, 1) LOOP\r\n column_definitions := column_definitions || format('%I TEXT', column_names[i]);\r\n IF i < array_length(column_names, 1) THEN\r\n column_definitions := column_definitions || ', ';\r\n END IF;\r\n END LOOP;\r\n\r\n -- Create the select clause for the view\r\n select_clause := '';\r\n FOR i IN 1..array_length(key_names, 1) LOOP\r\n IF i > 1 THEN\r\n select_clause := select_clause || ', ';\r\n END IF;\r\n select_clause := select_clause || format(\r\n 'COALESCE((\r\n SELECT value::TEXT\r\n FROM jsonb_each_text(\"ReportData\")\r\n WHERE key = %L\r\n LIMIT 1\r\n ), '''') AS %I',\r\n key_names[i], column_names[i]\r\n );\r\n END LOOP;\r\n\r\n -- Drop the view if it already exists to avoid type conflicts\r\n EXECUTE format('DROP VIEW IF EXISTS %I', view_name);\r\n\r\n -- Create the view query dynamically\r\n EXECUTE format('CREATE VIEW %I AS SELECT \"Id\", \"ApplicationId\", %s FROM (SELECT \"Id\", \"ApplicationId\", \"ReportData\" FROM \"ApplicationFormSubmissions\" WHERE \"ApplicationFormSubmissions\".\"ApplicationFormVersionId\" = %L) AS subquery',\r\n view_name,\r\n select_clause,\r\n table_a_id\r\n );\r\nEND;\r\n$$ LANGUAGE plpgsql;\r\n"); + // Create/Update the worksheet reporting view generator + migrationBuilder.Sql("CREATE OR REPLACE PROCEDURE generate_worksheets_view(table_a_id UUID) AS $$\r\nDECLARE\r\n view_name TEXT;\r\n view_columns TEXT;\r\n view_keys TEXT;\r\n column_definitions TEXT;\r\n column_names TEXT[];\r\n key_names TEXT[];\r\n select_clause TEXT;\r\nBEGIN\r\n -- Fetch the name, columns, and keys from Table A\r\n SELECT \"ReportViewName\", \"ReportColumns\", \"ReportKeys\" INTO view_name, view_columns, view_keys\r\n FROM \"Flex\".\"Worksheets\"\r\n WHERE \"Id\" = table_a_id;\r\n\r\n -- Split the columns and keys into individual names using pipe delimiter\r\n column_names := string_to_array(view_columns, '|');\r\n key_names := string_to_array(view_keys, '|');\r\n\r\n -- Create the column definitions for the view\r\n column_definitions := '';\r\n FOR i IN 1..array_length(column_names, 1) LOOP\r\n column_definitions := column_definitions || format('%I TEXT', column_names[i]);\r\n IF i < array_length(column_names, 1) THEN\r\n column_definitions := column_definitions || ', ';\r\n END IF;\r\n END LOOP;\r\n\r\n -- Create the select clause for the view\r\n select_clause := '';\r\n FOR i IN 1..array_length(key_names, 1) LOOP\r\n IF i > 1 THEN\r\n select_clause := select_clause || ', ';\r\n END IF;\r\n select_clause := select_clause || format(\r\n 'COALESCE((\r\n SELECT value::TEXT\r\n FROM jsonb_each_text(\"ReportData\")\r\n WHERE key = %L\r\n LIMIT 1\r\n ), '''') AS %I',\r\n key_names[i], column_names[i]\r\n );\r\n END LOOP;\r\n\r\n -- Drop the view if it already exists to avoid type conflicts\r\n EXECUTE format('DROP VIEW IF EXISTS %I', view_name);\r\n\r\n -- Create the view query dynamically\r\n EXECUTE format('CREATE VIEW %I AS SELECT \"Id\", \"CorrelationId\", \"CorrelationProvider\", %s FROM (SELECT \"Id\", \"CorrelationId\", \"CorrelationProvider\", \"ReportData\" FROM \"Flex\".\"WorksheetInstances\" WHERE \"Flex\".\"WorksheetInstances\".\"WorksheetId\" = %L) AS subquery',\r\n view_name,\r\n select_clause,\r\n table_a_id\r\n );\r\nEND;\r\n$$ LANGUAGE plpgsql;\r\n"); + // Create/Update the scoresheet reporting view generator + migrationBuilder.Sql("CREATE OR REPLACE PROCEDURE generate_scoresheets_view(table_a_id UUID) AS $$\r\nDECLARE\r\n view_name TEXT;\r\n view_columns TEXT;\r\n view_keys TEXT;\r\n column_definitions TEXT;\r\n column_names TEXT[];\r\n key_names TEXT[];\r\n select_clause TEXT;\r\nBEGIN\r\n -- Fetch the name, columns, and keys from Table A\r\n SELECT \"ReportViewName\", \"ReportColumns\", \"ReportKeys\" INTO view_name, view_columns, view_keys\r\n FROM \"Flex\".\"Scoresheets\"\r\n WHERE \"Id\" = table_a_id;\r\n\r\n -- Split the columns and keys into individual names using pipe delimiter\r\n column_names := string_to_array(view_columns, '|');\r\n key_names := string_to_array(view_keys, '|');\r\n\r\n -- Create the column definitions for the view\r\n column_definitions := '';\r\n FOR i IN 1..array_length(column_names, 1) LOOP\r\n column_definitions := column_definitions || format('%I TEXT', column_names[i]);\r\n IF i < array_length(column_names, 1) THEN\r\n column_definitions := column_definitions || ', ';\r\n END IF;\r\n END LOOP;\r\n\r\n -- Create the select clause for the view\r\n select_clause := '';\r\n FOR i IN 1..array_length(key_names, 1) LOOP\r\n IF i > 1 THEN\r\n select_clause := select_clause || ', ';\r\n END IF;\r\n select_clause := select_clause || format(\r\n 'COALESCE((\r\n SELECT value::TEXT\r\n FROM jsonb_each_text(\"ReportData\")\r\n WHERE key = %L\r\n LIMIT 1\r\n ), '''') AS %I',\r\n key_names[i], column_names[i]\r\n );\r\n END LOOP;\r\n\r\n -- Drop the view if it already exists to avoid type conflicts\r\n EXECUTE format('DROP VIEW IF EXISTS %I', view_name);\r\n\r\n -- Create the view query dynamically\r\n EXECUTE format('CREATE VIEW %I AS SELECT \"Id\", \"CorrelationId\", \"CorrelationProvider\", %s FROM (SELECT \"Id\", \"CorrelationId\", \"CorrelationProvider\", \"ReportData\" FROM \"Flex\".\"ScoresheetInstances\" WHERE \"Flex\".\"ScoresheetInstances\".\"ScoresheetId\" = %L) AS subquery',\r\n view_name,\r\n select_clause,\r\n table_a_id\r\n );\r\nEND;\r\n$$ LANGUAGE plpgsql;\r\n"); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + + } + } +} From d6d5909ed11824883546803ce911b4c2c4700c64 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Thu, 16 Jan 2025 15:30:54 -0800 Subject: [PATCH 16/28] AB#26819 add endpoint for retroactive data population and bugfixes --- .../IWorksheetReportingDataGeneratorAppService.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IWorksheetReportingDataGeneratorAppService.cs diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IWorksheetReportingDataGeneratorAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IWorksheetReportingDataGeneratorAppService.cs new file mode 100644 index 000000000..2a39de897 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IWorksheetReportingDataGeneratorAppService.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; +using System; +using Volo.Abp.Application.Services; + +namespace Unity.Flex.Reporting +{ + public interface IWorksheetReportingDataGeneratorAppService : IApplicationService + { + Task Generate(Guid worksheetInstanceId); + } +} From 8b122abf86e94234364e7964c90fb6e0430f2b19 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Fri, 17 Jan 2025 09:11:45 -0800 Subject: [PATCH 17/28] AB#26819 endpoints for report data population and refactor --- ...resheetReportingDataGeneratorAppService.cs | 11 +++++++++ ...sheetReportingFieldsGeneratorAppService.cs | 11 +++++++++ ...sheetReportingFieldsGeneratorAppService.cs | 11 +++++++++ .../Domain/Services/ScoresheetsManager.cs | 2 +- .../Domain/Services/WorksheetsManager.cs | 6 ++--- .../ICustomFieldValueRepository.cs | 3 +++ .../CustomFieldValueRepository.cs | 13 +++++++++- .../CheckboxGroupReportDataGenerator.cs | 5 ++-- .../DataGridReportDataGenerator.cs | 10 +++++--- .../DefaultReportDataGenerator.cs | 11 +++++---- .../ReportingDataGenerator.cs | 8 +++---- .../IReportingDataGeneratorService.cs | 2 +- ...esheetsReportingDataGeneratorAppService.cs | 21 ++++++++++++++++ ...coresheetsReportingDataGeneratorService.cs | 4 ++-- ...ksheetsReportingDataGeneratorAppService.cs | 21 ++++++++++++++++ ...WorksheetsReportingDataGeneratorFactory.cs | 6 ++--- ...WorksheetsReportingDataGeneratorService.cs | 12 +++++----- .../CustomFieldsReportingGenerator.cs | 22 +++++++++++++++-- ...sheetReportingFieldsGeneratorAppService.cs | 24 +++++++++++++++++++ ...sheetReportingFieldsGeneratorAppService.cs | 24 +++++++++++++++++++ .../WorksheetsDynamicViewGeneratorHandler.cs | 2 +- .../Worksheets/CustomFieldValueAppService.cs | 6 ++++- ...rsionReportingFieldsGeneratorAppService.cs | 11 +++++++++ ...issionReportingDataGeneratorAppService.cs} | 4 ++-- .../DataGenerators/IReportingDataGenerator.cs | 6 +++-- ...issionReportingDataGeneratorAppService.cs} | 6 ++--- ...rsionReportingFieldsGeneratorAppService.cs | 19 +++++++++++++++ .../IReportingFieldsGeneratorService.cs | 3 ++- 28 files changed, 242 insertions(+), 42 deletions(-) create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IScoresheetReportingDataGeneratorAppService.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IScoresheetReportingFieldsGeneratorAppService.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IWorksheetReportingFieldsGeneratorAppService.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorAppService.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorAppService.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorAppService.cs create mode 100644 applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorAppService.cs create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/IFormVersionReportingFieldsGeneratorAppService.cs rename applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/{IReportingDataGeneratorAppService.cs => ISubmissionReportingDataGeneratorAppService.cs} (50%) rename applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/{ReportingDataGeneratorAppService.cs => SubmissionReportingDataGeneratorAppService.cs} (87%) create mode 100644 applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/FormVersionReportingFieldsGeneratorAppService.cs diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IScoresheetReportingDataGeneratorAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IScoresheetReportingDataGeneratorAppService.cs new file mode 100644 index 000000000..00ff803bf --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IScoresheetReportingDataGeneratorAppService.cs @@ -0,0 +1,11 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace Unity.Flex.Reporting +{ + public interface IScoresheetReportingDataGeneratorAppService : IApplicationService + { + Task Generate(Guid scoresheetInstanceId); + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IScoresheetReportingFieldsGeneratorAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IScoresheetReportingFieldsGeneratorAppService.cs new file mode 100644 index 000000000..03d3c693c --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IScoresheetReportingFieldsGeneratorAppService.cs @@ -0,0 +1,11 @@ +using System; +using System.Threading.Tasks; +using Volo.Abp.Application.Services; + +namespace Unity.Flex.Reporting +{ + public interface IScoresheetReportingFieldsGeneratorAppService : IApplicationService + { + Task Generate(Guid scoresheetId); + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IWorksheetReportingFieldsGeneratorAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IWorksheetReportingFieldsGeneratorAppService.cs new file mode 100644 index 000000000..287eb04eb --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/Reporting/IWorksheetReportingFieldsGeneratorAppService.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; +using System; +using Volo.Abp.Application.Services; + +namespace Unity.Flex.Reporting +{ + public interface IWorksheetReportingFieldsGeneratorAppService : IApplicationService + { + Task Generate(Guid worksheetId); + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs index 174b0aaac..10b82711e 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs @@ -75,7 +75,7 @@ public async Task PersistScoresheetData(PersistScoresheetSectionInstanceEto even await scoresheetInstanceRepository.UpdateAsync(instance); } - instance.SetReportingData(reportingDataGeneratorService.Generate(scoresheet, instance)); + reportingDataGeneratorService.GenerateAndSet(scoresheet, instance); } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs index 032d571c5..acfc09352 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs @@ -19,7 +19,7 @@ namespace Unity.Flex.Domain.Services public class WorksheetsManager(IWorksheetInstanceRepository worksheetInstanceRepository, IWorksheetRepository worksheetRepository, IWorksheetLinkRepository worksheetLinkRepository, - IReportingDataGeneratorService reportingService) : DomainService + IReportingDataGeneratorService reportingService) : DomainService { public async Task PersistWorksheetData(PersistWorksheetIntanceValuesEto eventData) { @@ -69,7 +69,7 @@ public async Task UpdateWorksheetInstanceValueAsync(WorksheetInstance instance) // Update and set the instance value for the worksheet - high level values serialized var worksheet = await worksheetRepository.GetAsync(instance.WorksheetId, true); var fieldDefinitions = worksheet.Sections.SelectMany(s => s.Fields).ToList(); - var instanceCurrentValue = new WorksheetInstanceValue(); + var instanceCurrentValue = new WorksheetInstanceValue(); foreach (var field in instance.Values) { @@ -81,7 +81,7 @@ public async Task UpdateWorksheetInstanceValueAsync(WorksheetInstance instance) instance.SetValue(JsonSerializer.Serialize(instanceCurrentValue)); - instance.SetReportingData(reportingService.Generate(worksheet, instanceCurrentValue)); + reportingService.GenerateAndSet(worksheet, instance); } private void UpdateExistingWorksheetInstance(WorksheetInstance worksheetInstance, Worksheet? worksheet, List fields) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetInstances/ICustomFieldValueRepository.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetInstances/ICustomFieldValueRepository.cs index f0f2c99af..419845e0d 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetInstances/ICustomFieldValueRepository.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetInstances/ICustomFieldValueRepository.cs @@ -1,9 +1,12 @@ using System; +using System.Collections.Generic; +using System.Threading.Tasks; using Volo.Abp.Domain.Repositories; namespace Unity.Flex.Domain.WorksheetInstances { public interface ICustomFieldValueRepository : IBasicRepository { + Task> GetListByWorksheetInstanceAsync(Guid worksheetInstanceId); } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/EntityFrameworkCore/Repositories/CustomFieldValueRepository.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/EntityFrameworkCore/Repositories/CustomFieldValueRepository.cs index 7de03b8f9..3740b26bd 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/EntityFrameworkCore/Repositories/CustomFieldValueRepository.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/EntityFrameworkCore/Repositories/CustomFieldValueRepository.cs @@ -1,4 +1,8 @@ -using System; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; using Unity.Flex.Domain.WorksheetInstances; using Volo.Abp.Domain.Repositories.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; @@ -7,5 +11,12 @@ namespace Unity.Flex.EntityFrameworkCore.Repositories { public class CustomFieldValueRepository(IDbContextProvider dbContextProvider) : EfCoreRepository(dbContextProvider), ICustomFieldValueRepository { + public async Task> GetListByWorksheetInstanceAsync(Guid worksheetInstanceId) + { + var dbSet = await GetDbSetAsync(); + return await dbSet.Where(x => + x.WorksheetInstanceId == worksheetInstanceId) + .ToListAsync(); + } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs index 25b2fb767..02cb6ae27 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs @@ -1,11 +1,12 @@ using System.Collections.Generic; using System.Text.Json; +using Unity.Flex.Domain.WorksheetInstances; using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Values; namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators { - public class CheckboxGroupReportDataGenerator(CustomField customField, FieldInstanceValue value) + public class CheckboxGroupReportDataGenerator(CustomField customField, CustomFieldValue value) : ReportingDataGenerator(customField, value), IReportingDataGenerator { /// @@ -16,7 +17,7 @@ public Dictionary> Generate() { var values = new Dictionary>(); - var checkboxValue = JsonSerializer.Deserialize(value.Value); + var checkboxValue = JsonSerializer.Deserialize(value.CurrentValue); foreach (var option in checkboxValue ?? []) { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs index a8d6a5f30..88890a032 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs @@ -1,12 +1,14 @@ -using System.Collections.Generic; +using Newtonsoft.Json.Linq; +using System.Collections.Generic; using System.Linq; using System.Text.Json; +using Unity.Flex.Domain.WorksheetInstances; using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets.Values; namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators { - public class DataGridReportDataGenerator(CustomField customField, FieldInstanceValue value) + public class DataGridReportDataGenerator(CustomField customField, CustomFieldValue value) : ReportingDataGenerator(customField, value), IReportingDataGenerator { /// @@ -16,7 +18,9 @@ public class DataGridReportDataGenerator(CustomField customField, FieldInstanceV public Dictionary> Generate() { var values = new Dictionary>(); - var rowsValue = JsonSerializer.Deserialize(value.Value); + JObject dataValue = JObject.Parse(value.CurrentValue); + + var rowsValue = JsonSerializer.Deserialize(dataValue["value"]?.ToString() ?? string.Empty); if (rowsValue == null) return values; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs index dc39c1410..fb204ff94 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DefaultReportDataGenerator.cs @@ -1,10 +1,11 @@ -using System.Collections.Generic; +using Newtonsoft.Json.Linq; +using System.Collections.Generic; +using Unity.Flex.Domain.WorksheetInstances; using Unity.Flex.Domain.Worksheets; -using Unity.Flex.Worksheets.Values; namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators { - public class DefaultReportDataGenerator(CustomField customField, FieldInstanceValue value) + public class DefaultReportDataGenerator(CustomField customField, CustomFieldValue value) : ReportingDataGenerator(customField, value), IReportingDataGenerator { /// @@ -13,9 +14,11 @@ public class DefaultReportDataGenerator(CustomField customField, FieldInstanceVa /// Dictionary with keys and matched values for reporting data public Dictionary> Generate() { + JObject dataValue = JObject.Parse(value.CurrentValue); + return new Dictionary> { - { value.Key, new List() { value.Value } } + { customField.Key, new List() { dataValue["value"]?.ToString() ?? string.Empty } } }; } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGenerator.cs index 03d952681..f1aa6281c 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/ReportingDataGenerator.cs @@ -1,5 +1,5 @@ -using Unity.Flex.Domain.Worksheets; -using Unity.Flex.Worksheets.Values; +using Unity.Flex.Domain.WorksheetInstances; +using Unity.Flex.Domain.Worksheets; namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators { @@ -9,9 +9,9 @@ namespace Unity.Flex.Reporting.DataGenerators.CustomFieldValueGenerators public class ReportingDataGenerator { protected CustomField customField; - protected FieldInstanceValue value; + protected CustomFieldValue value; - protected ReportingDataGenerator(CustomField customField, FieldInstanceValue value) + protected ReportingDataGenerator(CustomField customField, CustomFieldValue value) { this.customField = customField; this.value = value; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGeneratorService.cs index 17f2a6842..9d4ecdfd3 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/IReportingDataGeneratorService.cs @@ -2,6 +2,6 @@ { public interface IReportingDataGeneratorService where T : IReportableEntity { - string Generate(T sheet, U instance); + void GenerateAndSet(T sheet, U instance); } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorAppService.cs new file mode 100644 index 000000000..ed249e5d4 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorAppService.cs @@ -0,0 +1,21 @@ +using System; +using System.Threading.Tasks; +using Unity.Flex.Domain.ScoresheetInstances; +using Unity.Flex.Domain.Scoresheets; +using Volo.Abp.Application.Services; + +namespace Unity.Flex.Reporting.DataGenerators +{ + public class ScoresheetsReportingDataGeneratorAppService(IReportingDataGeneratorService reportingDataGeneratorService, + IScoresheetInstanceRepository scoresheetInstanceRepository, + IScoresheetRepository scoresheetRepository) + : ApplicationService, IScoresheetReportingDataGeneratorAppService + { + public async Task Generate(Guid scoresheetInstanceId) + { + var scoresheetInstance = await scoresheetInstanceRepository.GetAsync(scoresheetInstanceId, true); + var scoresheet = await scoresheetRepository.GetAsync(scoresheetInstance.ScoresheetId); + reportingDataGeneratorService.GenerateAndSet(scoresheet, scoresheetInstance); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs index 34147dc83..8994404cc 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs @@ -12,7 +12,7 @@ namespace Unity.Flex.Reporting.DataGenerators public class ScoresheetsReportingDataGeneratorService : ApplicationService, IReportingDataGeneratorService { - public string Generate(Scoresheet scoresheet, ScoresheetInstance instanceValue) + public void GenerateAndSet(Scoresheet scoresheet, ScoresheetInstance instanceValue) { var reportData = new Dictionary>(); @@ -43,7 +43,7 @@ where reportData.ContainsKey(keyValue.Key) } } - return JsonSerializer.Serialize(reportData); + instanceValue.SetReportingData(JsonSerializer.Serialize(reportData)); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorAppService.cs new file mode 100644 index 000000000..a1e7d3c40 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorAppService.cs @@ -0,0 +1,21 @@ +using System; +using System.Threading.Tasks; +using Unity.Flex.Domain.WorksheetInstances; +using Unity.Flex.Domain.Worksheets; +using Volo.Abp.Application.Services; + +namespace Unity.Flex.Reporting.DataGenerators +{ + public class WorksheetsReportingDataGeneratorAppService(IReportingDataGeneratorService reportingDataGeneratorService, + IWorksheetInstanceRepository worksheetInstanceRepository, + IWorksheetRepository worksheetRepository) + : ApplicationService, IWorksheetReportingDataGeneratorAppService + { + public async Task Generate(Guid worksheetInstanceId) + { + var worksheetInstance = await worksheetInstanceRepository.GetAsync(worksheetInstanceId, true); + var worksheet = await worksheetRepository.GetAsync(worksheetInstance.WorksheetId); + reportingDataGeneratorService.GenerateAndSet(worksheet, worksheetInstance); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorFactory.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorFactory.cs index 589273b3d..26c105538 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorFactory.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorFactory.cs @@ -1,6 +1,6 @@ -using Unity.Flex.Domain.Worksheets; +using Unity.Flex.Domain.WorksheetInstances; +using Unity.Flex.Domain.Worksheets; using Unity.Flex.Worksheets; -using Unity.Flex.Worksheets.Values; namespace Unity.Flex.Reporting.DataGenerators { @@ -12,7 +12,7 @@ public static class WorksheetsReportingDataGeneratorFactory /// /// /// Relevant IReportingDataGenerator that can generate the ReportingData field relevant to the type - public static IReportingDataGenerator Create(CustomField customField, FieldInstanceValue value) + public static IReportingDataGenerator Create(CustomField customField, CustomFieldValue value) { return customField.Type switch { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs index 69017b9e6..b6fe45963 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs @@ -1,8 +1,8 @@ using System.Collections.Generic; using System.Linq; using System.Text.Json; +using Unity.Flex.Domain.WorksheetInstances; using Unity.Flex.Domain.Worksheets; -using Unity.Flex.Worksheets.Values; using Volo.Abp; using Volo.Abp.Application.Services; @@ -10,7 +10,7 @@ namespace Unity.Flex.Reporting.DataGenerators { [RemoteService(false)] public class WorksheetsReportingDataGeneratorService : ApplicationService, - IReportingDataGeneratorService + IReportingDataGeneratorService { /// /// Generates the data for the Worksheet ReportData field @@ -18,10 +18,10 @@ public class WorksheetsReportingDataGeneratorService : ApplicationService, /// /// /// Serialized Key/Values Pair of values for ReportData - public string Generate(Worksheet worksheet, WorksheetInstanceValue instanceValue) + public void GenerateAndSet(Worksheet worksheet, WorksheetInstance instanceValue) { var reportData = new Dictionary>(); - var reportingKeys = worksheet.ReportColumns.Split(ReportingConsts.ReportFieldDelimiter); + var reportingKeys = worksheet.ReportKeys.Split(ReportingConsts.ReportFieldDelimiter); foreach (var reportKey in reportingKeys) { @@ -32,7 +32,7 @@ public string Generate(Worksheet worksheet, WorksheetInstanceValue instanceValue foreach (var value in instanceValue.Values) { - var definition = definitions.Find(s => s.Key == value.Key); + var definition = definitions.Find(s => s.Id == value.CustomFieldId); if (definition != null) { var keyValues = WorksheetsReportingDataGeneratorFactory @@ -48,7 +48,7 @@ where reportData.ContainsKey(keyValue.Key) } } - return JsonSerializer.Serialize(reportData); + instanceValue.SetReportingData(JsonSerializer.Serialize(reportData)); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs index 11462d278..d56d2fdf8 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs @@ -1,4 +1,6 @@ -using System.Text; +using System; +using System.Linq; +using System.Text; using Unity.Flex.Domain.Worksheets; namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators @@ -25,7 +27,23 @@ protected static (string keys, string columns) TrimAndCreateKeysAndColumns(Strin keysString.TrimEndDelimeter(); columnsString.TrimEndDelimeter(); - return (keysString.ToString(), SanitizeColumnName(columnsString.ToString())); + return (keysString.ToString(), SanitizeColumnsString(columnsString)); + } + + private static string SanitizeColumnsString(StringBuilder columnsString) + { + var columnsToFormat = columnsString + .ToString() + .Split(ReportingConsts.ReportFieldDelimiter); + + // Iterate over the values and update each value + for (int i = 0; i < columnsToFormat.Length; i++) + { + // Example update: append "_updated" to each value + columnsToFormat[i] = SanitizeColumnName(columnsToFormat[i]); + } + + return string.Join(ReportingConsts.ReportFieldDelimiter, columnsToFormat); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorAppService.cs new file mode 100644 index 000000000..6957b2ddf --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/ScoresheetReportingFieldsGeneratorAppService.cs @@ -0,0 +1,24 @@ +using Microsoft.AspNetCore.Authorization; +using System; +using System.Threading.Tasks; +using Unity.Flex.Domain.Scoresheets; +using Volo.Abp.Application.Services; + +namespace Unity.Flex.Reporting.FieldGenerators +{ + [Authorize] + public class ScoresheetReportingFieldsGeneratorAppService(IReportingFieldsGeneratorService reportingFieldsGeneratorService, + IScoresheetRepository scoresheetRepository) : ApplicationService, IScoresheetReportingFieldsGeneratorAppService + { + /// + /// Generate / Update a scoresheets Reporting Fields Remotely + /// + /// + /// + public async Task Generate(Guid scoresheetId) + { + var scoresheet = await scoresheetRepository.GetAsync(scoresheetId, true); + reportingFieldsGeneratorService.GenerateAndSet(scoresheet); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorAppService.cs new file mode 100644 index 000000000..c2a92c7f8 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/WorksheetReportingFieldsGeneratorAppService.cs @@ -0,0 +1,24 @@ +using Microsoft.AspNetCore.Authorization; +using System; +using System.Threading.Tasks; +using Unity.Flex.Domain.Worksheets; +using Volo.Abp.Application.Services; + +namespace Unity.Flex.Reporting.FieldGenerators +{ + [Authorize] + public class WorksheetReportingFieldsGeneratorAppService(IReportingFieldsGeneratorService reportingFieldsGeneratorService, + IWorksheetRepository worksheetRepository) : ApplicationService, IWorksheetReportingFieldsGeneratorAppService + { + /// + /// Generate / Update a worksheets Reporting Fields Remotely + /// + /// + /// + public async Task Generate(Guid worksheetId) + { + var worksheet = await worksheetRepository.GetAsync(worksheetId, true); + reportingFieldsGeneratorService.GenerateAndSet(worksheet); + } + } +} diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs index 75702d38d..92ae55647 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/WorksheetsDynamicViewGeneratorHandler.cs @@ -33,7 +33,7 @@ public async Task HandleEventAsync(WorksheetsDynamicViewGeneratorEto viewGenerat var worksheet = await worksheetRepository.GetAsync(viewGenerationEvent.WorksheetId); if (worksheet != null) - { + { var dbContext = await worksheetRepository.GetDbContextAsync(); FormattableString sql = $@"CALL generate_worksheets_view({viewGenerationEvent.WorksheetId});"; await dbContext.Database.ExecuteSqlAsync(sql); diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/CustomFieldValueAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/CustomFieldValueAppService.cs index 13eb01bbb..c4bb4261d 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/CustomFieldValueAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/CustomFieldValueAppService.cs @@ -33,7 +33,11 @@ public async Task ExplicitAddAsync(CustomFieldValueDto value) [RemoteService(false)] public async Task SyncWorksheetInstanceValueAsync(Guid worksheetInstanceId) { - var worksheetInstance = await worksheetInstanceRepository.GetAsync(worksheetInstanceId); + var worksheetInstance = await worksheetInstanceRepository.GetAsync(worksheetInstanceId, true); + + // There may be a bug somewhere with ABP or EF, this magic line of code get the models to refresh and attach correctly to the aggregate + _ = await customFieldValueRepository.GetListByWorksheetInstanceAsync(worksheetInstanceId); + await worksheetsManager.UpdateWorksheetInstanceValueAsync(worksheetInstance); } } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/IFormVersionReportingFieldsGeneratorAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/IFormVersionReportingFieldsGeneratorAppService.cs new file mode 100644 index 000000000..58f715532 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/IFormVersionReportingFieldsGeneratorAppService.cs @@ -0,0 +1,11 @@ +using System.Threading.Tasks; +using System; +using Volo.Abp.Application.Services; + +namespace Unity.GrantManager.Reporting +{ + public interface IFormVersionReportingFieldsGeneratorAppService : IApplicationService + { + Task Generate(Guid formVersionId); + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/IReportingDataGeneratorAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/ISubmissionReportingDataGeneratorAppService.cs similarity index 50% rename from applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/IReportingDataGeneratorAppService.cs rename to applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/ISubmissionReportingDataGeneratorAppService.cs index 7050ed45b..c68da2f37 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/IReportingDataGeneratorAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/Reporting/ISubmissionReportingDataGeneratorAppService.cs @@ -4,8 +4,8 @@ namespace Unity.GrantManager.Reporting { - public interface IReportingDataGeneratorAppService : IApplicationService + public interface ISubmissionReportingDataGeneratorAppService : IApplicationService { - Task GenerateReportData(Guid submissionId); + Task Generate(Guid submissionId); } } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/IReportingDataGenerator.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/IReportingDataGenerator.cs index 6beea9436..140999ed0 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/IReportingDataGenerator.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/IReportingDataGenerator.cs @@ -1,6 +1,8 @@ -namespace Unity.GrantManager.Reporting.DataGenerators +using Volo.Abp.Application.Services; + +namespace Unity.GrantManager.Reporting.DataGenerators { - public interface IReportingDataGenerator + public interface IReportingDataGenerator : IApplicationService { string? Generate(dynamic formSubmission, string? reportKeys); } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGeneratorAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs similarity index 87% rename from applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGeneratorAppService.cs rename to applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs index e3db84be9..6707a4b96 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGeneratorAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs @@ -9,11 +9,11 @@ namespace Unity.GrantManager.Reporting.DataGenerators { [Authorize] - public class ReportingDataGeneratorAppService(IReportingDataGenerator reportingDataGenerator, + public class SubmissionReportingDataGeneratorAppService(IReportingDataGenerator reportingDataGenerator, IApplicationFormSubmissionRepository applicationFormSubmissionRepository, - IApplicationFormVersionRepository applicationFormVersionRepository) : ApplicationService, IReportingDataGeneratorAppService + IApplicationFormVersionRepository applicationFormVersionRepository) : ApplicationService, ISubmissionReportingDataGeneratorAppService { - public async Task GenerateReportData(Guid submissionId) + public async Task Generate(Guid submissionId) { var submission = await applicationFormSubmissionRepository.GetAsync(submissionId); Guid applicationFormVersionId; diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/FormVersionReportingFieldsGeneratorAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/FormVersionReportingFieldsGeneratorAppService.cs new file mode 100644 index 000000000..036eee451 --- /dev/null +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/FormVersionReportingFieldsGeneratorAppService.cs @@ -0,0 +1,19 @@ +using Microsoft.AspNetCore.Authorization; +using System; +using System.Threading.Tasks; +using Unity.GrantManager.Applications; +using Volo.Abp.Application.Services; + +namespace Unity.GrantManager.Reporting.FieldGenerators +{ + [Authorize] + public class FormVersionReportingFieldsGeneratorAppService(IReportingFieldsGeneratorService reportingFieldsGeneratorService, + IApplicationFormVersionRepository applicationFormVersionRepository) : ApplicationService, IFormVersionReportingFieldsGeneratorAppService + { + public async Task Generate(Guid formVersionId) + { + var applicationFormVersion = await applicationFormVersionRepository.GetAsync(formVersionId); + await reportingFieldsGeneratorService.GenerateAndSetAsync(applicationFormVersion); + } + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs index 847edb628..a113df195 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/FieldGenerators/IReportingFieldsGeneratorService.cs @@ -1,9 +1,10 @@ using System.Threading.Tasks; using Unity.GrantManager.Applications; +using Volo.Abp.Application.Services; namespace Unity.GrantManager.Reporting.FieldGenerators { - public interface IReportingFieldsGeneratorService + public interface IReportingFieldsGeneratorService : IApplicationService { Task GenerateAndSetAsync(ApplicationFormVersion applicationFormVersion); } From 4c4164336978362f49af1950deddd67ab632eb90 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Fri, 17 Jan 2025 13:14:46 -0800 Subject: [PATCH 18/28] AB#26819 fix datagrid first row reportdata --- .../CreateWorksheetInstanceDto.cs | 1 + .../CustomFieldValueAppService.cs | 2 +- .../WorksheetInstances/WorksheetInstance.cs | 4 ++- .../Domain/WorksheetLinks/WorksheetLink.cs | 2 ++ .../Worksheets/WorksheetInstanceAppService.cs | 3 +- .../DataGrid/DataGridWriteService.cs | 34 ++++++++++++++++--- 6 files changed, 39 insertions(+), 7 deletions(-) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/WorksheetInstances/CreateWorksheetInstanceDto.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/WorksheetInstances/CreateWorksheetInstanceDto.cs index e8d8b7d58..7258a75a7 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/WorksheetInstances/CreateWorksheetInstanceDto.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/WorksheetInstances/CreateWorksheetInstanceDto.cs @@ -12,5 +12,6 @@ public class CreateWorksheetInstanceDto public string SheetCorrelationProvider { get; set; } = string.Empty; public string CorrelationAnchor { get; set; } = string.Empty; public string? CurrentValue { get; set; } + public string ReportData { get; set; } = string.Empty; } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/WorksheetInstances/CustomFieldValueAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/WorksheetInstances/CustomFieldValueAppService.cs index 4e4aa4e5d..bc6d0eb7c 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/WorksheetInstances/CustomFieldValueAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application.Contracts/WorksheetInstances/CustomFieldValueAppService.cs @@ -16,6 +16,6 @@ public interface ICustomFieldValueAppService : IApplicationService Task ExplicitAddAsync(CustomFieldValueDto value); [RemoteService(false)] - Task SyncWorksheetInstanceValueAsync(Guid worksheetInstanceId); + Task SyncWorksheetInstanceValueAsync(Guid worksheetInstanceId); } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetInstances/WorksheetInstance.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetInstances/WorksheetInstance.cs index 92142b201..f9b819aee 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetInstances/WorksheetInstance.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetInstances/WorksheetInstance.cs @@ -41,7 +41,8 @@ public WorksheetInstance(Guid id, string correlationProvider, Guid worksheetCorrelationId, string worksheetCorrelationProvider, - string correlationAnchor) + string correlationAnchor, + string? reportData = null) { Id = id; CorrelationId = correlationId; @@ -50,6 +51,7 @@ public WorksheetInstance(Guid id, WorksheetCorrelationProvider = worksheetCorrelationProvider; UiAnchor = correlationAnchor; WorksheetId = worksheetId; + ReportData = reportData ?? string.Empty; } public WorksheetInstance AddValue(Guid customFieldId, string currentValue) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetLinks/WorksheetLink.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetLinks/WorksheetLink.cs index 268f2ca5a..096b06dd4 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetLinks/WorksheetLink.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/WorksheetLinks/WorksheetLink.cs @@ -1,4 +1,5 @@ using System; +using System.Text.Json.Serialization; using Unity.Flex.Domain.Worksheets; using Unity.Modules.Shared.Correlation; using Volo.Abp.Domain.Entities.Auditing; @@ -14,6 +15,7 @@ public class WorksheetLink : AuditedAggregateRoot, IMultiTenant, ICorrelat public string CorrelationProvider { get; private set; } = string.Empty; public string UiAnchor { get; private set; } = string.Empty; + [JsonIgnore] public virtual Worksheet Worksheet { set => _worksheet = value; diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetInstanceAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetInstanceAppService.cs index aff9cbfc7..a7d81d6b8 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetInstanceAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetInstanceAppService.cs @@ -3,6 +3,7 @@ using Microsoft.AspNetCore.Authorization; using Unity.Flex.Domain.WorksheetInstances; using Unity.Flex.Domain.Services; +using System.Xml; namespace Unity.Flex.WorksheetInstances { @@ -19,7 +20,7 @@ public virtual async Task GetByCorrelationAnchorAsync(Guid public virtual async Task CreateAsync(CreateWorksheetInstanceDto dto) { - var newWorksheet = new WorksheetInstance(Guid.NewGuid(), dto.WorksheetId, dto.CorrelationId, dto.CorrelationProvider, dto.SheetCorrelationId, dto.SheetCorrelationProvider, dto.CorrelationAnchor); + var newWorksheet = new WorksheetInstance(Guid.NewGuid(), dto.WorksheetId, dto.CorrelationId, dto.CorrelationProvider, dto.SheetCorrelationId, dto.SheetCorrelationProvider, dto.CorrelationAnchor, dto.ReportData); if (!string.IsNullOrEmpty(dto.CurrentValue)) { newWorksheet.SetValue(dto.CurrentValue); } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Pages/Components/DataGrid/DataGridWriteService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Pages/Components/DataGrid/DataGridWriteService.cs index f1543ba8f..e244649d7 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Pages/Components/DataGrid/DataGridWriteService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Web/Pages/Components/DataGrid/DataGridWriteService.cs @@ -1,5 +1,7 @@ -using System; +using Newtonsoft.Json.Linq; +using System; using System.Collections.Generic; +using System.Linq; using System.Text.Json; using System.Threading.Tasks; using Unity.Flex.Web.Views.Shared.Components.DataGridWidget; @@ -50,7 +52,7 @@ private async Task ValidateWorksheetInstanceId(RowInputData rowInputData) rowInputData.WorksheetInstanceId = worksheetInstance.Id; } } - + return rowInputData.WorksheetInstanceId; } @@ -137,7 +139,8 @@ private async Task CreateFirstRowWithWorksheetInstanceAsyn CorrelationId = rowInputData.ApplicationId, SheetCorrelationId = rowInputData.FormVersionId, SheetCorrelationProvider = CorrelationConsts.FormVersion, - CurrentValue = await CreateExplicitWorksheetInstanceValueAsync(rowInputData.FieldId, dataGridValue) + CurrentValue = await CreateExplicitWorksheetInstanceValueAsync(rowInputData.FieldId, dataGridValue), + ReportData = await GenerateReportDataForNewRowAsync(rowInputData.FieldId, dataGridValue) }); var newDataRow = new CustomFieldValueDto() @@ -145,7 +148,7 @@ private async Task CreateFirstRowWithWorksheetInstanceAsyn CurrentValue = dataGridValue, CustomFieldId = rowInputData.FieldId, Id = Guid.NewGuid(), - WorksheetInstanceId = worksheetInstance.Id, + WorksheetInstanceId = worksheetInstance.Id, }; await customFieldValueAppService.ExplicitAddAsync(newDataRow); @@ -161,6 +164,29 @@ private async Task CreateFirstRowWithWorksheetInstanceAsyn }; } + private async Task GenerateReportDataForNewRowAsync(Guid customFieldId, string dataGridValue) + { + // Retrieve field + var field = await customFieldAppService.GetAsync(customFieldId); + + // Parse the input data and deserialize the "value" property + JObject dataValue = JObject.Parse(dataGridValue); + var rowsValue = JsonSerializer.Deserialize(dataValue["value"]?.ToString() ?? string.Empty); + + if (rowsValue == null) return "{}"; + + // Create a dictionary to store the resulting values + var values = rowsValue.Rows + .SelectMany(row => row.Cells, (row, cell) => new { row, cell }) + .ToDictionary( + x => $"{field.Key}-{x.cell.Key}", + x => new List { x.cell.Value } + ); + + // Serialize the dictionary to a JSON string and return it + return JsonSerializer.Serialize(values); + } + private async Task CreateExplicitWorksheetInstanceValueAsync(Guid fieldId, string dataGridValue) { var field = await customFieldAppService.GetAsync(fieldId); From 214a56e41b38ad4ea28f02ac263f0a8ee8c11f35 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Fri, 17 Jan 2025 13:23:20 -0800 Subject: [PATCH 19/28] AB#26819 sonarqube warning --- .../Domain/Services/WorksheetsManager.cs | 2 +- .../Handlers/PersistScoresheetSectionInstanceHandler.cs | 9 +-------- .../DataGridReportDataGenerator.cs | 4 ++-- .../ScoresheetsReportingDataGeneratorService.cs | 2 +- .../CustomFieldsReportingGenerator.cs | 4 +--- .../ApplicationForms/ApplicationFormVersionAppService.cs | 5 ----- 6 files changed, 6 insertions(+), 20 deletions(-) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs index acfc09352..863451ef5 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs @@ -189,7 +189,7 @@ private async Task CreateNewWorksheetInstanceAsync(IWorksheet foreach (var field in allFields) { - var (fieldName, chefsPropertyName, value) = eventData.CustomFields.Find(s => s.fieldName == field.Name); + var (_, chefsPropertyName, value) = eventData.CustomFields.Find(s => s.fieldName == field.Name); newInstance.AddValue(field.Id, ValueConverter.Convert(value?.ToString() ?? string.Empty, field.Type, chefsPropertyName, eventData.VersionData)); } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Handlers/PersistScoresheetSectionInstanceHandler.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Handlers/PersistScoresheetSectionInstanceHandler.cs index 164e9c6fa..72be91f9e 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Handlers/PersistScoresheetSectionInstanceHandler.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Handlers/PersistScoresheetSectionInstanceHandler.cs @@ -1,15 +1,8 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using Unity.Flex.Domain.ScoresheetInstances; -using Unity.Flex.Domain.Scoresheets; +using System.Threading.Tasks; using Unity.Flex.Domain.Services; -using Unity.Flex.Reporting.DataGenerators; -using Unity.Flex.Scoresheets; using Unity.Flex.Scoresheets.Events; using Volo.Abp.DependencyInjection; using Volo.Abp.EventBus; -using Volo.Abp.Validation; namespace Unity.Flex.Handlers { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs index 88890a032..99e2b31c2 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/DataGridReportDataGenerator.cs @@ -29,9 +29,9 @@ public Dictionary> Generate() foreach (var cell in cells) { var fieldName = $"{customField.Key}-{cell.Key}"; - if (values.TryGetValue(fieldName, out List? value)) + if (values.TryGetValue(fieldName, out List? cellValue)) { - value.Add(cell.Value); + cellValue.Add(cell.Value); } else { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs index 8994404cc..5151885ff 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs @@ -24,7 +24,7 @@ public void GenerateAndSet(Scoresheet scoresheet, ScoresheetInstance instanceVal reportData.Add(reportKey, []); } - foreach (var (key, answer) in from key in reportData + foreach (var (answerKey, answer) in from key in reportData let answerKeys = answers.Find(s => s.Question?.Name == key.Key) select (key, answerKeys)) { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs index d56d2fdf8..530583329 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/FieldGenerators/CustomFieldGenerators/CustomFieldsReportingGenerator.cs @@ -1,6 +1,4 @@ -using System; -using System.Linq; -using System.Text; +using System.Text; using Unity.Flex.Domain.Worksheets; namespace Unity.Flex.Reporting.FieldGenerators.CustomFieldGenerators diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs index 66f8c4bdf..aecf98080 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs @@ -347,10 +347,5 @@ private async Task GetVersion(Guid formVersionId) var formVersion = await _applicationFormVersionRepository.GetByChefsFormVersionAsync(formVersionId); return formVersion?.Version ?? 0; } - - public Task GenerateDynamicViewAsync(Guid applicationFormVersionId) - { - throw new NotImplementedException(); - } } } From ded1a33e82845c1236f41bdc70ed45eb4d546ddd Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Fri, 17 Jan 2025 14:13:37 -0800 Subject: [PATCH 20/28] AB#26819 more sonarqube cleanup --- .../DataGenerators/ScoresheetsReportingDataGeneratorService.cs | 2 +- .../Worksheets/WorksheetInstanceAppService.cs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs index 5151885ff..41a5fca4b 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs @@ -24,7 +24,7 @@ public void GenerateAndSet(Scoresheet scoresheet, ScoresheetInstance instanceVal reportData.Add(reportKey, []); } - foreach (var (answerKey, answer) in from key in reportData + foreach (var (_, answer) in from key in reportData let answerKeys = answers.Find(s => s.Question?.Name == key.Key) select (key, answerKeys)) { diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetInstanceAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetInstanceAppService.cs index a7d81d6b8..bdad72b10 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetInstanceAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetInstanceAppService.cs @@ -3,7 +3,6 @@ using Microsoft.AspNetCore.Authorization; using Unity.Flex.Domain.WorksheetInstances; using Unity.Flex.Domain.Services; -using System.Xml; namespace Unity.Flex.WorksheetInstances { From faa6329e649da71f7070cd61c164e0a46496aeef Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Fri, 17 Jan 2025 16:34:12 -0800 Subject: [PATCH 21/28] AB#26819 fix checkbox group report render --- .../CheckboxGroupReportDataGenerator.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs index 02cb6ae27..89b4df1ad 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/CustomFieldValueGenerators/CheckboxGroupReportDataGenerator.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using Newtonsoft.Json.Linq; +using System.Collections.Generic; using System.Text.Json; using Unity.Flex.Domain.WorksheetInstances; using Unity.Flex.Domain.Worksheets; @@ -16,8 +17,9 @@ public class CheckboxGroupReportDataGenerator(CustomField customField, CustomFie public Dictionary> Generate() { var values = new Dictionary>(); + JObject dataValue = JObject.Parse(value.CurrentValue); - var checkboxValue = JsonSerializer.Deserialize(value.CurrentValue); + var checkboxValue = JsonSerializer.Deserialize(dataValue["value"]?.ToString() ?? string.Empty); foreach (var option in checkboxValue ?? []) { From 2d1fcd0658923c9d9ac5ae267e9ae8a0ad8d3d04 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Mon, 20 Jan 2025 10:30:54 -0800 Subject: [PATCH 22/28] AB#26819 add generic try catch for report data generation service --- ...coresheetsReportingDataGeneratorService.cs | 56 +++++++++++-------- ...WorksheetsReportingDataGeneratorService.cs | 54 ++++++++++-------- 2 files changed, 65 insertions(+), 45 deletions(-) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs index 41a5fca4b..3ec25958e 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; using System.Linq; using System.Text.Json; using Unity.Flex.Domain.ScoresheetInstances; @@ -14,36 +16,44 @@ public class ScoresheetsReportingDataGeneratorService : ApplicationService, { public void GenerateAndSet(Scoresheet scoresheet, ScoresheetInstance instanceValue) { - var reportData = new Dictionary>(); - - var reportingKeys = scoresheet.ReportKeys.Split(ReportingConsts.ReportFieldDelimiter); - var answers = instanceValue.Answers.ToList(); - - foreach (var reportKey in reportingKeys) + try { - reportData.Add(reportKey, []); - } + var reportData = new Dictionary>(); - foreach (var (_, answer) in from key in reportData - let answerKeys = answers.Find(s => s.Question?.Name == key.Key) - select (key, answerKeys)) - { - if (answer != null) + var reportingKeys = scoresheet.ReportKeys.Split(ReportingConsts.ReportFieldDelimiter); + var answers = instanceValue.Answers.ToList(); + + foreach (var reportKey in reportingKeys) { - var keyValues = ScoresheetsReportingDataGeneratorFactory - .Create(answer) - .Generate(); + reportData.Add(reportKey, []); + } - foreach (var keyValue in from keyValue in keyValues - where reportData.ContainsKey(keyValue.Key) - select keyValue) + foreach (var (_, answer) in from key in reportData + let answerKeys = answers.Find(s => s.Question?.Name == key.Key) + select (key, answerKeys)) + { + if (answer != null) { - reportData[keyValue.Key] = keyValue.Value; + var keyValues = ScoresheetsReportingDataGeneratorFactory + .Create(answer) + .Generate(); + + foreach (var keyValue in from keyValue in keyValues + where reportData.ContainsKey(keyValue.Key) + select keyValue) + { + reportData[keyValue.Key] = keyValue.Value; + } } } - } - instanceValue.SetReportingData(JsonSerializer.Serialize(reportData)); + instanceValue.SetReportingData(JsonSerializer.Serialize(reportData)); + } + catch (Exception ex) + { + // Blanket catch here, as we dont want this generation to interfere we intake, report formatted data can be re-generated later + Logger.LogError(ex, "Error processing reporting data for: {correlationId}", instanceValue.CorrelationId); + } } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs index b6fe45963..75b0cb6fb 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs @@ -1,4 +1,6 @@ -using System.Collections.Generic; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; using System.Linq; using System.Text.Json; using Unity.Flex.Domain.WorksheetInstances; @@ -20,35 +22,43 @@ public class WorksheetsReportingDataGeneratorService : ApplicationService, /// Serialized Key/Values Pair of values for ReportData public void GenerateAndSet(Worksheet worksheet, WorksheetInstance instanceValue) { - var reportData = new Dictionary>(); - var reportingKeys = worksheet.ReportKeys.Split(ReportingConsts.ReportFieldDelimiter); - - foreach (var reportKey in reportingKeys) + try { - reportData.Add(reportKey, []); - } - - var definitions = worksheet.Sections.SelectMany(s => s.Fields).ToList(); + var reportData = new Dictionary>(); + var reportingKeys = worksheet.ReportKeys.Split(ReportingConsts.ReportFieldDelimiter); - foreach (var value in instanceValue.Values) - { - var definition = definitions.Find(s => s.Id == value.CustomFieldId); - if (definition != null) + foreach (var reportKey in reportingKeys) { - var keyValues = WorksheetsReportingDataGeneratorFactory - .Create(definition, value) - .Generate(); + reportData.Add(reportKey, []); + } + + var definitions = worksheet.Sections.SelectMany(s => s.Fields).ToList(); - foreach (var keyValue in from keyValue in keyValues - where reportData.ContainsKey(keyValue.Key) - select keyValue) + foreach (var value in instanceValue.Values) + { + var definition = definitions.Find(s => s.Id == value.CustomFieldId); + if (definition != null) { - reportData[keyValue.Key] = keyValue.Value; + var keyValues = WorksheetsReportingDataGeneratorFactory + .Create(definition, value) + .Generate(); + + foreach (var keyValue in from keyValue in keyValues + where reportData.ContainsKey(keyValue.Key) + select keyValue) + { + reportData[keyValue.Key] = keyValue.Value; + } } } - } - instanceValue.SetReportingData(JsonSerializer.Serialize(reportData)); + instanceValue.SetReportingData(JsonSerializer.Serialize(reportData)); + } + catch (Exception ex) + { + // Blanket catch here, as we dont want this generation to interfere we intake, report formatted data can be re-generated later + Logger.LogError(ex, "Error processing reporting data for: {correlationId}", instanceValue.CorrelationId); + } } } } From cc948ef9fc6d55b87d159ffb4d1b9dd0206c0a50 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Mon, 20 Jan 2025 10:39:40 -0800 Subject: [PATCH 23/28] AB#26819 update blanket exception handler messaging for report data generation --- ...coresheetsReportingDataGeneratorService.cs | 2 +- ...WorksheetsReportingDataGeneratorService.cs | 2 +- ...missionReportingDataGeneratorAppService.cs | 47 +++++++++++-------- 3 files changed, 30 insertions(+), 21 deletions(-) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs index 3ec25958e..341add2f8 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs @@ -52,7 +52,7 @@ where reportData.ContainsKey(keyValue.Key) catch (Exception ex) { // Blanket catch here, as we dont want this generation to interfere we intake, report formatted data can be re-generated later - Logger.LogError(ex, "Error processing reporting data for: {correlationId}", instanceValue.CorrelationId); + Logger.LogError(ex, "Error processing reporting data for scoresheet - correlationId: {correlationId}", instanceValue.CorrelationId); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs index 75b0cb6fb..d9fb09304 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs @@ -57,7 +57,7 @@ where reportData.ContainsKey(keyValue.Key) catch (Exception ex) { // Blanket catch here, as we dont want this generation to interfere we intake, report formatted data can be re-generated later - Logger.LogError(ex, "Error processing reporting data for: {correlationId}", instanceValue.CorrelationId); + Logger.LogError(ex, "Error processing reporting data for worksheet - correlationId: {correlationId}", instanceValue.CorrelationId); } } } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs index 6707a4b96..d85d54ce1 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.Logging; using Newtonsoft.Json.Linq; using System; using System.Threading.Tasks; @@ -15,33 +16,41 @@ public class SubmissionReportingDataGeneratorAppService(IReportingDataGenerator { public async Task Generate(Guid submissionId) { - var submission = await applicationFormSubmissionRepository.GetAsync(submissionId); - Guid applicationFormVersionId; - ApplicationFormVersion? applicationFormVersion; - - if (submission.ApplicationFormVersionId == null) + try { - applicationFormVersion = await applicationFormVersionRepository.GetByChefsFormVersionAsync(submission.FormVersionId ?? Guid.Empty); + var submission = await applicationFormSubmissionRepository.GetAsync(submissionId); + Guid applicationFormVersionId; + ApplicationFormVersion? applicationFormVersion; - if (applicationFormVersion == null) + if (submission.ApplicationFormVersionId == null) { - throw new EntityNotFoundException(); - } + applicationFormVersion = await applicationFormVersionRepository.GetByChefsFormVersionAsync(submission.FormVersionId ?? Guid.Empty); - applicationFormVersionId = applicationFormVersion.Id; - } - else - { - applicationFormVersionId = submission.ApplicationFormVersionId.Value; - } + if (applicationFormVersion == null) + { + throw new EntityNotFoundException(); + } + + applicationFormVersionId = applicationFormVersion.Id; + } + else + { + applicationFormVersionId = submission.ApplicationFormVersionId.Value; + } - applicationFormVersion = await applicationFormVersionRepository.GetAsync(applicationFormVersionId) ?? throw new EntityNotFoundException(); + applicationFormVersion = await applicationFormVersionRepository.GetAsync(applicationFormVersionId) ?? throw new EntityNotFoundException(); - JObject submissionData = JObject.Parse(submission.Submission); + JObject submissionData = JObject.Parse(submission.Submission); - var reportData = reportingDataGenerator.Generate(submissionData, applicationFormVersion.ReportKeys); + var reportData = reportingDataGenerator.Generate(submissionData, applicationFormVersion.ReportKeys); - submission.ReportData = reportData ?? "{}"; + submission.ReportData = reportData ?? "{}"; + } + catch (Exception ex) + { + // Blanket catch here, as we dont want this generation to interfere we intake, report formatted data can be re-generated later + Logger.LogError(ex, "Error processing reporting data for submission - submissionId: {submissionId}", submissionId); + } } } } From fcce070b6c4ae99ac12fbd67ea2973ea17efc219 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Fri, 24 Jan 2025 14:15:22 -0800 Subject: [PATCH 24/28] AB#26819 cleanup sonarqube warnings --- .../DataGenerators/ScoresheetsReportingDataGeneratorService.cs | 2 +- .../DataGenerators/WorksheetsReportingDataGeneratorService.cs | 2 +- .../SubmissionReportingDataGeneratorAppService.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs index 341add2f8..ea781b014 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/ScoresheetsReportingDataGeneratorService.cs @@ -52,7 +52,7 @@ where reportData.ContainsKey(keyValue.Key) catch (Exception ex) { // Blanket catch here, as we dont want this generation to interfere we intake, report formatted data can be re-generated later - Logger.LogError(ex, "Error processing reporting data for scoresheet - correlationId: {correlationId}", instanceValue.CorrelationId); + Logger.LogError(ex, "Error processing reporting data for scoresheet - correlationId: {CorrelationId}", instanceValue.CorrelationId); } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs index d9fb09304..cd0716ded 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Reporting/DataGenerators/WorksheetsReportingDataGeneratorService.cs @@ -57,7 +57,7 @@ where reportData.ContainsKey(keyValue.Key) catch (Exception ex) { // Blanket catch here, as we dont want this generation to interfere we intake, report formatted data can be re-generated later - Logger.LogError(ex, "Error processing reporting data for worksheet - correlationId: {correlationId}", instanceValue.CorrelationId); + Logger.LogError(ex, "Error processing reporting data for worksheet - correlationId: {CorrelationId}", instanceValue.CorrelationId); } } } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs index d85d54ce1..9dca9305b 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs @@ -49,7 +49,7 @@ public async Task Generate(Guid submissionId) catch (Exception ex) { // Blanket catch here, as we dont want this generation to interfere we intake, report formatted data can be re-generated later - Logger.LogError(ex, "Error processing reporting data for submission - submissionId: {submissionId}", submissionId); + Logger.LogError(ex, "Error processing reporting data for submission - submissionId: {SubmissionId}", submissionId); } } } From 5520b39d9afd37d01f8c006a8fc5419b4d83927c Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Fri, 24 Jan 2025 16:07:03 -0800 Subject: [PATCH 25/28] AB#26819 move reportgenerator catch to remoteservice from app service --- .../Intakes/IntakeFormSubmissionManager.cs | 4 +- .../DataGenerators/IReportingDataGenerator.cs | 5 +- .../DataGenerators/ReportingDataGenerator.cs | 77 +++++++++++-------- ...missionReportingDataGeneratorAppService.cs | 47 +++++------ 4 files changed, 69 insertions(+), 64 deletions(-) diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs index 1f187bb75..3eca04325 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs @@ -71,11 +71,11 @@ await _customFieldsIntakeSubmissionMapper.MapAndPersistCustomFields(application. formSubmission, formVersionSubmissionHeaderMapping); - newSubmission.ReportData = _reportingDataGenerator.Generate(formSubmission, localFormVersion?.ReportKeys); + newSubmission.ReportData = _reportingDataGenerator.Generate(formSubmission, localFormVersion?.ReportKeys, newSubmission.Id); newSubmission.ApplicationFormVersionId = localFormVersion?.Id; await uow.SaveChangesAsync(); - + return application.Id; } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/IReportingDataGenerator.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/IReportingDataGenerator.cs index 140999ed0..5e2adb70c 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/IReportingDataGenerator.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/IReportingDataGenerator.cs @@ -1,9 +1,10 @@ -using Volo.Abp.Application.Services; +using System; +using Volo.Abp.Application.Services; namespace Unity.GrantManager.Reporting.DataGenerators { public interface IReportingDataGenerator : IApplicationService { - string? Generate(dynamic formSubmission, string? reportKeys); + string? Generate(dynamic formSubmission, string? reportKeys, Guid submissionId); } } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGenerator.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGenerator.cs index 8be2d9172..916432a91 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGenerator.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/ReportingDataGenerator.cs @@ -4,61 +4,74 @@ using System.Linq; using Volo.Abp.Application.Services; using Volo.Abp; +using Microsoft.Extensions.Logging; +using System; namespace Unity.GrantManager.Reporting.DataGenerators { [RemoteService(false)] public class ReportingDataGenerator : ApplicationService, IReportingDataGenerator { - public string? Generate(dynamic formSubmission, string? reportKeys) + public string? Generate(dynamic formSubmission, string? reportKeys, Guid submissionId) { - if (reportKeys == null) return null; + try + { + if (reportKeys == null) return null; - var reportResult = new Dictionary>(); + var reportResult = new Dictionary>(); - JObject submission = JObject.Parse(formSubmission.ToString()); + JObject submission = JObject.Parse(formSubmission.ToString()); - // Navigate to the "data" node within the "submission" node - JToken? dataNode = submission.SelectToken("submission.submission.data"); + // Navigate to the "data" node within the "submission" node + JToken? dataNode = submission.SelectToken("submission.submission.data"); - List keysToTrack = [.. reportKeys.Split('|')]; + List keysToTrack = [.. reportKeys.Split('|')]; - if (dataNode == null) return null; + if (dataNode == null) return null; - // Perform a recursive scan of the data node - ScanNode(dataNode, keysToTrack, reportResult); + // Perform a recursive scan of the data node + ScanNode(dataNode, keysToTrack, reportResult); - // Ensure all keys are present in the result, even if no matches were found - foreach (var key in keysToTrack) - { - if (!reportResult.ContainsKey(key)) + // Ensure all keys are present in the result, even if no matches were found + foreach (var key in keysToTrack) { - reportResult[key] = []; + if (!reportResult.ContainsKey(key)) + { + reportResult[key] = []; + } } - } - // Clean up the JSON strings - foreach (var key in reportResult.Keys.ToList()) - { - reportResult[key] = reportResult[key].Select(CleanJsonString).ToList(); - } + // Clean up the JSON strings + foreach (var key in reportResult.Keys.ToList()) + { + reportResult[key] = reportResult[key].Select(CleanJsonString).ToList(); + } + + // Sort the dictionary by keys alphabetically + var sortedResult = reportResult.OrderBy(kvp => kvp.Key).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + + // Create a simple JSON object from the result dictionary + JObject jsonObject = []; + + foreach (var kvp in sortedResult) + { + JArray valuesArray = new(kvp.Value); + jsonObject[kvp.Key] = valuesArray; + } - // Sort the dictionary by keys alphabetically - var sortedResult = reportResult.OrderBy(kvp => kvp.Key).ToDictionary(kvp => kvp.Key, kvp => kvp.Value); + if (jsonObject == null) return null; - // Create a simple JSON object from the result dictionary - JObject jsonObject = []; + // Prep value for db + return jsonObject.ToString(); - foreach (var kvp in sortedResult) + } + catch (Exception ex) { - JArray valuesArray = new(kvp.Value); - jsonObject[kvp.Key] = valuesArray; + // Blanket catch here, as we dont want this generation to interfere we intake, report formatted data can be re-generated later + Logger.LogError(ex, "Error processing reporting data for submission - submissionId: {SubmissionId}", submissionId); } - if (jsonObject == null) return null; - - // Prep value for db - return jsonObject.ToString(); + return null; } static void ScanNode(JToken node, List keysToTrack, Dictionary> result) diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs index 9dca9305b..bce9ed360 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Reporting/DataGenerators/SubmissionReportingDataGeneratorAppService.cs @@ -1,5 +1,4 @@ using Microsoft.AspNetCore.Authorization; -using Microsoft.Extensions.Logging; using Newtonsoft.Json.Linq; using System; using System.Threading.Tasks; @@ -16,41 +15,33 @@ public class SubmissionReportingDataGeneratorAppService(IReportingDataGenerator { public async Task Generate(Guid submissionId) { - try - { - var submission = await applicationFormSubmissionRepository.GetAsync(submissionId); - Guid applicationFormVersionId; - ApplicationFormVersion? applicationFormVersion; - - if (submission.ApplicationFormVersionId == null) - { - applicationFormVersion = await applicationFormVersionRepository.GetByChefsFormVersionAsync(submission.FormVersionId ?? Guid.Empty); + var submission = await applicationFormSubmissionRepository.GetAsync(submissionId); + Guid applicationFormVersionId; + ApplicationFormVersion? applicationFormVersion; - if (applicationFormVersion == null) - { - throw new EntityNotFoundException(); - } + if (submission.ApplicationFormVersionId == null) + { + applicationFormVersion = await applicationFormVersionRepository.GetByChefsFormVersionAsync(submission.FormVersionId ?? Guid.Empty); - applicationFormVersionId = applicationFormVersion.Id; - } - else + if (applicationFormVersion == null) { - applicationFormVersionId = submission.ApplicationFormVersionId.Value; + throw new EntityNotFoundException(); } - applicationFormVersion = await applicationFormVersionRepository.GetAsync(applicationFormVersionId) ?? throw new EntityNotFoundException(); - - JObject submissionData = JObject.Parse(submission.Submission); - - var reportData = reportingDataGenerator.Generate(submissionData, applicationFormVersion.ReportKeys); - - submission.ReportData = reportData ?? "{}"; + applicationFormVersionId = applicationFormVersion.Id; } - catch (Exception ex) + else { - // Blanket catch here, as we dont want this generation to interfere we intake, report formatted data can be re-generated later - Logger.LogError(ex, "Error processing reporting data for submission - submissionId: {SubmissionId}", submissionId); + applicationFormVersionId = submission.ApplicationFormVersionId.Value; } + + applicationFormVersion = await applicationFormVersionRepository.GetAsync(applicationFormVersionId) ?? throw new EntityNotFoundException(); + + JObject submissionData = JObject.Parse(submission.Submission); + + var reportData = reportingDataGenerator.Generate(submissionData, applicationFormVersion.ReportKeys, submissionId); + + submission.ReportData = reportData ?? "{}"; } } } From 926581c896ad18bc49cd3fc624e9a1aaf5095b4d Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Tue, 28 Jan 2025 11:10:32 -0800 Subject: [PATCH 26/28] AB#26819 wrap callouts to the reporting services internally with a feature flag --- .../Domain/Services/ScoresheetsManager.cs | 10 ++++++++-- .../Domain/Services/WorksheetsManager.cs | 12 +++++++++--- .../Scoresheets/ScoresheetAppService.cs | 10 ++++++++-- .../Worksheets/WorksheetAppService.cs | 11 +++++++++-- .../Unity.SharedKernel/Features/FeatureConsts.cs | 7 +++++++ .../GrantManagerFeaturesDefinitionProvider.cs | 16 ++++++++++++---- .../ApplicationFormVersionAppService.cs | 12 ++++++++++-- .../Intakes/IntakeFormSubmissionManager.cs | 15 ++++++++++++--- 8 files changed, 75 insertions(+), 18 deletions(-) create mode 100644 applications/Unity.GrantManager/modules/Unity.SharedKernel/Features/FeatureConsts.cs diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs index 10b82711e..27951f978 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/ScoresheetsManager.cs @@ -8,14 +8,17 @@ using Unity.Flex.Scoresheets.Enums; using Unity.Flex.Scoresheets.Events; using Unity.Flex.Worksheets.Definitions; +using Unity.Modules.Shared.Features; using Volo.Abp.Domain.Services; +using Volo.Abp.Features; using Volo.Abp.Validation; namespace Unity.Flex.Domain.Services { public class ScoresheetsManager(IScoresheetInstanceRepository scoresheetInstanceRepository, IScoresheetRepository scoresheetRepository, - IReportingDataGeneratorService reportingDataGeneratorService) : DomainService + IReportingDataGeneratorService reportingDataGeneratorService, + IFeatureChecker featureChecker) : DomainService { public static List ValidateScoresheetAnswersAsync(ScoresheetInstance scoresheetInstance, Scoresheet scoresheet) { @@ -75,7 +78,10 @@ public async Task PersistScoresheetData(PersistScoresheetSectionInstanceEto even await scoresheetInstanceRepository.UpdateAsync(instance); } - reportingDataGeneratorService.GenerateAndSet(scoresheet, instance); + if (await featureChecker.IsEnabledAsync(FeatureConsts.Reporting)) + { + reportingDataGeneratorService.GenerateAndSet(scoresheet, instance); + } } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs index 863451ef5..b0f0ad7a2 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Domain/Services/WorksheetsManager.cs @@ -12,14 +12,17 @@ using Unity.Flex.Reporting.DataGenerators; using Unity.Flex.WorksheetInstances; using Unity.Flex.Worksheets.Values; +using Unity.Modules.Shared.Features; using Volo.Abp.Domain.Services; +using Volo.Abp.Features; namespace Unity.Flex.Domain.Services { public class WorksheetsManager(IWorksheetInstanceRepository worksheetInstanceRepository, IWorksheetRepository worksheetRepository, IWorksheetLinkRepository worksheetLinkRepository, - IReportingDataGeneratorService reportingService) : DomainService + IReportingDataGeneratorService reportingService, + IFeatureChecker featureChecker) : DomainService { public async Task PersistWorksheetData(PersistWorksheetIntanceValuesEto eventData) { @@ -69,7 +72,7 @@ public async Task UpdateWorksheetInstanceValueAsync(WorksheetInstance instance) // Update and set the instance value for the worksheet - high level values serialized var worksheet = await worksheetRepository.GetAsync(instance.WorksheetId, true); var fieldDefinitions = worksheet.Sections.SelectMany(s => s.Fields).ToList(); - var instanceCurrentValue = new WorksheetInstanceValue(); + var instanceCurrentValue = new WorksheetInstanceValue(); foreach (var field in instance.Values) { @@ -81,7 +84,10 @@ public async Task UpdateWorksheetInstanceValueAsync(WorksheetInstance instance) instance.SetValue(JsonSerializer.Serialize(instanceCurrentValue)); - reportingService.GenerateAndSet(worksheet, instance); + if (await featureChecker.IsEnabledAsync(FeatureConsts.Reporting)) + { + reportingService.GenerateAndSet(worksheet, instance); + } } private void UpdateExistingWorksheetInstance(WorksheetInstance worksheetInstance, Worksheet? worksheet, List fields) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs index 11252c329..e71271d58 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Scoresheets/ScoresheetAppService.cs @@ -9,7 +9,9 @@ using Unity.Flex.Domain.Utils; using Unity.Flex.Reporting.FieldGenerators; using Unity.Flex.Scoresheets.Enums; +using Unity.Modules.Shared.Features; using Volo.Abp; +using Volo.Abp.Features; using Volo.Abp.Uow; using Volo.Abp.Validation; @@ -20,7 +22,8 @@ public partial class ScoresheetAppService(IUnitOfWorkManager unitOfWorkManager, IScoresheetRepository scoresheetRepository, IScoresheetSectionRepository sectionRepository, IQuestionRepository questionRepository, - IReportingFieldsGeneratorService reportingFieldsGeneratorService) : FlexAppService, IScoresheetAppService + IReportingFieldsGeneratorService reportingFieldsGeneratorService, + IFeatureChecker featureChecker) : FlexAppService, IScoresheetAppService { private readonly static object _sectionLockObject = new(); private readonly static object _questionLockObject = new(); @@ -189,7 +192,10 @@ public async Task PublishScoresheetAsync(Guid id) scoresheet.Published = true; - scoresheet = reportingFieldsGeneratorService.GenerateAndSet(scoresheet); + if (await featureChecker.IsEnabledAsync(FeatureConsts.Reporting)) + { + scoresheet = reportingFieldsGeneratorService.GenerateAndSet(scoresheet); + } await scoresheetRepository.UpdateAsync(scoresheet); } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs index 3f0eab68d..45ea7e5ee 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs @@ -4,19 +4,23 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Unity.Flex.Domain.Scoresheets; using Unity.Flex.Domain.Services; using Unity.Flex.Domain.Settings; using Unity.Flex.Domain.Utils; using Unity.Flex.Domain.Worksheets; using Unity.Flex.Reporting.FieldGenerators; +using Unity.Modules.Shared.Features; using Volo.Abp; +using Volo.Abp.Features; namespace Unity.Flex.Worksheets { [Authorize] public partial class WorksheetAppService(IWorksheetRepository worksheetRepository, WorksheetsManager worksheetsManager, - IReportingFieldsGeneratorService reportingFieldsGeneratorService) : FlexAppService, IWorksheetAppService + IReportingFieldsGeneratorService reportingFieldsGeneratorService, + IFeatureChecker featureChecker) : FlexAppService, IWorksheetAppService { public virtual async Task GetAsync(Guid id) { @@ -109,7 +113,10 @@ public virtual async Task PublishAsync(Guid id) _ = worksheet.SetPublished(true); - _ = reportingFieldsGeneratorService.GenerateAndSet(worksheet); + if (await featureChecker.IsEnabledAsync(FeatureConsts.Reporting)) + { + _ = reportingFieldsGeneratorService.GenerateAndSet(worksheet); + } return await Task.FromResult(true); } diff --git a/applications/Unity.GrantManager/modules/Unity.SharedKernel/Features/FeatureConsts.cs b/applications/Unity.GrantManager/modules/Unity.SharedKernel/Features/FeatureConsts.cs new file mode 100644 index 000000000..f4e48b303 --- /dev/null +++ b/applications/Unity.GrantManager/modules/Unity.SharedKernel/Features/FeatureConsts.cs @@ -0,0 +1,7 @@ +namespace Unity.Modules.Shared.Features +{ + public static class FeatureConsts + { + public const string Reporting = "Unity.Reporting"; + } +} diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/GrantManagerFeaturesDefinitionProvider.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/GrantManagerFeaturesDefinitionProvider.cs index 603c42610..3004325f4 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/GrantManagerFeaturesDefinitionProvider.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application.Contracts/GrantManagerFeaturesDefinitionProvider.cs @@ -1,4 +1,5 @@ using Unity.Flex.Localization; +using Unity.GrantManager.Localization; using Unity.Notifications.Localization; using Unity.Payments.Localization; using Volo.Abp.Features; @@ -12,23 +13,30 @@ public class GrantManagerFeaturesDefinitionProvider : FeatureDefinitionProvider public override void Define(IFeatureDefinitionContext context) { var myGroup = context.AddGroup("GrantManager"); + var defaultValue = "false"; myGroup.AddFeature("Unity.Payments", - defaultValue: "false", + defaultValue: defaultValue, displayName: LocalizableString .Create("Payments"), valueType: new ToggleStringValueType()); myGroup.AddFeature("Unity.Notifications", - defaultValue: "false", + defaultValue: defaultValue, displayName: LocalizableString .Create("Allow Notifications"), valueType: new ToggleStringValueType()); myGroup.AddFeature("Unity.Flex", - defaultValue: "false", + defaultValue: defaultValue, displayName: LocalizableString - .Create("Flex"), + .Create("Flex"), + valueType: new ToggleStringValueType()); + + myGroup.AddFeature("Unity.Reporting", + defaultValue: defaultValue, + displayName: LocalizableString + .Create("Reporting"), valueType: new ToggleStringValueType()); } } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs index aecf98080..6571fd04a 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/ApplicationForms/ApplicationFormVersionAppService.cs @@ -9,10 +9,12 @@ using Unity.GrantManager.Intakes; using Unity.GrantManager.Integration.Chefs; using Unity.GrantManager.Reporting.FieldGenerators; +using Unity.Modules.Shared.Features; using Volo.Abp.Application.Dtos; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Repositories; +using Volo.Abp.Features; using Volo.Abp.Uow; namespace Unity.GrantManager.ApplicationForms @@ -33,6 +35,7 @@ public class ApplicationFormVersionAppService : private readonly IFormsApiService _formApiService; private readonly IApplicationFormSubmissionRepository _applicationFormSubmissionRepository; private readonly IReportingFieldsGeneratorService _reportingFieldsGeneratorService; + private readonly IFeatureChecker _featureChecker; public ApplicationFormVersionAppService(IRepository repository, IIntakeFormSubmissionMapper intakeFormSubmissionMapper, @@ -40,7 +43,8 @@ public ApplicationFormVersionAppService(IRepository CreateAsync(CreateUpdateApplicationFormVersionDto input) @@ -289,7 +294,10 @@ public async Task UpdateOrCreateApplicationFormVersio applicationFormVersion = await _applicationFormVersionRepository.InsertAsync(applicationFormVersion); } - await _reportingFieldsGeneratorService.GenerateAndSetAsync(applicationFormVersion); + if (await _featureChecker.IsEnabledAsync(FeatureConsts.Reporting)) + { + await _reportingFieldsGeneratorService.GenerateAndSetAsync(applicationFormVersion); + } return ObjectMapper.Map(applicationFormVersion); } diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs index 3eca04325..21d94ba52 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs @@ -1,4 +1,5 @@ using Newtonsoft.Json; +using Polly; using System; using System.Linq; using System.Threading.Tasks; @@ -7,8 +8,11 @@ using Unity.GrantManager.GrantApplications; using Unity.GrantManager.Intakes.Mapping; using Unity.GrantManager.Reporting.DataGenerators; +using Unity.Modules.Shared.Features; using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Services; +using Volo.Abp.Features; +using Volo.Abp.UI.Navigation; using Volo.Abp.Uow; namespace Unity.GrantManager.Intakes @@ -21,7 +25,8 @@ public class IntakeFormSubmissionManager(IUnitOfWorkManager _unitOfWorkManager, IIntakeFormSubmissionMapper _intakeFormSubmissionMapper, IApplicationFormVersionRepository _applicationFormVersionRepository, CustomFieldsIntakeSubmissionMapper _customFieldsIntakeSubmissionMapper, - IReportingDataGenerator _reportingDataGenerator) : DomainService, IIntakeFormSubmissionManager + IReportingDataGenerator _reportingDataGenerator, + IFeatureChecker featureChecker) : DomainService, IIntakeFormSubmissionManager { public async Task GetApplicationFormVersionMapping(string chefsFormVersionId) @@ -69,9 +74,13 @@ public async Task ProcessFormSubmissionAsync(ApplicationForm applicationFo await _customFieldsIntakeSubmissionMapper.MapAndPersistCustomFields(application.Id, localFormVersion?.Id ?? Guid.Empty, formSubmission, - formVersionSubmissionHeaderMapping); + formVersionSubmissionHeaderMapping); + + if (await featureChecker.IsEnabledAsync(FeatureConsts.Reporting)) + { + newSubmission.ReportData = _reportingDataGenerator.Generate(formSubmission, localFormVersion?.ReportKeys, newSubmission.Id); + } - newSubmission.ReportData = _reportingDataGenerator.Generate(formSubmission, localFormVersion?.ReportKeys, newSubmission.Id); newSubmission.ApplicationFormVersionId = localFormVersion?.Id; await uow.SaveChangesAsync(); From c74ef9ed49847d3c85089feb93102b914ea3ba92 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Tue, 28 Jan 2025 14:50:58 -0800 Subject: [PATCH 27/28] AB#26819 fix failing unit tests --- .../test/Unity.Flex.TestBase/FlexTestBase.cs | 12 ++++++++++++ .../Unity.Flex.TestBase/Unity.Flex.TestBase.csproj | 1 + 2 files changed, 13 insertions(+) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/test/Unity.Flex.TestBase/FlexTestBase.cs b/applications/Unity.GrantManager/modules/Unity.Flex/test/Unity.Flex.TestBase/FlexTestBase.cs index 1b3ba0808..3307212f4 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/test/Unity.Flex.TestBase/FlexTestBase.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/test/Unity.Flex.TestBase/FlexTestBase.cs @@ -5,6 +5,8 @@ using Volo.Abp.Modularity; using Volo.Abp.Uow; using Volo.Abp.Testing; +using NSubstitute; +using Volo.Abp.Features; namespace Unity.Flex; @@ -56,4 +58,14 @@ protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWork } } } + + protected override void AfterAddApplication(IServiceCollection services) + { + // Because some of the tests rely on the feature check, always set to true for the module tests + var featureMock = Substitute.For(); + featureMock.IsEnabledAsync(Arg.Any()).Returns(true); + services.AddSingleton(featureMock); + + base.AfterAddApplication(services); + } } diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/test/Unity.Flex.TestBase/Unity.Flex.TestBase.csproj b/applications/Unity.GrantManager/modules/Unity.Flex/test/Unity.Flex.TestBase/Unity.Flex.TestBase.csproj index 9c71ab002..d22fad171 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/test/Unity.Flex.TestBase/Unity.Flex.TestBase.csproj +++ b/applications/Unity.GrantManager/modules/Unity.Flex/test/Unity.Flex.TestBase/Unity.Flex.TestBase.csproj @@ -18,6 +18,7 @@ + From 8fe1c8b20e24f2c3a49c231e17b95af418a0d680 Mon Sep 17 00:00:00 2001 From: Andre Goncalves Date: Tue, 28 Jan 2025 15:15:54 -0800 Subject: [PATCH 28/28] AB#26819 SQ cleanup --- .../Unity.Flex.Application/Worksheets/WorksheetAppService.cs | 1 - .../Intakes/IntakeFormSubmissionManager.cs | 2 -- 2 files changed, 3 deletions(-) diff --git a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs index 45ea7e5ee..2bb0e08ca 100644 --- a/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs +++ b/applications/Unity.GrantManager/modules/Unity.Flex/src/Unity.Flex.Application/Worksheets/WorksheetAppService.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Unity.Flex.Domain.Scoresheets; using Unity.Flex.Domain.Services; using Unity.Flex.Domain.Settings; using Unity.Flex.Domain.Utils; diff --git a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs index 21d94ba52..3e6025353 100644 --- a/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs +++ b/applications/Unity.GrantManager/src/Unity.GrantManager.Application/Intakes/IntakeFormSubmissionManager.cs @@ -1,5 +1,4 @@ using Newtonsoft.Json; -using Polly; using System; using System.Linq; using System.Threading.Tasks; @@ -12,7 +11,6 @@ using Volo.Abp.Domain.Repositories; using Volo.Abp.Domain.Services; using Volo.Abp.Features; -using Volo.Abp.UI.Navigation; using Volo.Abp.Uow; namespace Unity.GrantManager.Intakes