<?php

require_once "Libs/autoload.php";
$auth = new Auth();
if (!$auth->isAuthorized()) {
    $auth->forbidden();
    exit(0);
    // Should never get here but just in case...
}
$id = Tools::post('id');
$result = 'OK';
$row = "";
try {
    $applicationStatusModel = new ApplicationStatusModel();
    $applicationStatusModel->setId($id);
    $applicationStatusController = new ApplicationStatusController();
    $applicationStatusController->delete($applicationStatusModel);
} catch (ControllerException $e) {
    $result = "Delete failed. " . $e->getMessage();
}
echo json_encode(array('result' => $result, 'row' => $row)) . PHP_EOL;
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along
 * with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 */
require_once "Libs/autoload.php";
$auth = new Auth();
if (!$auth->isAuthorized()) {
    $auth->forbidden();
    exit(0);
    // Should never get here but just in case...
}
$result = "OK";
$id = Tools::post('id');
$mode = Tools::post('mode');
$html = '';
$applicationStatusListView = new ApplicationStatusListView('html', null);
if ('add' == $mode) {
    $applicationStatusModel = new ApplicationStatusModel();
    $applicationStatusModel->setId($id);
    $html = $applicationStatusListView->displayApplicationStatusRow($applicationStatusModel, $mode);
} else {
    $applicationStatusController = new ApplicationStatusController();
    $applicationStatusModel = $applicationStatusController->get($id);
    $html = $applicationStatusListView->displayApplicationStatusRow($applicationStatusModel, $mode);
}
$result = array('result' => $result, 'row' => $html);
echo json_encode($result) . PHP_EOL;
require_once "Libs/autoload.php";
$auth = new Auth();
if (!$auth->isAuthorized()) {
    $auth->forbidden();
    exit(0);
    // Should never get here but just in case...
}
$statusValue = Tools::post('statusValue');
$style = Tools::post('style');
$isActive = Tools::post('isActive');
$sortKey = Tools::post('sortKey');
$result = 'OK';
$applicationStatusId = '';
$newApplicationStatusModel = null;
try {
    $applicationStatusModel = new ApplicationStatusModel();
    $applicationStatusModel->setStatusValue($statusValue);
    $applicationStatusModel->setStyle($style);
    $applicationStatusModel->setIsActive($isActive);
    $applicationStatusModel->setSortKey($sortKey);
    $applicationStatusController = new ApplicationStatusController();
    $applicationStatusId = $applicationStatusController->add($applicationStatusModel);
    if (!($applicationStatusId > 0)) {
        throw new ControllerException("Add failed.");
    }
    $newApplicationStatusModel = $applicationStatusController->get($applicationStatusId);
    $applicationStatusRowView = new ApplicationStatusListView();
    $row = $applicationStatusRowView->displayApplicationStatusRow($newApplicationStatusModel, 'list');
} catch (ControllerException $e) {
    $applicationStatusRowView = new ApplicationStatusListView('html', null);
    $row = $applicationStatusRowView->displayApplicationStatusRow($newApplicationStatusModel, 'list', 'Add Application Status record failed. ' . $e->getMessage());
    /**
     * Update an application status model
     *
     * @param ApplicationStatusModel $model
     * @see ControllerBase::update()
     */
    public function update($model)
    {
        if ($model->validateForUpdate()) {
            try {
                $query = <<<SQL
UPDATE applicationStatus
   SET statusValue = ?
     , isActive = ?
     , sortKey = ?
     , style = ?
 WHERE id = ?
SQL;
                $id = $model->getId();
                $statusValue = $model->getStatusValue();
                $isActive = $model->getIsActive();
                $sortKey = $model->getSortKey();
                $style = $model->getStyle();
                $stmt = $this->_dbh->prepare($query);
                if (!$stmt) {
                    throw new ControllerException('Prepared statement failed for ' . $query);
                }
                if (!$stmt->bind_param('siisi', $statusValue, $isActive, $sortKey, $style, $id)) {
                    throw new ControllerException('Binding parameters for prepared statement failed.');
                }
                if (!$stmt->execute()) {
                    throw new ControllerException('Failed to execute UPDATE statement. (' . $this->_dbh->error . ')');
                }
                /**
                 * @SuppressWarnings checkAliases
                 */
                if (!$stmt->close()) {
                    throw new ControllerException('Something broke while trying to close the prepared statement.');
                }
                return $id;
            } catch (Exception $e) {
                throw new ControllerException($e->getMessage());
            }
        } else {
            throw new ControllerException("Invalid data.");
        }
    }
    /**
     * Return the display of an application status table row
     *
     * @param ApplicationStatusModel $applicationStatusModel
     * @param string $displayMode 'add', 'edit', 'delete', 'list'
     * @return string
     */
    public function displayApplicationStatusRow($applicationStatusModel, $displayMode)
    {
        $id = $applicationStatusModel->getId();
        $statusValue = $applicationStatusModel->getStatusValue();
        $style = $applicationStatusModel->getStyle();
        $isActive = $applicationStatusModel->getIsActive();
        $isActiveChecked = $isActive ? "checked=\"checked\"" : "";
        $isActiveDisplay = $isActive ? "Yes" : "No";
        $sortKey = $applicationStatusModel->getSortKey();
        $created = $applicationStatusModel->getCreated();
        $updated = $applicationStatusModel->getUpdated();
        switch ($displayMode) {
            case 'add':
                return <<<RETVAL
      <td><button type="button" id="SaveButtonix{$id}" onclick="saveAddApplicationStatus( '{$id}' )">Save</button>
          <button type="button" id="CancelButtonix{$id}" onclick="deleteRow( 'ix{$id}' )">Cancel</button>
      </td>
      <td><input type="text" id="statusValueix{$id}" value="{$statusValue}" /></td>
      <td><input type="text" id="styleix{$id}" value="{$style}" /></td>
      <td><input type="checkbox" id="isActiveix{$id}" {$isActiveChecked} /></td>
      <td><input type="text" id="sortKeyix{$id}" value="{$sortKey}" /></td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>

RETVAL;
            case 'update':
                return <<<RETVAL
      <td><button type="button" id="SaveButton{$id}" onclick="saveUpdateApplicationStatus( '{$id}' )">Save</button>
          <button type="button" id="CancelButton{$id}" onclick="cancelUpdateApplicationStatusRow( '{$id}' )">Cancel</button>
      </td>
      <td><input type="text" id="statusValue{$id}" value="{$statusValue}" /></td>
      <td><input type="text" id="style{$id}" value="{$style}" /></td>
      <td><input type="checkbox" id="isActive{$id}" {$isActiveChecked} /></td>
      <td><input type="text" id="sortKey{$id}" value="{$sortKey}" /></td>
      <td>{$created}</td>
      <td>{$updated}</td>

RETVAL;
            case 'delete':
                return <<<RETVAL
      <td><button type="button" id="DeleteButton{$id}" onclick="doDeleteApplicationStatus( '{$id}' )">Confirm Delete</button>
          <button type="button" id="CancelButton{$id}" onclick="cancelUpdateApplicationStatusRow( '{$id}' )">Cancel</button>
      </td>
      <td>{$statusValue}</td>
      <td>{$style}</td>
      <td>{$isActiveDisplay}</td>
      <td>{$sortKey}</td>
      <td>{$created}</td>
      <td>{$updated}</td>

RETVAL;
            case 'list':
                return <<<RETVAL
      <td><button type="button" id="UpdateButton{$id}" onclick="updateApplicationStatus( '{$id}' )">Update</button>
          <button type="button" id="DeleteButton{$id}" onclick="deleteApplicationStatus( '{$id}' )">Delete</button>
      </td>
      <td style="{$style}">{$statusValue}</td>
      <td>{$style}</td>
      <td>{$isActiveDisplay}</td>
      <td>{$sortKey}</td>
      <td>{$created}</td>
      <td>{$updated}</td>

RETVAL;
        }
        return "";
    }