getEnvironment() == "thetool") { $table = $this->table("WorkerPermission"); $table->addColumn("canRMLAdmin", "enum", ["null" => false, "values" => ['false', 'true'], "default" => "false", "after" => "canSuperexpert"]); $table->update(); } if ($this->getEnvironment() == "addressdb") { // Create RMLWorkorderCompany table $rmlWorkorderCompany = $this->table('RMLWorkorderCompany', ['id' => 'id', 'primary_key' => 'id']); $rmlWorkorderCompany->addColumn('addressId', 'integer', ['null' => false, 'comment' => 'FK to the Address table, identifying the company.']) ->addColumn('name', 'string', ['limit' => 255, 'null' => false, 'comment' => 'Cached company name for easy display.']) ->addColumn('create', 'integer', ['null' => false]) ->addColumn('createBy', 'integer', ['null' => false]) ->addIndex(['addressId'], ['unique' => true, 'name' => 'addressId_unique']) ->create(); // Create RMLWorkorder table $rmlWorkorder = $this->table('RMLWorkorder', ['id' => 'id', 'primary_key' => 'id']); $rmlWorkorder->addColumn('preorderId', 'integer', ['null' => false, 'comment' => 'FK to the Preorder that triggered this work order.']) ->addColumn('companyId', 'integer', ['null' => true, 'comment' => 'FK to RMLWorkorderCompany, assigned by an RML admin.']) ->addColumn('status', 'string', ['limit' => 50, 'null' => false, 'default' => 'new', 'comment' => 'Workflow status: new, assigned, scheduled, documented, completed.']) ->addColumn('assignmentDate', 'integer', ['null' => true, 'comment' => 'Timestamp when the order was assigned.']) ->addColumn('deadlineDate', 'integer', ['null' => true, 'comment' => 'Timestamp for the 6-week completion deadline.']) ->addColumn('appointmentDate', 'integer', ['null' => true, 'comment' => 'The date scheduled by the company for the work.']) ->addColumn('create', 'integer', ['null' => false]) ->addColumn('createBy', 'integer', ['null' => false]) ->addIndex(['preorderId'], ['name' => 'preorderId_idx']) ->addIndex(['companyId'], ['name' => 'companyId_idx']) ->addIndex(['status'], ['name' => 'status_idx']) ->create(); // Create RMLWorkorderDocumentation table $rmlWorkorderDocumentation = $this->table('RMLWorkorderDocumentation', ['id' => 'id', 'primary_key' => 'id']); $rmlWorkorderDocumentation->addColumn('workorderId', 'integer', ['null' => false, 'comment' => 'FK to the RMLWorkorder.']) ->addColumn('fileId', 'integer', ['null' => false, 'comment' => 'FK to the main File table after upload.']) ->addColumn('description', 'text', ['null' => true, 'comment' => 'User-provided description for the file.']) ->addColumn('documentType', 'string', ['limit' => 100, 'null' => false, 'comment' => 'Categorizes the upload, e.g., photo_before, measurement_protocol.']) ->addColumn('create', 'integer', ['null' => false]) ->addColumn('createBy', 'integer', ['null' => false]) ->addIndex(['workorderId'], ['name' => 'workorderId_idx']) ->create(); } } public function down(): void { if ($this->getEnvironment() == "thetool") { $table = $this->table("WorkerPermission"); $table->removeColumn("canRMLAdmin"); $table->save(); } if ($this->getEnvironment() == "addressdb") { // Drop tables in reverse order of creation (or dependency) $this->table('RMLWorkorderDocumentation')->drop(); $this->table('RMLWorkorder')->drop(); $this->table('RMLWorkorderCompany')->drop(); } } }