Skip to content
Snippets Groups Projects
Commit c40fce66 authored by Martin Bilda's avatar Martin Bilda Committed by Martin Bilda
Browse files

#Prototyp für MSTeams Anbindung

parent 542aa482
No related branches found
No related tags found
No related merge requests found
Showing
with 471 additions and 900 deletions
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<include file="create_MST_TEAM.xml" relativeToChangelogFile="true"/>
</databaseChangeLog>
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<changeSet author="m.bilda" id="3d4f843d-9c5d-46b1-9475-9527d45a65b6">
<createTable tableName="MST_TEAM">
<column name="MST_ID" type="CHAR(36)">
<constraints primaryKey="true" primaryKeyName="PK_MST_TEAM_MST_ID"/>
</column>
<column name="MST_TEAMID" type="CHAR(36)"/>
<column name="TEAMNAME" type="NVARCHAR(255)"/>
<column name="GENERAL_CHANNELID" type="CHAR(48)"/>
<column name="OBJECT_ROWID" type="CHAR(36)"/>
<column name="IS_ARCHIVED" type="TINYINT"/>
<column name="SERVICE_URL" type="NVARCHAR(255)"/>
<column name="FINAL_DELETE_DATE" type="TIMESTAMP"/>
</createTable>
</changeSet>
</databaseChangeLog>
......@@ -7,11 +7,11 @@
</column>
<column name="BACKPACK" type="CLOB"/>
<column name="CAPTION" type="VARCHAR(512)"/>
<column name="CREATIONDATE" type="BIGINT"/>
<column name="CREATEDATE" type="TIMESTAMP"/>
<column name="DELETEDATE" type="TIMESTAMP"/>
<column name="DESCRIPTION" type="VARCHAR(1023)"/>
<column name="FORCEDPRIORITY" type="VARCHAR(15)"/>
<column name="ICON_INFO" type="VARCHAR(1023)"/>
<column name="LIFETIME" type="BIGINT"/>
<column name="LINK_INFO" type="VARCHAR(1023)"/>
<column name="ORIGINATORNAME" type="VARCHAR(63)"/>
<column name="RECIPIENTUSERIDS" type="CLOB"/>
......
This diff is collapsed.
......@@ -51,7 +51,6 @@
<consumer>KeywordCategories</consumer>
<groupable v="true" />
<mandatory v="true" />
<valueProcess>%aditoprj%/entity/Activity_entity/entityfields/category/valueProcess.js</valueProcess>
<displayValueProcess>%aditoprj%/entity/Activity_entity/entityfields/category/displayValueProcess.js</displayValueProcess>
</entityField>
<entityField>
......@@ -87,12 +86,6 @@
<fieldName>Activities</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>262fe53d-7358-40ff-8641-e08add14528a</name>
<entityName>Object_entity</entityName>
<fieldName>Activities</fieldName>
<isConsumer v="false" />
</entityDependency>
</dependencies>
</entityProvider>
<entityField>
......@@ -270,12 +263,6 @@
<fieldName>Activities</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>943c36a2-d378-44a1-b214-25e92244c8cb</name>
<entityName>UniversalFileProcessor_entity</entityName>
<fieldName>Activities</fieldName>
<isConsumer v="false" />
</entityDependency>
</dependencies>
<children>
<entityParameter>
......@@ -491,6 +478,7 @@
<children>
<entityParameter>
<name>LinkedObjectId_param</name>
<valueProcess>%aditoprj%/entity/Activity_entity/entityfields/appointments/children/linkedobjectid_param/valueProcess.js</valueProcess>
</entityParameter>
</children>
</entityConsumer>
......@@ -571,7 +559,6 @@
</entityField>
<entityField>
<name>bindata</name>
<title>data</title>
<contentType>FILE</contentType>
<stateProcess>%aditoprj%/entity/Activity_entity/entityfields/bindata/stateProcess.js</stateProcess>
<onValueChange>%aditoprj%/entity/Activity_entity/entityfields/bindata/onValueChange.js</onValueChange>
......@@ -595,27 +582,6 @@
</entityParameter>
</children>
</entityConsumer>
<entityParameter>
<name>Category_param</name>
<expose v="true" />
</entityParameter>
<entityParameter>
<name>Entrydate_param</name>
<expose v="true" />
</entityParameter>
<entityParameter>
<name>VisitPlanEntryId_param</name>
<expose v="true" />
</entityParameter>
<entityParameter>
<name>ActivityIDs_param</name>
<expose v="true" />
</entityParameter>
<entityField>
<name>countLinks</name>
<title> number of connections</title>
<valueProcess>%aditoprj%/entity/Activity_entity/entityfields/countlinks/valueProcess.js</valueProcess>
</entityField>
</entityFields>
<recordContainers>
<dbRecordContainer>
......@@ -625,7 +591,6 @@
<conditionProcess>%aditoprj%/entity/Activity_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
<orderClauseProcess>%aditoprj%/entity/Activity_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
<onDBInsert>%aditoprj%/entity/Activity_entity/recordcontainers/db/onDBInsert.js</onDBInsert>
<onDBUpdate>%aditoprj%/entity/Activity_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate>
<onDBDelete>%aditoprj%/entity/Activity_entity/recordcontainers/db/onDBDelete.js</onDBDelete>
<linkInformation>
<linkInformation>
......
import("system.vars");
import("system.neon");
neon.openContext("MSTTeamChat", null, null, neon.OPERATINGSTATE_NEW, {
"ROWID_param" : vars.get("$param.RowId_param")
});
\ No newline at end of file
import("system.vars");
import("system.neon");
import("system.result");
import("Sql_lib");
var teamId = newSelect("MST_TEAMID")
.from("MST_TEAM")
.where("MST_TEAM.OBJECT_ROWID", vars.get("$param.RowId_param"))
.cell();
var isArchived = newSelect("IS_ARCHIVED")
.from("MST_TEAM")
.where("MST_TEAM.OBJECT_ROWID", vars.get("$param.RowId_param"))
.cell();
if (teamId == "" || isArchived == 1)
{
result.string(neon.COMPONENTSTATE_INVISIBLE);
}
else
{
result.string(neon.COMPONENTSTATE_EDITABLE);
}
\ No newline at end of file
......@@ -343,6 +343,18 @@
</entityParameter>
</children>
</entityProvider>
<entityActionGroup>
<name>MSTeam</name>
<children>
<entityActionField>
<name>synchronizeDocuments</name>
<title>Dateien synchronisieren</title>
<onActionProcess>%aditoprj%/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js</onActionProcess>
<stateProcess>%aditoprj%/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js</stateProcess>
<tooltip>Synchronisiert die Dokumente der Datenbank mit den Dokumenten von MSTeams</tooltip>
</entityActionField>
</children>
</entityActionGroup>
</entityFields>
<recordContainers>
<jDitoRecordContainer>
......
import("system.teams");
import("system.vars");
import("system.db");
import("system.util")
import("Sql_lib");
import("system.net")
var rowId = vars.get("$param.AssignmentRowId_param");
neon.openContext("MSTTeamDocument", null, null, neon.OPERATINGSTATE_NEW, {
"ObjectRowId_param" : rowId,
"AssignmentName_param" : vars.get("$param.AssignmentName_param"),
"AssignmentTable_param" : vars.get("$param.AssignmentTable_param")
});
import("system.vars");
import("system.neon");
import("system.result");
import("Sql_lib");
import("system.logging");
var teamId = newSelect("MST_TEAMID", "Data_alias")
.from("MST_TEAM")
.where("MST_TEAM.OBJECT_ROWID", "$param.AssignmentRowId_param")
.cell();
var isArchived = newSelect("IS_ARCHIVED", "Data_alias")
.from("MST_TEAM")
.where("MST_TEAM.OBJECT_ROWID", "$param.AssignmentRowId_param")
.cell();
if (teamId == "" || isArchived == 1)
{
result.string(neon.COMPONENTSTATE_INVISIBLE);
}
else
{
result.string(neon.COMPONENTSTATE_EDITABLE);
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14">
<name>MSTChooseTeam_entity</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<recordContainer>jdito</recordContainer>
<entityFields>
<entityProvider>
<name>#PROVIDER</name>
</entityProvider>
<entityField>
<name>ALLTEAMS</name>
<title>All Teams</title>
<dropDownProcess>%aditoprj%/entity/MSTChooseTeam_entity/entityfields/allteams/dropDownProcess.js</dropDownProcess>
<selectionMode>SINGLE</selectionMode>
</entityField>
<entityField>
<name>UID</name>
</entityField>
<entityParameter>
<name>RowId_param</name>
<expose v="true" />
</entityParameter>
<entityField>
<name>ALLARCHIVEDTEAMS</name>
<title>allArchivedTeams</title>
<dropDownProcess>%aditoprj%/entity/MSTChooseTeam_entity/entityfields/allarchivedteams/dropDownProcess.js</dropDownProcess>
</entityField>
<entityField>
<name>SEARCHVALUE</name>
<title>Surchbegriff</title>
<tooltip>Inhalt dieses Feldes wird als Suche verwendet</tooltip>
</entityField>
</entityFields>
<recordContainers>
<jDitoRecordContainer>
<name>jdito</name>
<jDitoRecordAlias>Data_alias</jDitoRecordAlias>
<isPageable v="true" />
<contentProcess>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
<onInsert>%aditoprj%/entity/MSTChooseTeam_entity/recordcontainers/jdito/onInsert.js</onInsert>
<recordFieldMappings>
<jDitoRecordFieldMapping>
<name>ALLTEAMS.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>ALLTEAMS.displayValue</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>UID.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>ALLARCHIVEDTEAMS.displayValue</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>ALLARCHIVEDTEAMS.value</name>
</jDitoRecordFieldMapping>
</recordFieldMappings>
</jDitoRecordContainer>
</recordContainers>
</entity>
import("system.result");
import("system.teams");
var allArchivedTeams = teams.getAllArchivedTeams(null);
if (allArchivedTeams)
result.object(allArchivedTeams);
\ No newline at end of file
import("system.result");
import("system.teams");
import("system.vars");
import("system.logging");
var searchValue = vars.get("$field.SEARCHVALUE");
var allTeams;
if(searchValue)
{
allTeams = teams.getAllTeams(searchValue);
}
else
{
allTeams = teams.getAllTeams(null)
}
if (allTeams)
result.object(allTeams);
\ No newline at end of file
import("system.result");
import("system.vars");
//TODO: This dummy implementation shouldn't be nescessary here. Remove this process eventually. #1051003
var rows = [];
if (vars.get("$local.idvalues"))
rows = vars.get("$local.idvalues").map(function (id) {return [id, "", "", "", ""];});
result.object(rows);
\ No newline at end of file
import("system.teams");
import("Sql_lib")
import("system.logging");
import("system.vars")
import("system.teams");
import("system.util");
import("system.neon");
var rowData = vars.get("$local.rowdata");
var teamId = rowData["ALLTEAMS.value"];
var teamName = rowData["ALLTEAMS.displayValue"]
var archivedTeamId = rowData["ALLARCHIVEDTEAMS.value"];
var archivedTeamName = rowData["ALLARCHIVEDTEAMS.displayValue"];
if(teamId)
{
var channelId = teams.getGeneralChannelId(teamId);
var serviceUrl = newSelect("SERVICE_URL")
.from("MST_TEAM")
.where("MST_TEAM.MST_TEAMID", teamId)
.cell();
if(serviceUrl == null)
{
serviceUrl = "";
}
new SqlBuilder().insertFields({
"MST_ID" : util.getNewUUID(),
"MST_TEAMID" : teamId,
"TEAMNAME" : teamName,
"GENERAL_CHANNELID" : channelId,
"OBJECT_ROWID" : vars.get("$param.RowId_param"),
"IS_ARCHIVED" : 0,
"SERVICE_URL" : serviceUrl
}, "MST_TEAM");
}
else if(archivedTeamId)
{
teams.unarchiveTeamAndRestoreGroup(archivedTeamId)
var channelId = teams.getGeneralChannelId(archivedTeamId);
var serviceUrl = newSelect("SERVICE_URL")
.from("MST_TEAM")
.where("MST_TEAM.MST_TEAMID", archivedTeamId)
.cell();
if(serviceUrl == null)
{
serviceUrl = "";
}
newWhere("MST_TEAM.MST_TEAMID", archivedTeamId)
.updateFields({
"IS_ARCHIVED" : "0",
"FINAL_DELETE_DATE" : ""
});
new SqlBuilder().insertFields({
"MST_ID" : util.getNewUUID(),
"MST_TEAMID" : archivedTeamId,
"TEAMNAME" : archivedTeamName,
"GENERAL_CHANNELID" : channelId,
"OBJECT_ROWID" : vars.get("$param.RowId_param"),
"IS_ARCHIVED" : 0,
"SERVICE_URL" : serviceUrl
}, "MST_TEAM");
}
neon.refreshAll();
<?xml version="1.0" encoding="UTF-8"?>
<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14">
<name>MSTTeam2_entity</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<recordContainer>jdito</recordContainer>
<entityFields>
<entityProvider>
<name>#PROVIDER</name>
</entityProvider>
<entityField>
<name>MEMBERS</name>
</entityField>
<entityField>
<name>OWNER</name>
<selectionMode>MULTI</selectionMode>
</entityField>
<entityProvider>
<name>Members2</name>
<recordContainer>jdito</recordContainer>
</entityProvider>
<entityField>
<name>UID</name>
</entityField>
</entityFields>
<recordContainers>
<jDitoRecordContainer>
<name>jdito</name>
<jDitoRecordAlias>Data_alias</jDitoRecordAlias>
<contentProcess>%aditoprj%/entity/MSTTeam2_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
<recordFieldMappings>
<jDitoRecordFieldMapping>
<name>UID.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>OWNER.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>MEMBERS.value</name>
</jDitoRecordFieldMapping>
</recordFieldMappings>
</jDitoRecordContainer>
</recordContainers>
</entity>
import("system.result");
import("system.teams");
import("system.util");
import("system.vars");
var myDataArray = [];
myDataArray.push([util.getNewUUID(), false, "mbilda@adito.de"]);
myDataArray.push([util.getNewUUID(), false, "marco@mbsolution2.onmicrosoft.com"]);
result.object(myDataArray);
<?xml version="1.0" encoding="UTF-8"?>
<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.14" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.14">
<name>MSTTeamChannel_entity</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<recordContainer>jdito</recordContainer>
<entityFields>
<entityProvider>
<name>#PROVIDER</name>
</entityProvider>
<entityField>
<name>DESCRIPTION</name>
<title>Channel Beschreibung</title>
<valueProcess>%aditoprj%/entity/MSTTeamChannel_entity/entityfields/description/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>CHANNELNAME</name>
<title>Channel Name</title>
<valueProcess>%aditoprj%/entity/MSTTeamChannel_entity/entityfields/channelname/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>UID</name>
</entityField>
<entityParameter>
<name>CHANNELNAME_param</name>
<expose v="true" />
</entityParameter>
<entityParameter>
<name>CHANNELDESC_param</name>
<expose v="true" />
</entityParameter>
<entityField>
<name>ROWID</name>
</entityField>
<entityParameter>
<name>ROWID_param</name>
<expose v="true" />
</entityParameter>
</entityFields>
<recordContainers>
<jDitoRecordContainer>
<name>jdito</name>
<jDitoRecordAlias>Data_alias</jDitoRecordAlias>
<contentProcess>%aditoprj%/entity/MSTTeamChannel_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
<onInsert>%aditoprj%/entity/MSTTeamChannel_entity/recordcontainers/jdito/onInsert.js</onInsert>
<recordFieldMappings>
<jDitoRecordFieldMapping>
<name>CHANNELNAME.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>DESCRIPTION.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>UID.value</name>
</jDitoRecordFieldMapping>
</recordFieldMappings>
</jDitoRecordContainer>
</recordContainers>
</entity>
import("system.result");
import("system.neon");
import("system.vars");
if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.CHANNELNAME_param") && vars.get("$this.value") == null)
result.string(vars.get("$param.CHANNELNAME_param"));
\ No newline at end of file
import("system.result");
import("system.neon");
import("system.vars");
if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.CHANNELDESC_param") && vars.get("$this.value") == null)
result.string(vars.get("$param.CHANNELDESC_param"));
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment