public function getCMSFields()
 {
     $f = parent::getCMSFields();
     // hack
     $this->SummitID = $_REQUEST['SummitID'];
     $this->VenueID = $_REQUEST['VenueID'];
     $f->addFieldToTab('Root.Main', new NumericField('Capacity', 'Capacity'));
     $f->addFieldToTab('Root.Main', new CheckboxField('OverrideBlackouts', 'Overrides Blackouts'));
     $f->addFieldToTab('Root.Main', new HiddenField('VenueID', 'VenueID'));
     $f->addFieldToTab('Root.Main', $ddl_floor = new DropdownField('FloorID', 'Floor', SummitVenueFloor::get()->filter('VenueID', $this->VenueID)->map("ID", "FullName")));
     $ddl_floor->setEmptyString("-- SELECT A FLOOR --");
     $f->addFieldToTab('Root.Main', $upload_field = new UploadField('Image', 'Map'));
     $upload_field->setAllowedMaxFileNumber(1);
     $upload_field->setFolderName(sprintf('summits/%s/locations/%s/rooms/', $_REQUEST['SummitID'], $_REQUEST['LocationID']));
     $upload_field->getValidator()->setAllowedMaxFileSize(array('*' => 512 * 1024));
     if ($this->ID > 0) {
         $config = GridFieldConfig_RecordEditor::create();
         $gridField = new GridField('Metrics', 'Metrics', $this->Metrics(), $config);
         $f->addFieldToTab('Root.Main', $gridField);
     }
     return $f;
 }
 /**
  * @return ValidationResult
  */
 protected function validate()
 {
     $valid = parent::validate();
     if (!$valid->valid()) {
         return $valid;
     }
     $name = trim($this->Name);
     if (empty($name)) {
         return $valid->error('Name is mandatory!');
     }
     $number = intval($this->Number);
     if ($number < 0) {
         return $valid->error('Number should be greather or equal than zero!');
     }
     if (SummitVenueFloor::get()->filter(["VenueID" => $this->VenueID, "ID:ExactMatch:not" => $this->ID, "Number" => $this->Number])->count() > 0) {
         return $valid->error(sprintf("There is already a floor with that number on venue %s", $this->VenueID));
     }
     if (SummitVenueFloor::get()->filter(["VenueID" => $this->VenueID, "ID:ExactMatch:not" => $this->ID, "Name" => $this->Name])->count() > 0) {
         return $valid->error(sprintf("There is already a floor with that name on venue %s", $this->VenueID));
     }
     return $valid;
 }