You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							101 lines
						
					
					
						
							3.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							101 lines
						
					
					
						
							3.3 KiB
						
					
					
				
								<?phpSchemaDocumentChildField
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								namespace Darksparrow\AuxiliumSchemaBuilder\Examples\SchemaBuilder\Schemas;
							 | 
						|
								require_once __DIR__ . "/../../vendor/autoload.php";
							 | 
						|
								
							 | 
						|
								use Darksparrow\AuxiliumSchemaBuilder\Attributes\SchemaDocumentChildField;
							 | 
						|
								use Darksparrow\AuxiliumSchemaBuilder\Enumerators\SchemaFieldExistence;
							 | 
						|
								use Darksparrow\AuxiliumSchemaBuilder\Attributes\SchemaDocument;
							 | 
						|
								use Darksparrow\AuxiliumSchemaBuilder\Attributes\SchemaDocumentField;
							 | 
						|
								use Darksparrow\AuxiliumSchemaBuilder\Interfaces\SchemaDocumentInterface;
							 | 
						|
								
							 | 
						|
								#[SchemaDocument(
							 | 
						|
								    Name: "Message",
							 | 
						|
								    MaxSize: 0,
							 | 
						|
								    Comment: "The organisation object itself SHOULD not have a value",
							 | 
						|
								    MimeType: "message/rfc822",
							 | 
						|
								)]
							 | 
						|
								class Organisation implements SchemaDocumentInterface
							 | 
						|
								{
							 | 
						|
								    #[SchemaDocumentField(
							 | 
						|
								        Name: "name",
							 | 
						|
								        Existence: SchemaFieldExistence::MUST,
							 | 
						|
								        Comment: "This MUST be the organisation's name",
							 | 
						|
								        MaxSize: 2048,
							 | 
						|
								        MimeType: "test/plain",
							 | 
						|
								        Children: [
							 | 
						|
								            new SchemaDocumentField(
							 | 
						|
								                Name: "trading_as",
							 | 
						|
								                Existence: SchemaFieldExistence::SHOULD,
							 | 
						|
								                MaxSize: 256,
							 | 
						|
								                MIMEType: "text/plain",
							 | 
						|
								                Comment: 	"This SHOULD be the organisation's short trading name, or the abbreviation they would usually go by",
							 | 
						|
								            )
							 | 
						|
								        ]
							 | 
						|
								    )]
							 | 
						|
								    public string $Name;
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    #[SchemaDocumentField(
							 | 
						|
								        Name: "departments",
							 | 
						|
								        Existence: SchemaFieldExistence::SHOULD,
							 | 
						|
								        Comment: "This SHOULD be an 'array node' of all sub-organisations if applicable",
							 | 
						|
								        ValidSchemas: [
							 | 
						|
								            "https://schemas.auxiliumsoftware.co.uk/v1/collection.json",
							 | 
						|
								        ],
							 | 
						|
								        MaxSize: 0,
							 | 
						|
								        Child: new SchemaDocumentChildField(
							 | 
						|
								            Comment: null,
							 | 
						|
								            ValidSchemas: [
							 | 
						|
								                "https://schemas.auxiliumsoftware.co.uk/v1/organisation.json",
							 | 
						|
								            ],
							 | 
						|
								        ),
							 | 
						|
								    )]
							 | 
						|
								    public array $Departments;
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    #[SchemaDocumentField(
							 | 
						|
								        Name: "cases",
							 | 
						|
								        Existence: SchemaFieldExistence::SHOULD,
							 | 
						|
								        Comment: "This SHOULD be an 'array node' of all the cases the organisation is either directly working on or the client of",
							 | 
						|
								        ValidSchemas: [
							 | 
						|
								            "https://schemas.auxiliumsoftware.co.uk/v1/collection.json",
							 | 
						|
								        ],
							 | 
						|
								        MaxSize: 0,
							 | 
						|
								        Child: new SchemaDocumentChildField(
							 | 
						|
								            Comment: null,
							 | 
						|
								            ValidSchemas: [
							 | 
						|
								                "https://schemas.auxiliumsoftware.co.uk/v1/case.json",
							 | 
						|
								            ],
							 | 
						|
								        ),
							 | 
						|
								    )]
							 | 
						|
								    public array $Cases;
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    #[SchemaDocumentField(
							 | 
						|
								        Name: "staff",
							 | 
						|
								        Existence: SchemaFieldExistence::SHOULD,
							 | 
						|
								        Comment: 	"This SHOULD be an 'array node' of all the staff that cannot be categorised into departments, or in the case of small organisations with no departments, all staff",
							 | 
						|
								        ValidSchemas: [
							 | 
						|
								            "https://schemas.auxiliumsoftware.co.uk/v1/collection.json",
							 | 
						|
								        ],
							 | 
						|
								        MaxSize: 0,
							 | 
						|
								        Child: new SchemaDocumentChildField(
							 | 
						|
								            Comment: null,
							 | 
						|
								            ValidSchemas: [
							 | 
						|
								                "https://schemas.auxiliumsoftware.co.uk/v1/user.json",
							 | 
						|
								            ],
							 | 
						|
								        ),
							 | 
						|
								    )]
							 | 
						|
								    public array $Staff;
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    public function __construct(array $data)
							 | 
						|
								    {
							 | 
						|
								        $this->Name = $data["name"];
							 | 
						|
								        $this->Departments = $data["departments"];
							 | 
						|
								        $this->Cases = $data["cases"];
							 | 
						|
								        $this->Staff = $data["staff"];
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |