add either pattern

This commit is contained in:
Peter Maquiran
2024-05-30 12:03:30 +01:00
parent 3c4ec1a432
commit 746db6f583
9 changed files with 410 additions and 85 deletions
@@ -0,0 +1,185 @@
// {
// "serialNumber": "47026_169",
// "taskStatus": null,
// "originator": {
// "email": "dlima@gabinetedigital.local",
// "manager": "",
// "displayName": "",
// "fqn": "K2:gabinetedigital\\dlima",
// "username": "gabinetedigital\\dlima"
// },
// "isDelegated": false,
// "isExtended": false,
// "hasTakenAcknowledge": false,
// "actions": [
// "Reenviar",
// "Descartar"
// ],
// "activityInstanceName": "Editar Evento",
// "workflowInstanceFolio": "MTk4",
// "taskStartDate": "2024-04-10T14:30:39.58",
// "deadline": null,
// "workflowID": 24744,
// "workflowInstanceID": 47026,
// "workflowName": "Agenda\\Agenda Oficial MDGPR",
// "workflowDisplayName": "Agenda Oficial MDGPR",
// "formURL": "http://bpmdev.gabinetedigital.local/Runtime/Runtime/Form/Exchange+Calendar+Meeting+Edition/?SerialNo=47026_169&ProcessInstanceID=&InstanceId=",
// "workflowInstanceDataFields": {
// "Body": "safsafas",
// "Location": "Luanda",
// "Subject": "Event to approve MD",
// "StartDate": "2024-04-10 00:00:00",
// "EndDate": "2024-04-11 05:00:00",
// "Participants": "evilarinho@gabinetedigital.local",
// "CC": "",
// "ReviewUserComment": "{\r\n \"option\": \"save\",\r\n \"note\": \"\"\r\n}",
// "Role": 100000011,
// "MDName": "Eduardo Vilarinho",
// "MDEmail": "evilarinho@gabinetedigital.local",
// "OriginatorComments": "",
// "Status": "Active",
// "TimeZone": "",
// "Agenda": "Oficial",
// "EventType": "Reunião",
// "EventID": "",
// "HasAttachments": true,
// "ParticipantsList": [
// {
// "EmailAddress": "evilarinho@gabinetedigital.local",
// "Name": "Eduardo Vilarinho (evilarinho@gabinetedigital.local)",
// "IsRequired": true,
// "UserType": "GD"
// }
// ],
// "EventOrganizer": "{\"$type\":\"GabineteDigital.k2RESTidentifier_EventPerson, GabineteDigital, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null\",\"EmailAddress\":\"agenda.mdgpr@gabinetedigital.local\",\"Name\":\"Agenda do Ministro e Director do Gabinete do PR\",\"IsRequired\":true}",
// "CreateEvent": "",
// "IsAllDayEvent": false,
// "SerializedItem": "",
// "MDwxUserID": 198,
// "DeserializedItem": "",
// "Message": "Foi adicionado para a sua agenda um evento com o assunto: Event to approve MD, para a vossa aprovação",
// "InstanceId": "AGD_dlima_2024-04-10_14:30:39.453",
// "For Each Result": "",
// "For Each Index": 0,
// "Header": "",
// "RecurringString": "",
// "LastOccurrence": "",
// "OccurrenceType": "-1",
// "SerialNumber": "",
// "For Each Result 1": "false",
// "For Each Index 1": 0,
// "UserEmail": "",
// "LastActivInstanceID": "78",
// "IsRecurring": false,
// "CalendarId": "AQMkAGVhZWZkOGM0LWNiZjMtNGE4Ny05NTY4LWZjMTEANTE2MWU4YmUALgAAAwkDRuPtBKJItLDcu6efhYABACLK19NpGvtHh8oQYZPTW2sAAAIBSgAAAA==",
// "wxUserID": 312
// },
// "totalDocuments": null,
// "Documents": null,
// "PrivateMessage": null
// }
import { z } from "zod";
const ParticipantSchema = z.object({
EmailAddress: z.string(),
Name: z.string(),
IsRequired: z.boolean(),
UserType: z.string()
});
const WorkflowInstanceDataFieldsSchema = z.object({
Body: z.string(),
Location: z.string(),
Subject: z.string(),
StartDate: z.string(),
EndDate: z.string(),
Participants: z.string(),
CC: z.string().nullable(),
ReviewUserComment: z.string(),
Role: z.number(),
MDName: z.string(),
MDEmail: z.string(),
OriginatorComments: z.string().nullable(),
Status: z.string(),
TimeZone: z.string().nullable(),
Agenda: z.string(),
EventType: z.string(),
EventID: z.string().nullable(),
HasAttachments: z.boolean(),
ParticipantsList: z.array(ParticipantSchema),
EventOrganizer: z.string(),
CreateEvent: z.string().nullable(),
IsAllDayEvent: z.boolean(),
SerializedItem: z.string().nullable(),
MDwxUserID: z.number(),
DeserializedItem: z.string().nullable(),
Message: z.string(),
InstanceId: z.string(),
Header: z.string().nullable(),
RecurringString: z.string().nullable(),
LastOccurrence: z.string().nullable(),
OccurrenceType: z.number(),
SerialNumber: z.string().nullable(),
UserEmail: z.string().nullable(),
LastActivInstanceID: z.string(),
IsRecurring: z.boolean(),
CalendarId: z.string(),
wxUserID: z.number()
});
const OriginatorSchema = z.object({
email: z.string(),
manager: z.string().nullable(),
displayName: z.string().nullable(),
fqn: z.string(),
username: z.string()
});
const Attachments = z.object({
Id: z.number().optional(),
ParentId: z.string().optional(),
Source: z.number().optional(),
SourceId: z.string().optional(),
Description: z.string().optional(),
SourceName: z.string().optional(),
CreateDate: z.string().optional(),
Stakeholders: z.string().optional(),
Link: z.string().optional(),
Data: z.null().optional(),
ApplicationId: z.number().optional(),
FileSize: z.number().optional(),
});
const EventToApproveDetails = z.object({
serialNumber: z.string(),
taskStatus: z.string().nullable(),
originator: OriginatorSchema,
isDelegated: z.boolean(),
isExtended: z.boolean(),
hasTakenAcknowledge: z.boolean(),
actions: z.array(z.string()),
activityInstanceName: z.string(),
workflowInstanceFolio: z.string(),
taskStartDate: z.string(),
deadline: z.string().nullable(),
workflowID: z.number(),
workflowInstanceID: z.number(),
workflowName: z.string(),
workflowDisplayName: z.string(),
formURL: z.string().url(),
workflowInstanceDataFields: WorkflowInstanceDataFieldsSchema,
totalDocuments: z.number().nullable(),
Documents: z.array(z.unknown()).nullable(),
PrivateMessage: z.string().nullable(),
Attachments: z.array(Attachments)
});
export type EventToApproveDetails = z.infer<typeof EventToApproveDetails>