{
    "fields": {
        "name": {
            "type": "varchar",
            "required": true,
            "pattern": "$noBadCharacters"
        },
        "status": {
            "type": "enum",
            "options": ["Planned", "Held", "Not Held"],
            "default": "Planned",
            "style": {
                "Held": "success",
                "Not Held": "info"
            },
            "displayAsLabel": true,
            "labelType": "state",
            "audited": true,
            "customizationOptionsReferenceDisabled": true
        },
        "dateStart": {
            "type": "datetimeOptional",
            "view": "crm:views/meeting/fields/date-start",
            "required": true,
            "default": "javascript: return this.dateTime.getNow(15);",
            "audited": true
        },
        "dateEnd": {
            "type": "datetimeOptional",
            "view": "crm:views/meeting/fields/date-end",
            "required": true,
            "after": "dateStart",
            "suppressValidationList": ["required"]
        },
        "isAllDay": {
            "type": "bool",
            "layoutListDisabled": true,
            "layoutDetailDisabled": true,
            "layoutMassUpdateDisabled": true
        },
        "duration": {
            "type": "duration",
            "start": "dateStart",
            "end": "dateEnd",
            "options": [900, 1800, 3600, 7200, 10800, 86400],
            "default": 3600,
            "notStorable": true,
            "select": {
                "select": "TIMESTAMPDIFF_SECOND:(dateStart, dateEnd)"
            },
            "order": {
                "order": [
                    ["TIMESTAMPDIFF_SECOND:(dateStart, dateEnd)", "{direction}"]
                ]
            }
        },
        "reminders": {
            "type": "jsonArray",
            "notStorable": true,
            "orderDisabled": true,
            "view": "crm:views/meeting/fields/reminders",
            "layoutListDisabled": true,
            "validatorClassNameList": [
                "Espo\\Modules\\Crm\\Classes\\FieldValidators\\Event\\Reminders\\Valid",
                "Espo\\Modules\\Crm\\Classes\\FieldValidators\\Event\\Reminders\\MaxCount"
            ],
            "dynamicLogicDisabled": true,
            "duplicateIgnore": true
        },
        "description": {
            "type": "text"
        },
        "parent": {
            "type": "linkParent",
            "entityList": ["Account", "Lead", "Contact", "Opportunity", "Case"]
        },
        "account": {
            "type": "link",
            "readOnly": true,
            "customizationReadOnlyDisabled": true
        },
        "uid": {
            "type": "varchar",
            "maxLength": 255,
            "index": true,
            "readOnly": true,
            "duplicateIgnore": true
        },
        "joinUrl": {
            "type": "url",
            "dbType": "text",
            "maxLength": 320,
            "readOnly": true,
            "copyToClipboard": true,
            "duplicateIgnore": true,
            "default": null,
            "customizationDefaultDisabled": true
        },
        "externalService": {
            "type": "enum",
            "maxLength": 100,
            "readOnlyAfterCreate": true,
            "fieldManagerParamList": [
                "tooltipText"
            ],
            "isSorted": true,
            "validatorClassNameList": [
                "Espo\\Modules\\Crm\\Classes\\FieldValidators\\Meeting\\ExternalService\\Valid"
            ],
            "view": "modules/crm/views/meeting/fields/external-service",
            "dynamicLogicDisabled": true
        },
        "acceptanceStatus": {
            "type": "enum",
            "notStorable": true,
            "orderDisabled": true,
            "options": ["None", "Accepted", "Tentative", "Declined"],
            "style": {
                "Accepted": "success",
                "Declined": "danger",
                "Tentative": "warning"
            },
            "layoutDetailDisabled": true,
            "layoutMassUpdateDisabled": true,
            "importDisabled": true,
            "exportDisabled": true,
            "customizationDefaultDisabled": true,
            "customizationRequiredDisabled": true,
            "customizationIsSortedDisabled": true,
            "customizationReadOnlyDisabled": true,
            "customizationAuditedDisabled": true,
            "customizationOptionsReferenceDisabled": true,
            "directAccessDisabled": true,
            "filtersEnabled": true,
            "where": {
                "=": {
                    "whereClause": {
                        "OR": [
                            {
                                "id=s": {
                                    "from": "ContactMeeting",
                                    "select": ["meetingId"],
                                    "whereClause": {
                                        "deleted": false,
                                        "status": "{value}"
                                    }
                                }
                            },
                            {
                                "id=s": {
                                    "from": "LeadMeeting",
                                    "select": ["meetingId"],
                                    "whereClause": {
                                        "deleted": false,
                                        "status": "{value}"
                                    }
                                }
                            },
                            {
                                "id=s": {
                                    "from": "MeetingUser",
                                    "select": ["meetingId"],
                                    "whereClause": {
                                        "deleted": false,
                                        "status": "{value}"
                                    }
                                }
                            }
                        ]
                    }
                },
                "<>": {
                    "whereClause": {
                        "AND": [
                            {
                                "id!=s": {
                                    "from": "ContactMeeting",
                                    "select": ["meetingId"],
                                    "whereClause": {
                                        "deleted": false,
                                        "status": "{value}"
                                    }
                                }
                            },
                            {
                                "id!=s": {
                                    "from": "LeadMeeting",
                                    "select": ["meetingId"],
                                    "whereClause": {
                                        "deleted": false,
                                        "status": "{value}"
                                    }
                                }
                            },
                            {
                                "id!=s": {
                                    "from": "MeetingUser",
                                    "select": ["meetingId"],
                                    "whereClause": {
                                        "deleted": false,
                                        "status": "{value}"
                                    }
                                }
                            }
                        ]
                    }
                },
                "IN": {
                    "whereClause": {
                        "OR": [
                            {
                                "id=s": {
                                    "from": "ContactMeeting",
                                    "select": ["meetingId"],
                                    "whereClause": {
                                        "deleted": false,
                                        "status": "{value}"
                                    }
                                }
                            },
                            {
                                "id=s": {
                                    "from": "LeadMeeting",
                                    "select": ["meetingId"],
                                    "whereClause": {
                                        "deleted": false,
                                        "status": "{value}"
                                    }
                                }
                            },
                            {
                                "id=s": {
                                    "from": "MeetingUser",
                                    "select": ["meetingId"],
                                    "whereClause": {
                                        "deleted": false,
                                        "status": "{value}"
                                    }
                                }
                            }
                        ]
                    }
                },
                "NOT IN": {
                    "whereClause": {
                        "AND": [
                            {
                                "id!=s": {
                                    "from": "ContactMeeting",
                                    "select": ["meetingId"],
                                    "whereClause": {
                                        "deleted": false,
                                        "status": "{value}"
                                    }
                                }
                            },
                            {
                                "id!=s": {
                                    "from": "LeadMeeting",
                                    "select": ["meetingId"],
                                    "whereClause": {
                                        "deleted": false,
                                        "status": "{value}"
                                    }
                                }
                            },
                            {
                                "id!=s": {
                                    "from": "MeetingUser",
                                    "select": ["meetingId"],
                                    "whereClause": {
                                        "deleted": false,
                                        "status": "{value}"
                                    }
                                }
                            }
                        ]
                    }
                }
            },
            "view": "crm:views/meeting/fields/acceptance-status"
        },
        "users": {
            "type": "linkMultiple",
            "view": "crm:views/meeting/fields/users",
            "layoutDetailDisabled": true,
            "layoutListDisabled": true,
            "columns": {
                "status": "acceptanceStatus"
            },
            "additionalAttributeList": ["columns"],
            "orderBy": "name",
            "audited": true,
            "duplicatorClassName": "Espo\\Modules\\Crm\\Classes\\FieldDuplicators\\Meeting\\Attendees"
        },
        "contacts": {
            "type": "linkMultiple",
            "layoutDetailDisabled": true,
            "layoutListDisabled": true,
            "view": "crm:views/meeting/fields/contacts",
            "columns": {
                "status": "acceptanceStatus"
            },
            "additionalAttributeList": ["columns"],
            "orderBy": "name",
            "audited": true,
            "duplicatorClassName": "Espo\\Modules\\Crm\\Classes\\FieldDuplicators\\Meeting\\Attendees"
        },
        "leads": {
            "type": "linkMultiple",
            "view": "crm:views/meeting/fields/attendees",
            "layoutDetailDisabled": true,
            "layoutListDisabled": true,
            "columns": {
                "status": "acceptanceStatus"
            },
            "additionalAttributeList": ["columns"],
            "orderBy": "name",
            "audited": true,
            "duplicatorClassName": "Espo\\Modules\\Crm\\Classes\\FieldDuplicators\\Meeting\\Attendees"
        },
        "sourceEmail": {
            "type": "link",
            "notStorable": true,
            "orderDisabled": true,
            "layoutDetailDisabled": true,
            "layoutListDisabled": true,
            "layoutMassUpdateDisabled": true,
            "layoutFiltersDisabled": true,
            "exportDisabled": true,
            "importDisabled": true,
            "entity": "Email",
            "directAccessDisabled": true
        },
        "createdAt": {
            "type": "datetime",
            "readOnly": true,
            "fieldManagerParamList": [
                "useNumericFormat"
            ]
        },
        "modifiedAt": {
            "type": "datetime",
            "readOnly": true,
            "fieldManagerParamList": [
                "useNumericFormat"
            ]
        },
        "createdBy": {
            "type": "link",
            "readOnly": true,
            "view": "views/fields/user",
            "fieldManagerParamList": []
        },
        "modifiedBy": {
            "type": "link",
            "readOnly": true,
            "view": "views/fields/user",
            "fieldManagerParamList": []
        },
        "assignedUser": {
            "type": "link",
            "required": true,
            "view": "views/fields/assigned-user"
        },
        "teams": {
            "type": "linkMultiple",
            "view": "views/fields/teams"
        }
    },
    "links": {
        "account": {
            "type": "belongsTo",
            "entity": "Account"
        },
        "createdBy": {
            "type": "belongsTo",
            "entity": "User"
        },
        "modifiedBy": {
            "type": "belongsTo",
            "entity": "User"
        },
        "assignedUser": {
            "type": "belongsTo",
            "entity": "User"
        },
        "teams": {
            "type": "hasMany",
            "entity": "Team",
            "relationName": "entityTeam",
            "layoutRelationshipsDisabled": true
        },
        "users": {
            "type": "hasMany",
            "entity": "User",
            "foreign": "meetings",
            "additionalColumns": {
                "status": {
                    "type": "varchar",
                    "len": "36",
                    "default": "None"
                }
            },
            "columnAttributeMap": {
                "status": "acceptanceStatus"
            }
        },
        "contacts": {
            "type": "hasMany",
            "entity": "Contact",
            "foreign": "meetings",
            "additionalColumns": {
                "status": {
                    "type": "varchar",
                    "len": "36",
                    "default": "None"
                }
            },
            "columnAttributeMap": {
                "status": "acceptanceStatus"
            }
        },
        "leads": {
            "type": "hasMany",
            "entity": "Lead",
            "foreign": "meetings",
            "additionalColumns": {
                "status": {
                    "type": "varchar",
                    "len": "36",
                    "default": "None"
                }
            },
            "columnAttributeMap": {
                "status": "acceptanceStatus"
            }
        },
        "parent": {
            "type": "belongsToParent",
            "foreign": "meetings"
        }
    },
    "collection": {
        "orderBy": "dateStart",
        "order": "desc"
    },
    "indexes": {
        "dateStartStatus": {
            "columns": ["dateStart", "status"]
        },
        "dateStart": {
            "columns": ["dateStart", "deleted"]
        },
        "status": {
            "columns": ["status", "deleted"]
        },
        "assignedUser": {
            "columns": ["assignedUserId", "deleted"]
        },
        "assignedUserStatus": {
            "columns": ["assignedUserId", "status"]
        }
    },
    "repositoryClassName": "Espo\\Core\\Repositories\\Event"
}
