/**
  * @param anvilDataConnectionAbstract $dataConnection
  *
  * @return DateTime|float|int|null|string
  */
 public function toSave($dataConnection)
 {
     $return = '';
     switch ($this->fieldType) {
         case self::DATA_TYPE_BOOLEAN:
             $return = $dataConnection->dbBoolean($this->_value);
             break;
         case self::DATA_TYPE_DATE:
             $value = isset($this->_value) ? $this->_value : ($this->allowNull ? null : $this->defaultValue);
             $return = $value;
             if (!is_null($value)) {
                 $value = new DateTime($value, new DateTimeZone('UTC'));
                 $return = $value->format($dataConnection->dateFormat);
                 $return = $dataConnection->dbDate($return);
             }
             break;
         case self::DATA_TYPE_DTS:
             $value = !empty($this->_value) ? $this->_value : ($this->allowNull ? null : $this->defaultValue);
             $return = $value;
             if (!is_null($value)) {
                 $value = new DateTime($value, new DateTimeZone('UTC'));
                 $return = $value->format($dataConnection->dtsFormat);
                 $return = $dataConnection->dbDTS($return);
             }
             break;
         case self::DATA_TYPE_PHONE:
             $value = '';
             if (isset($this->_value)) {
                 $pattern = '/[^0-9]*/';
                 $value = preg_replace($pattern, '', $this->_value);
             }
             $return = $value != '' ? $dataConnection->dbString($value) : ($this->allowNull ? null : (isset($this->defaultValue) ? $dataConnection->dbString($this->defaultValue) : $dataConnection->dbString('')));
             if ($return == '') {
                 $return = null;
             }
             break;
         case self::DATA_TYPE_STRING:
             $return = isset($this->_value) ? $dataConnection->dbString($this->_value) : ($this->allowNull ? null : (isset($this->defaultValue) ? $dataConnection->dbString($this->defaultValue) : $dataConnection->dbString('')));
             if ($return == '') {
                 $return = null;
             }
             break;
         case self::DATA_TYPE_ADD_DTS:
             $return = 'NOW()';
             break;
         case self::DATA_TYPE_DECIMAL:
         case self::DATA_TYPE_FLOAT:
             $return = isset($this->_value) ? floatval($this->_value) : ($this->allowNull ? null : (isset($this->defaultValue) ? $this->defaultValue : 0));
             break;
         case self::DATA_TYPE_NUMBER:
         default:
             $return = isset($this->_value) ? intval($this->_value) : ($this->allowNull ? null : (isset($this->defaultValue) ? $this->defaultValue : 0));
             break;
     }
     if (is_null($return)) {
         $return = 'null';
     }
     return $return;
 }