Untitled

 avatar
unknown
plain_text
9 months ago
58 kB
4
Indexable
<?php

use NoRiddle\Framework\Html\HtmlAccordion;
use NoRiddle\Framework\Html\HtmlClasses;
use NoRiddle\Framework\Html\HtmlDoc;
use NoRiddle\Framework\Html\HtmlElement;
use NoRiddle\Framework\Html\HtmlHead;
use NoRiddle\Framework\Html\HtmlList;
use NoRiddle\Framework\Html\HtmlPager;
use NoRiddle\Framework\Html\HtmlTable;
use NoRiddle\Framework\Html\JMenu;
use NoRiddle\Framework\Html\JQueryHelper;
use NoRiddle\Framework\Html\LookupHelper;
use NoRiddle\Framework\Html\Script;
use NoRiddle\Framework\Html\TableColumn;
use NoRiddle\Framework\Model\ModelDataCaches;
use NoRiddle\Framework\Model\WhereClause;
use NoRiddle\Framework\Util\Csv;
use NoRiddle\Framework\Util\DateUtil;
use NoRiddle\Framework\Util\EnumBase;
use NoRiddle\Framework\Util\Request;
use NoRiddle\Framework\Util\Server;
use NoRiddle\Framework\Util\ServerCodes;
use NoRiddle\Framework\Util\Session;
use NoRiddle\Framework\Util\SmartsearchHelper;
use NoRiddle\Framework\Util\SqlCriteria;
use NoRiddle\Framework\Util\Utility;
use NoRiddle\Gloculus\Config\PrivilegeCodes;
use NoRiddle\Gloculus\Controller\CommchannelController;
use NoRiddle\Gloculus\Controller\CompanyController;
use NoRiddle\Gloculus\Controller\CompanydepartmentController;
use NoRiddle\Gloculus\Controller\EmployeeController;
use NoRiddle\Gloculus\Controller\EmployeepositionController;
use NoRiddle\Gloculus\Controller\EmployeestatusController;
use NoRiddle\Gloculus\Controller\MemberController;
use NoRiddle\Gloculus\Controller\PersonController;
use NoRiddle\Gloculus\Html\HtmlLinks;
use NoRiddle\Gloculus\Html\HtmlTemplateViewParts;
use NoRiddle\Gloculus\Html\HtmlUtil;
use NoRiddle\Gloculus\Json\JsonHelper;
use NoRiddle\Gloculus\Model\CompanydepartmentModel;
use NoRiddle\Gloculus\Model\CompanyModel;
use NoRiddle\Gloculus\Model\EmployeepositionModel;
use NoRiddle\Gloculus\Model\EmployeestatusModel;
use NoRiddle\Gloculus\Model\MemberModel;
use NoRiddle\Gloculus\Model\PersonModel;
use NoRiddle\Gloculus\Model\QryEmployeeModel;

//select * from information_schema.columns where table_name = 'employee' and table_schema = 'gloculus'order by ordinal_position
require_once dirname(realpath(__FILE__)) . '\..\..\includes.php';

class F extends EnumBase {

    const showsql = 'showsql';
    const smartsearch = 'smartsearch';
    const userdateformat = 'userdateformat';
    const submit = 'submitFrm';
    const member_id = 'member_id';
    const sql_criteria = 'sql_criteria';
    const PAGER = 'pager';
    /**/
    const id = 'id';
    const lname = QryEmployeeModel::lname;
    const fname = QryEmployeeModel::fname;
    const company_id = QryEmployeeModel::company_id;
    const companydepartment_id = QryEmployeeModel::companydepartment_id;
    const employeeposition_id = QryEmployeeModel::employeeposition_id;
    const user_member_id = QryEmployeeModel::user_member_id;
    const supervisor_employee_id = QryEmployeeModel::supervisor_employee_id;
    const employeestatus_id = QryEmployeeModel::employeestatus_id;
}

$modelName = ucfirst(QryEmployeeModel::M_NAME);
$modelNameLCase = strtolower($modelName);

$pageStartTime = microtime(true);
Session::sec_session_start();
if (!MemberController::login_check($pdo)) {
    $uri = Server::v(ServerCodes::REQUEST_URI);
    header("Location: ../../index.php?error=ERR_LOGIN_REQUIRED&redirecturl={$uri}");
    exit();
}
Session::SessionWriteClose();

$cache = new ModelDataCaches();
$member_id = Session::GetMemberId();
$allow = JsonHelper::CheckPrivilege($pdo, $member_id, PrivilegeCodes::CAN_VIEW_EMPLOYEE);
if (!$allow) {
    header("Location: ../../error.php?err=ERR_PRIVILEGE&descr=Need: . PrivilegeCodes::CAN_VIEW_EMPLOYEE");
    exit();
}
$uri = Server::v(ServerCodes::REQUEST_URI);
$userDateformat = Session::GetMemberDateformat();
$submit = Request::PostOrGet_STRING(F::submit);
$isPost = Request::IsPost();
$pager = HtmlPager::CreateFromRequest($isPost ? $_POST : $_GET);
$showSql = Request::Get_INT(F::showsql, Session::GetDebugMode());
if ($isPost) {
    unset($_GET);
}

// START Criteria Array
$criteria = array();

$criteria[F::showsql] = Request::PostOrGet_INT(F::showsql, $showSql);
$criteria[F::member_id] = Session::GetMemberId();
$criteria[F::smartsearch] = trim(Request::PostOrGet_STRING(F::smartsearch));
$criteria[F::userdateformat] = Session::GetMemberDateformat();
$criteria[F::PAGER] = $pager;
$str = Request::PostOrGet_SQLSTRING(F::sql_criteria);
$str = htmlspecialchars_decode($str, ENT_QUOTES);
$criteria[F::sql_criteria] = $str;

$criteria[F::id] = Request::PostOrGet_INT(F::id, '');
$criteria[F::lname] = Request::PostOrGet_STRING(F::lname);
$criteria[F::fname] = Request::PostOrGet_STRING(F::fname);
$criteria[F::company_id] = Request::PostOrGet_SHIPMANAGER_COMPANY_ID($pdo, F::company_id);
$criteria[F::companydepartment_id] = Request::PostOrGet_INT(F::companydepartment_id);
$criteria[F::employeeposition_id] = Request::PostOrGet_INT(F::employeeposition_id);
$criteria[F::user_member_id] = Request::PostOrGet_INT(F::user_member_id);
$criteria[F::supervisor_employee_id] = Request::PostOrGet_INT(F::supervisor_employee_id);
$criteria[F::employeestatus_id] = Request::PostOrGet_INT(F::employeestatus_id);
// END Criteria Array

$title = "Employees";
$newUrlParameters = new Csv('&');
$fld = F::employeeposition_id;
$fldValue = Utility::Nz($criteria, $fld);
if ($fldValue) {
    $newUrlParameters->Add("{$fld}={$fldValue}");
}
$fld = F::companydepartment_id;
$fldValue = Utility::Nz($criteria, $fld);
if ($fldValue) {
    $newUrlParameters->Add("{$fld}={$fldValue}");
}
$fld = F::company_id;
$fldValue = Utility::Nz($criteria, $fld);
if ($fldValue) {
    $newUrlParameters->Add("{$fld}={$fldValue}");
}
$fld = F::employeestatus_id;
$fldValue = Utility::Nz($criteria, $fld);
if ($fldValue) {
    $newUrlParameters->Add("{$fld}={$fldValue}");
}

$model = GetModel($pdo, $cache, $criteria);

function GetModel(PDO $pdo, ModelDataCaches $cache, $criteria) {
    $member_id = $criteria[F::member_id];
    $model = new QryEmployeeModel(null, $pdo);
    $andClause = WhereClause::GetAndClause();

    $fldId = F::sql_criteria;
    $fldValue = $criteria[$fldId];
    $andClause->AddCondition($fldValue);

    $fldId = F::id;
    $fldValue = $criteria[$fldId];
    $andClause->AddCondition(SqlCriteria::FieldEqualInteger($fldId, $fldValue));

    //moved next on criteria already
//    $attachedShipmanagerCompanyId = Session::GetMembersAttachedShipmanagerCompanyId();
//    if ($attachedShipmanagerCompanyId) {
//        $fldId = F::company_id;
//        $fldValue = $criteria[$fldId];
//        $andClause->AddCondition(SqlCriteria::FieldEqualInteger($fldId, $attachedShipmanagerCompanyId));
//    }

    $fldId = F::employeestatus_id;
    $fldValue = $criteria[$fldId];
    $andClause->AddCondition(SqlCriteria::FieldEqualInteger($fldId, $fldValue));

    $fldId = F::company_id;
    $fldValue = $criteria[$fldId];
    $andClause->AddCondition(SqlCriteria::FieldEqualInteger($fldId, $fldValue));

    $fldId = F::companydepartment_id;
    $fldValue = $criteria[$fldId];
    $andClause->AddCondition(SqlCriteria::FieldEqualInteger($fldId, $fldValue));

    $fldId = F::employeeposition_id;
    $fldValue = $criteria[$fldId];
    $andClause->AddCondition(SqlCriteria::FieldEqualInteger($fldId, $fldValue));

    $fldId = F::user_member_id;
    $fldValue = $criteria[$fldId];
    $andClause->AddCondition(SqlCriteria::FieldEqualInteger($fldId, $fldValue));

    $fldId = F::lname;
    $fldValue = $criteria[$fldId];
    $andClause->AddCondition(SqlCriteria::FieldLike($fldId, $fldValue));

    $fldId = F::fname;
    $fldValue = $criteria[$fldId];
    $andClause->AddCondition(SqlCriteria::FieldLike($fldId, $fldValue));

    $smartsearch = $criteria[F::smartsearch];
    $userDateformat = $criteria[F::userdateformat];
    if ($smartsearch) {
        $model->ClearWhereClauses();
        $csv = Csv::Parse($smartsearch, ',', true);
        $data = $csv->GetData();
        foreach ($data as $part) {
            $andClause->AddCondition(Smartsearch_GetWhereClause($pdo, $cache, $part, $userDateformat, $member_id));
        }
    }

    $model->AddWhereClause($andClause);

    $pager = $criteria[F::PAGER];

    if ($pager->order) {
        $model->AddOrderClause($pager->order);
    } else {
        $initOrder = "{$model->A_lname()}, {$model->A_fname()}";
        $model->AddOrderClause($initOrder);
    }

    $model->ResetLimitClause($pager->range);
    $model->SetPage($pager->page);

    return $model;
}

$data = array();
if ($isPost || $submit) {
    $data = $model->GetData();
}
$dataFetchTime = $model->getDataFetchTime();

//echo $model->GetSelectSql();

/* * ************************************************************************** */
/* * ************************************************************************** */
/*                               HTML Display                                */
/* @var $doc HtmlDoc */
$frmCriteriaName = 'frmRefresh';
$doc = HtmlUtil::GetHtmlTemplate_DocView2($criteria, "{$title}", $uri, $pager, $frmCriteriaName, $member_id, $userDateformat, $pdo, $pageStartTime, $dataFetchTime);

/* @var $head HtmlHead */
$head = $doc->getHead();
$style = <<<  EOT
        
EOT;
$head->addStyle($style);

$width = 800;
$height = 600;

Script::Add(JQueryHelper::DefaultOpenNewPopup($modelName, $newUrlParameters->ToCsv(), '', false, $width, $height));
Script::Add(JQueryHelper::DefaultOpenEditPopup($modelName, '', false, $width, $height));
Script::Add(JQueryHelper::DefaultOpenCopyPopup($modelName, false, $width, $height));
Script::Add(JQueryHelper::DefaultDeleteEntity($modelName));

Script::Add(JQueryHelper::GetRecordSelectorScript('recordSelector', 'id'));

//Script::Add(JQueryHelper::DefaultRunJsonProcessWithQueryData('PROCESSNAMEHER'));
//Script::Add(JQueryHelper::GetActionConfirmationDialog('FunctionNameHere'));
//Script::Add(JQueryHelper::GetFunction_PostMultiedit('frmRefresh'));
// load external Javascript File
$otherScript = file_get_contents(basename(__FILE__, '.php') . '_script.js');
Script::Add($otherScript);

$fields = array();
$fields = array();
$fields[] = F::id;
$fields[] = F::smartsearch;

$fields[] = F::company_id;
$fields[] = F::company_id . '_description';

$fields[] = F::employeeposition_id;
$fields[] = F::employeeposition_id . '_description';

$fields[] = F::companydepartment_id;
$fields[] = F::companydepartment_id . '_description';

$fields[] = F::employeestatus_id;
$fields[] = F::employeestatus_id . '_description';

$fields[] = F::lname;
$fields[] = F::fname;

$fields[] = F::user_member_id;
$fields[] = F::user_member_id . '_description';

Script::AddJQueryScript(JQueryHelper::GetJQueryElementVariables($fields));
Script::AddJQueryScript(JQueryHelper::GetJQueryAllFieldsAdd($fields));

/* $fldId = F::person_id;
  Script::AddJQueryScript(JQueryHelper::SimpleAutocompleteAjaxFromIdField($fldId, LookupHelper::GetLookupUrl(PersonModel::M_NAME)));
  Script::AddJQueryScript(JQueryHelper::AutoopenAutocomplete($fldId)); */

$fldId = F::company_id;
Script::AddJQueryScript(JQueryHelper::SimpleAutocompleteAjaxFromIdField($fldId, LookupHelper::GetLookupUrl(CompanyModel::M_NAME)));
Script::AddJQueryScript(JQueryHelper::AutoopenAutocomplete($fldId));

$fldId = F::companydepartment_id;
Script::AddJQueryScript(JQueryHelper::SimpleAutocompleteAjaxFromIdField($fldId, LookupHelper::GetLookupUrl(CompanydepartmentModel::M_NAME)));
Script::AddJQueryScript(JQueryHelper::AutoopenAutocomplete($fldId));

$fldId = F::employeeposition_id;
Script::AddJQueryScript(JQueryHelper::SimpleAutocompleteAjaxFromIdField($fldId, LookupHelper::GetLookupUrl(EmployeepositionModel::M_NAME)));
Script::AddJQueryScript(JQueryHelper::AutoopenAutocomplete($fldId));

$fldId = F::supervisor_employee_id;
Script::AddJQueryScript(JQueryHelper::SimpleAutocompleteAjaxFromIdField($fldId, LookupHelper::GetLookupUrl(QryEmployeeModel::M_NAME)));
Script::AddJQueryScript(JQueryHelper::AutoopenAutocomplete($fldId));

$fldId = F::user_member_id;
Script::AddJQueryScript(JQueryHelper::SimpleAutocompleteAjaxFromIdField($fldId, LookupHelper::GetLookupUrl(MemberModel::M_NAME)));
Script::AddJQueryScript(JQueryHelper::AutoopenAutocomplete($fldId));

/* $fldId = F::start_dt_from;
  Script::AddJQueryScript(JQueryHelper::Datepicker_MakeSingle($fldId, '', '', DateUtil::UserDateFormatToJSDatepickerFormat($userDateformat), true, true));
  $fldId = F::start_dt_to;
  Script::AddJQueryScript(JQueryHelper::Datepicker_MakeSingle($fldId, '', '', DateUtil::UserDateFormatToJSDatepickerFormat($userDateformat), true, true));

  $fldId = F::end_dt_from;
  Script::AddJQueryScript(JQueryHelper::Datepicker_MakeSingle($fldId, '', '', DateUtil::UserDateFormatToJSDatepickerFormat($userDateformat), true, true));
  $fldId = F::end_dt_to;
  Script::AddJQueryScript(JQueryHelper::Datepicker_MakeSingle($fldId, '', '', DateUtil::UserDateFormatToJSDatepickerFormat($userDateformat), true, true));

  $fldId = F::poeanotificationdate_dt_from;
  Script::AddJQueryScript(JQueryHelper::Datepicker_MakeSingle($fldId, '', '', DateUtil::UserDateFormatToJSDatepickerFormat($userDateformat), true, true));
  $fldId = F::poeanotificationdate_dt_to;
  Script::AddJQueryScript(JQueryHelper::Datepicker_MakeSingle($fldId, '', '', DateUtil::UserDateFormatToJSDatepickerFormat($userDateformat), true, true));

  $fldId = F::poeareporteddate_dt_from;
  Script::AddJQueryScript(JQueryHelper::Datepicker_MakeSingle($fldId, '', '', DateUtil::UserDateFormatToJSDatepickerFormat($userDateformat), true, true));
  $fldId = F::poeareporteddate_dt_to;
  Script::AddJQueryScript(JQueryHelper::Datepicker_MakeSingle($fldId, '', '', DateUtil::UserDateFormatToJSDatepickerFormat($userDateformat), true, true));

  $fldId = F::poeadelisteddate_dt_from;
  Script::AddJQueryScript(JQueryHelper::Datepicker_MakeSingle($fldId, '', '', DateUtil::UserDateFormatToJSDatepickerFormat($userDateformat), true, true));
  $fldId = F::poeadelisteddate_dt_to;
  Script::AddJQueryScript(JQueryHelper::Datepicker_MakeSingle($fldId, '', '', DateUtil::UserDateFormatToJSDatepickerFormat($userDateformat), true, true)); */

$fldId = F::employeestatus_id;
Script::AddJQueryScript(JQueryHelper::SimpleAutocompleteAjaxFromIdField($fldId, LookupHelper::GetLookupUrl(EmployeestatusModel::M_NAME)));
Script::AddJQueryScript(JQueryHelper::AutoopenAutocomplete($fldId));

Script::AddJQueryScript("var tips = $('.validateTips');");
Script::AddJQueryScript("var dialogUtil = new DialogUtil(tips);");
Script::AddJQueryScript("$('#reset_fields').button().on('click', ResetCriteriaFields);");
Script::AddJQueryScript("$('.navigationDiv').show();");
Script::AddJQueryScript(JQueryHelper::GetDefaultJMenu('actionsMenu', Session::GetIsMobileClient()));
Script::AddJQueryScript("$('.jMenu').show();");

Script::AddJQueryScript(JQueryHelper::GetTooltipContent());
Script::AddJQueryScript(JQueryHelper::GetTooltipContent('centerTooltip'));

$jqueryScript = file_get_contents(basename(__FILE__, ".php") . "_jquery.js");
Script::AddJQueryScript($jqueryScript);

/* @var $toolbox HtmlElement */
$toolbox = $doc->GetChild(HtmlTemplateViewParts::MAIN_TOOLBOX, true);
$toolbox->AddValue(GetToolbox($pdo, $cache, $criteria));

/* @var $dataDiv HtmlElement */
$dataDiv = $doc->GetChild(HtmlTemplateViewParts::MAIN_DATA, true);

$tbl = HtmlUtil::GetHtmlTemplate_SelectSqlHint($model);
$dataDiv->AddValue($tbl);

$tbl = GetEmployeeTable($pdo, $cache, $criteria, "tbl_{$modelNameLCase}", $data, array('Pager' => $pager, 'Uri' => $uri, 'UserDateformat' => $userDateformat, 'Copy' => true, 'Copy_Function' => "OpenCopyEmployeePopup", 'Edit' => true, 'Edit_Function' => "OpenEditEmployeePopup", 'Delete' => true, 'Delete_Function' => "DeleteEmployee"));

$dataDiv->AddValue($tbl);

echo $doc->toHtml();
die();

function Smartsearch_GetWhereClause(PDO $pdo, ModelDataCaches $cache, $dataPart, $userDateformat) {
    $csv = Csv::Parse($dataPart, ':', true);
    $data = $csv->GetData();
    $andClause = WhereClause::GetAndClause();
    if (count($data) == 1) {
        $filter = trim($data[0]);
        if (is_numeric($filter)) {
            $trimed = (int) $filter;
            $andClause->AddCondition("id = {$trimed}");
        } else {
            
        }
    } else if (count($data) == 2) {
        $type = strtoupper(trim($data[0]));
        $filterData = trim($data[1]);
        $field = '';
        switch ($type) {
            case "I":
                $field = QryEmployeeModel::id;
                $andClause->AddCondition(SmartsearchHelper::GetWhereClause_NumericIn($field, $filterData));
                break;
        }
    }
    return $andClause;
}

function GetSmartSearchHelp() {
    $span = HtmlElement::SPAN();
    $span->SetClass('noPrint');
    $span->SetStyle('display:none');

    $tbl = HtmlTable::Create(4);
    $row = $tbl->newRow(false, true);
    $caption = "SmartSearch Flags";
    $cell = $row->setCellValue($caption, 0);
    $cell->setColspan(4);

    $row = HtmlUtil::AddSmartSearchHelpRow($tbl, "Code", "Description", "Format", "Example");

    $row = HtmlUtil::AddSmartSearchHelpRow($tbl, "I", "I:X|Y", "ID", "i:66|77");

    $row = $tbl->newRow(false, true);
    $caption = "No field will search by ID";
    $cell = $row->setCellValue($caption, 0);
    $cell->setColspan(4);

    $tbl->InsertInto($span);
    return $span;
}

function GetToolbox(PDO $pdo, ModelDataCaches $cache, $criteria) {
    $table = HtmlTable::Create();

    $member_id = $criteria[F::member_id];

    $refresh = GetRefreshForm($pdo, $cache, $criteria);
    $accordion = new HtmlAccordion('accordion', 'Criteria', $refresh, 0, true);

    $actions = GetActionsMenu($pdo, $cache, $criteria);
    $button1 = HtmlUtil::GetButtonJQuery('create_Employee', 'create_Employee', 'New', 'OpenNewEmployeePopup()');

    $table->addColumn(TableColumn::Create('col1', false, '10%'));
    $table->addColumn(TableColumn::Create('col2'));
    $table->addColumn(TableColumn::Create('col3', false, '10%'));
//    $table->addColumn(TableColumn::Create('col4', false, '10%'));

    $row = $table->newRow(false, true);
    $row->setCellValue($actions, 'col1');
    $row->setCellValue($accordion, 'col2');
    $row->setCellValue($button1, 'col3');
//    $row->setCellValue($button2, 'col4');

    $row->getCell(0)->SetVerticalAlignTop();
    $row->getCell(1)->SetVerticalAlignTop();
    $row->getCell(2)->SetVerticalAlignTop();
//    $row->getCell(3)->SetVerticalAlignTop();

    $table->update('tbl_toolbox');
    return $table;
}

function GetActionsMenu(PDO $pdo, ModelDataCaches $cache, $criteria) {
    $member_id = $criteria[F::member_id];

    $tbl = HtmlTable::Create();

    $jMenu = JMenu::CreateMenu('actionsMenu');
    $jMenu->SetStyle('display:none');
    //$jMenu->SetStyle('width:50px');
    $actions = JMenu::AddGroupToMenu($jMenu, 'Actions');

    $tbl->AppendStyle('width:100%');

    $tbl->addRowData(array(
        $jMenu,
    ));
    return $tbl;
}

function GetRefreshForm(PDO $pdo, ModelDataCaches $cache, $criteria) {
    $userDateformat = Session::GetMemberDateformat();
    $uri = Server::v(ServerCodes::REQUEST_URI);
    $form = HtmlUtil::GetForm('frmRefresh', 'post', Server::v(ServerCodes::PHP_SELF));
    //
    $form->AppendClass(HtmlClasses::NO_PRINT);
    //$form->AppendStyle("width:500px");

    $form->AddValue(HtmlElement::P()->SetClass('validateTips'));

    $htmlInputClass = HtmlClasses::TEXT_AND_WIDGET_CONTENT_AND_UI_CORNER_ALL;
//$htmlInputClass = HtmlClasses::UI_WIDGET_AND_WIDGET_CONTENT;
    $htmlTableClass = HtmlClasses::UI_WIDGET;

    $tbl = HtmlTable::Create();
    $tbl->SetClass($htmlTableClass);
    $tbl->addColumn(TableColumn::Create('col1', false, '10%'));
    //$tbl->addColumn(TableColumn::Create('col1'));
    $tbl->addColumn(TableColumn::Create('col2'));

    $tbl->InsertInto($form);

    $row = $tbl->newRow(false, true);
    $fldId = F::smartsearch;
    $fldIdValue = $criteria[$fldId];
    $caption = "Quick Search";
    $row->setCellValue(HtmlUtil::GetLabel($caption), 'col1');
    $txtbox = HtmlUtil::GetSimpleInputText($fldId, $criteria, false, $htmlInputClass);
    $txtbox->AppendAttributeValue('placeholder', 'Filters: Click on textbox and press CTRL+ENTER');
    $cell = $row->setCellValue($txtbox, 'col2');
    $span = SmartSearch_GetHelp();
    $cell->AddValue($span);
    $cell->AppendClass('centerTooltip');
//    $row = $tbl->newRow(false, true);
//    $cell = $row->setCellValue(HtmlUtil::Getlabel('Filters: Click on textbox and press CTRL+ENTER', '', $htmlInputClass), 'col2');
//    $cell->Style_SetFontsize('0.8em');

    $tabsId = 'criteriaTabs';
    $tabContainer = HtmlUtil::GetSimpleTab($tabsId);
    $tabs = $tabContainer->GetChild($tabsId);
    $tabList = new HtmlList();
    $tabList->addItem(HtmlUtil::GetLink('', "#{$tabsId}_1", "Basic"));
    $tabList->addItem(HtmlUtil::GetLink('', "#{$tabsId}_2", "Multiple"));

    $tabs->AddValue($tabList);
    $criteriaTabBasic = HtmlElement::DIV()->SetId("{$tabsId}_1")->InsertInto($tabs);
    $criteriaTabMultiple = HtmlElement::DIV()->SetId("{$tabsId}_2")->InsertInto($tabs);

    $tabContainer->InsertInto($form);

    $filtersToUse = array();
//    $filtersToUse['use_film'] = 'use_film';
    //$filtersToUse['use_filv'] = 'use_filv';
//    $filtersToUse['use_filr'] = 'use_filr';
//    $filtersToUse['use_filn'] = 'use_filn';
//    $filtersToUse['use_filn_e'] = 'use_filn_e';
    //$filtersToUse['use_filc'] = 'use_filc';
    //$filtersToUse['use_filci'] = 'use_filci';
    $filteredCriteria = HtmlUtil::GetTable_FilteredCriteria($pdo, $criteria, $filtersToUse);
    $filteredCriteria->InsertInto($criteriaTabMultiple);

    $tbl = HtmlTable::Create();
    $tbl->SetClass($htmlTableClass);
    $tbl->addColumn(TableColumn::Create('col1', false, '10%'));
    $tbl->addColumn(TableColumn::Create('col2'));
    //$tbl->AppendStyle("width:500px");
    $tbl->InsertInto($criteriaTabBasic);

    if (Session::GetIsAdministrator()) {
        $row = $tbl->newRow(false, true);
        $fldId = F::sql_criteria;
        $fldIdValue = $criteria[$fldId];
        $fldDescr = $fldIdValue;
        $fldDescrValue = $fldIdValue;
        $row->setCellValue(HtmlUtil::GetLabel('(!) SQL Criteria', $fldId), 'col1');
        $row->setCellValue(HtmlUtil::GetInputText($fldId, $fldId, $fldIdValue, false, $htmlInputClass), 'col2');
    }

    $row = $tbl->newRow(false, true);
    $fldId = F::id;
    $fldIdValue = $criteria[$fldId];
    $row->setCellValue(HtmlUtil::GetLabel('ID', $fldId), 'col1');
    $row->setCellValue(HtmlUtil::GetSimpleInputText($fldId, $criteria, false, $htmlInputClass), 'col2');

    $row = $tbl->newRow(false, true);
    $fldId = F::employeestatus_id;
    $fldIdValue = $criteria[$fldId];
    $fldDescr = $fldId . '_description';
    $fldDescrValue = EmployeeController::GetDescriptionFromId($pdo, $fldIdValue, $cache, true);
    $row->setCellValue(HtmlUtil::GetLabel('Status (%)', $fldId), 'col1');
    $row->setCellValue(HtmlUtil::GetAutocompleteInput($fldId, $fldId, $fldIdValue, $fldDescr, $fldDescr, $fldDescrValue, false, $htmlInputClass), 'col2');

    $row = $tbl->newRow(false, true);
    $fldId = F::company_id;
    $fldIdValue = $criteria[$fldId];
    $fldDescr = $fldId . '_description';
    $fldDescrValue = CompanyController::GetDescriptionFromId($pdo, $fldIdValue, $cache, true);
    $row->setCellValue(HtmlUtil::GetLabel('Company (%)', $fldId), 'col1');
    $row->setCellValue(HtmlUtil::GetAutocompleteInput($fldId, $fldId, $fldIdValue, $fldDescr, $fldDescr, $fldDescrValue, false, $htmlInputClass), 'col2');

    $row = $tbl->newRow(false, true);
    $fldId = F::lname;
    $fldIdValue = $criteria[$fldId];
    $row->setCellValue(HtmlUtil::GetLabel('Last Name', $fldId), 'col1');
    $row->setCellValue(HtmlUtil::GetSimpleInputText($fldId, $criteria, false, $htmlInputClass), 'col2');

    $row = $tbl->newRow(false, true);
    $fldId = F::fname;
    $fldIdValue = $criteria[$fldId];
    $row->setCellValue(HtmlUtil::GetLabel('First Name', $fldId), 'col1');
    $row->setCellValue(HtmlUtil::GetSimpleInputText($fldId, $criteria, false, $htmlInputClass), 'col2');

    $row = $tbl->newRow(false, true);
    $fldId = F::companydepartment_id;
    $fldIdValue = $criteria[$fldId];
    $fldDescr = $fldId . '_description';
    $fldDescrValue = CompanydepartmentController::GetDescriptionFromId($pdo, $fldIdValue, $cache, true);
    $row->setCellValue(HtmlUtil::GetLabel('Department (%)', $fldId), 'col1');
    $row->setCellValue(HtmlUtil::GetAutocompleteInput($fldId, $fldId, $fldIdValue, $fldDescr, $fldDescr, $fldDescrValue, false, $htmlInputClass), 'col2');

    $row = $tbl->newRow(false, true);
    $fldId = F::employeeposition_id;
    $fldIdValue = $criteria[$fldId];
    $fldDescr = $fldId . '_description';
    $fldDescrValue = EmployeepositionController::GetDescriptionFromId($pdo, $fldIdValue, $cache, true);
    $row->setCellValue(HtmlUtil::GetLabel('Position (%)', $fldId), 'col1');
    $row->setCellValue(HtmlUtil::GetAutocompleteInput($fldId, $fldId, $fldIdValue, $fldDescr, $fldDescr, $fldDescrValue, false, $htmlInputClass), 'col2');

    $row = $tbl->newRow(false, true);
    $fldId = F::user_member_id;
    $fldIdValue = $criteria[$fldId];
    $fldDescr = $fldId . '_description';
    $fldDescrValue = MemberController::GetDescriptionFromId($pdo, $fldIdValue, $cache, true);
    $row->setCellValue(HtmlUtil::GetLabel('Attached User (%)', $fldId), 'col1');
    $row->setCellValue(HtmlUtil::GetAutocompleteInput($fldId, $fldId, $fldIdValue, $fldDescr, $fldDescr, $fldDescrValue, false, $htmlInputClass), 'col2');

    //THE SHOW SQL
    $fld = F::showsql;
    $showSql = $criteria[$fld];
    $h = HtmlUtil::GetInputHidden('', $fld, $showSql);
    $h->InsertInto($form);

// THE PAGER
    $fld = F::PAGER;
    $pager = $criteria[$fld];
    $h = HtmlUtil::GetInputHidden('', HtmlPager::PAGE, $pager->page);
    $h->InsertInto($form);
    $h = HtmlUtil::GetInputHidden('', HtmlPager::RANGE, $pager->range);
    $h->InsertInto($form);
    $h = HtmlUtil::GetInputHidden('', HtmlPager::ORDER, $pager->order);
    $h->InsertInto($form);

//THE SUBMIT
    //$h = HtmlUtil::GetInputHidden('', F::isformsubmit, 1)->InsertInto($form);
    $tbl = HtmlTable::Create();
    $tbl->SetClass($htmlTableClass);
    $tbl->addColumn(TableColumn::Create('col1'));
    $tbl->addColumn(TableColumn::Create('col2'));
    //$tbl->AppendStyle("width:500px");
    $tbl->InsertInto($form);

    $row = $tbl->newRow(false, true);

    $btn = HtmlUtil::GetButton('reset_fields', 'reset_fields', 'Reset Criteria')->SetClass($htmlInputClass);
//    $btnName = 'reset_fields';
//    $btn = HtmlUtil::GetButtonJQuery($btnName, $btnName, 'Reset Criteria', 'ResetCriteriaFields()')->SetClass($htmlInputClass);
    $cell = $row->setCellValue($btn, 'col1');
    $cell->SetHorizontalAlignCenter();

    $btn = HtmlUtil::GetInputSubmit(F::submit, F::submit, 'Refresh')->SetClass(HtmlClasses::UI_BUTTON)->AppendClass($htmlInputClass);
    $cell = $row->setCellValue($btn, 'col2');
    $cell->SetHorizontalAlignCenter();
    //   $cell->setColspan(2);

    $row = $tbl->newRow(false, true);
    $lbl = HtmlUtil::GetLabel('CAUTION: Updates MAY NOT refresh the page. Press the Refresh Button of your browser to refresh');
    $lbl->Style_SetColor('red');
    $cell = $row->setCellValue($lbl, 'col1');
    $cell->setColspan(2);

    return $form;
}

function GetTable(PDO $pdo, ModelDataCaches $cache, $criteria, $id, $data, array $parameters) {
    $uri = Utility::Nz($parameters, 'Uri', '');
    $pager = Utility::Nz($parameters, 'Pager', HtmlPager::Create());
    $order = $pager->order;
    $userDateformat = Utility::Nz($parameters, 'UserDateformat', 'Y-m-d');

    $tblClass = HtmlClasses::UI_WIDGET_AND_WIDGET_CONTENT;
    $tbl = HtmlTable::Create()->SetId($id)->SetClass($tblClass)->AppendClass(HtmlClasses::LISTDATATABLE);

    // The Columns
    $defWidth = '1px';
    $tbl->addColumn(TableColumn::Create('COL_SELECT', false, '5px')->setHorizontalAlign_Right()->AppendClass(HtmlClasses::NO_PRINT));
    $tbl->addColumn(TableColumn::Create('COL_AA'));

    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::id)->setHorizontalAlign_Right());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::person_id)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::company_id)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::companydepartment_id)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::employeeposition_id)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::commchannel_group_uuid)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::custominfodata_group_uuid)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::remarks)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::supervisor_employee_id)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::attachment_group_uuid)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::user_member_id)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::start_dt));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::end_dt));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::poeanotificationdate_dt));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::poeareporteddate_dt));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::poeadelisteddate_dt));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::employeestatus_id)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::employeestatusdetail)->setHorizontalAlign_Left());

    if (array_key_exists('Edit_Function', $parameters)) {
        $tbl->addColumn(TableColumn::Create('COL_EDIT', false, '5px')->AppendClass(HtmlClasses::NO_PRINT)->AppendClass('edit'));
    }
    if (array_key_exists('Copy_Function', $parameters)) {
        $tbl->addColumn(TableColumn::Create('COL_COPY', false, '5px')->AppendClass(HtmlClasses::NO_PRINT)->AppendClass('copy'));
    }
    if (array_key_exists('Delete_Function', $parameters)) {
        $tbl->addColumn(TableColumn::Create('COL_DELETE', false, '5px')->AppendClass(HtmlClasses::NO_PRINT)->AppendClass('delete'));
    }



    //THE HEADERS 
    $row = $tbl->newRow(true, true);
    $row->AppendClass(HtmlClasses::UI_WIDGET_HEADER);
    $chkSelect = HtmlUtil::GetInputCheckbox('recordSelectorToggle', '', false, '1', false);
    $chkSelect->AppendAttributeValue('onclick', 'javascript:recordSelector_ToggleSelection();');
    $row->setCellValue($chkSelect, 'COL_SELECT');  //for selection
    $row->setCellValue('#', 'COL_AA');

    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'id', $uri, QryEmployeeModel::id, $order), QryEmployeeModel::id);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'person_id', $uri, QryEmployeeModel::person_id, $order), QryEmployeeModel::person_id);
//$row->setCellValue(HtmlUtil::GetOrderForm2('', 'person_id', $uri, QryEmployeeModel::person_id_description, $order), QryEmployeeModel::person_id_description);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'company_id', $uri, QryEmployeeModel::company_id, $order), QryEmployeeModel::company_id);
//$row->setCellValue(HtmlUtil::GetOrderForm2('', 'company_id', $uri, QryEmployeeModel::company_id_description, $order), QryEmployeeModel::company_id_description);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'companydepartment_id', $uri, QryEmployeeModel::companydepartment_id, $order), QryEmployeeModel::companydepartment_id);
//$row->setCellValue(HtmlUtil::GetOrderForm2('', 'companydepartment_id', $uri, QryEmployeeModel::companydepartment_id_description, $order), QryEmployeeModel::companydepartment_id_description);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'employeeposition_id', $uri, QryEmployeeModel::employeeposition_id, $order), QryEmployeeModel::employeeposition_id);
//$row->setCellValue(HtmlUtil::GetOrderForm2('', 'employeeposition_id', $uri, QryEmployeeModel::employeeposition_id_description, $order), QryEmployeeModel::employeeposition_id_description);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'commchannel_group_uuid', $uri, QryEmployeeModel::commchannel_group_uuid, $order), QryEmployeeModel::commchannel_group_uuid);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'custominfodata_group_uuid', $uri, QryEmployeeModel::custominfodata_group_uuid, $order), QryEmployeeModel::custominfodata_group_uuid);
    $row->setCellValue('remarks', QryEmployeeModel::remarks);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'supervisor_employee_id', $uri, QryEmployeeModel::supervisor_employee_id, $order), QryEmployeeModel::supervisor_employee_id);
//$row->setCellValue(HtmlUtil::GetOrderForm2('', 'supervisor_employee_id', $uri, QryEmployeeModel::supervisor_employee_id_description, $order), QryEmployeeModel::supervisor_employee_id_description);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'attachment_group_uuid', $uri, QryEmployeeModel::attachment_group_uuid, $order), QryEmployeeModel::attachment_group_uuid);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'user_member_id', $uri, QryEmployeeModel::user_member_id, $order), QryEmployeeModel::user_member_id);
//$row->setCellValue(HtmlUtil::GetOrderForm2('', 'user_member_id', $uri, QryEmployeeModel::user_member_id_description, $order), QryEmployeeModel::user_member_id_description);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'start_dt', $uri, QryEmployeeModel::start_dt, $order), QryEmployeeModel::start_dt);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'end_dt', $uri, QryEmployeeModel::end_dt, $order), QryEmployeeModel::end_dt);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'poeanotificationdate_dt', $uri, QryEmployeeModel::poeanotificationdate_dt, $order), QryEmployeeModel::poeanotificationdate_dt);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'poeareporteddate_dt', $uri, QryEmployeeModel::poeareporteddate_dt, $order), QryEmployeeModel::poeareporteddate_dt);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'poeadelisteddate_dt', $uri, QryEmployeeModel::poeadelisteddate_dt, $order), QryEmployeeModel::poeadelisteddate_dt);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'employeestatus_id', $uri, QryEmployeeModel::employeestatus_id, $order), QryEmployeeModel::employeestatus_id);
//$row->setCellValue(HtmlUtil::GetOrderForm2('', 'employeestatus_id', $uri, QryEmployeeModel::employeestatus_id_description, $order), QryEmployeeModel::employeestatus_id_description);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'employeestatusdetail', $uri, QryEmployeeModel::employeestatusdetail, $order), QryEmployeeModel::employeestatusdetail);

    if (array_key_exists('Edit_Function', $parameters)) {
        $row->setCellValue('', 'COL_EDIT');
        $row->getCell('COL_EDIT')->AppendClass(HtmlClasses::NO_PRINT);
    }
    if (array_key_exists('Copy_Function', $parameters)) {
        $row->setCellValue('', 'COL_COPY');
        $row->getCell('COL_COPY')->AppendClass(HtmlClasses::NO_PRINT);
    }
    if (array_key_exists('Delete_Function', $parameters)) {
        $row->setCellValue('', 'COL_DELETE');
        $row->getCell('COL_DELETE')->AppendClass(HtmlClasses::NO_PRINT);
    }



// The Data
    $pos = 1 + ($pager->page - 1 ) * $pager->range;
//$timer = Timer::Create(1);

    foreach ($data as $rowData) {
        $row = $tbl->newRow(false, true);
        $row->SetData('db_id', $rowData['id']);

        $chkSelect = HtmlUtil::GetInputCheckbox('', '', false, '1', false);
        $chkSelect->AppendClass('recordSelector');
        $chkSelect->SetData('id', $rowData[QryEmployeeModel::id]);
        $row->setCellValue($chkSelect, 'COL_SELECT');

        $info = HtmlUtil::GetCreationinfoSpan($pdo, "{$pos})", $cache, $userDateformat, $rowData[QryEmployeeModel::created_by]
                        , $rowData[QryEmployeeModel::created_dt]
                        , $rowData[QryEmployeeModel::modified_by]
                        , $rowData[QryEmployeeModel::modified_dt]
                        , Utility::Nz($criteria, 'export'));

        $cell = $row->setCellValue($info, 'COL_AA');
        // $cell->AppendClass(HtmlClasses::HAS_TOOLTIP);
        $pos++;

        $fldId = QryEmployeeModel::id;
        $fldIdValue = $rowData[$fldId];
        $lbl = HtmlElement::Label()->AddValue($fldIdValue);
        $lbl->SetID("lblId_{$fldIdValue}");
        $lbl->AppendAttributeValue('onclick', "CopyLabelToClipboard('lblId_{$fldIdValue}')");
        $cell = $row->setCellValue($lbl, $fldId)->SetAttribute('data-field', $fldId);

        $fldId = QryEmployeeModel::person_id;
        $fldIdValue = Utility::Nz($rowData, $fldId);
        if ($fldIdValue) {
            $entity = PersonController::GetEntity($pdo, $fldIdValue, $cache);
            $fldDescrValue = PersonController::GetDescriptionFromID($pdo, $entity->Val_id(), $cache, true);
            $a = HtmlLinks::GetLink_Person('', $entity->Val_id(), $fldIdValue);
            $cell = $row->setCellValue($a, $fldId)->SetData('field', $fldId);
            HtmlUtil::AddTooltipInCell($fldDescrValue, $cell);
        }


        $fldId = QryEmployeeModel::company_id;
        $fldIdValue = Utility::Nz($rowData, $fldId);
        if ($fldIdValue) {
            $entity = CompanyController::GetEntity($pdo, $fldIdValue, $cache);
            $fldDescrValue = CompanyController::GetDescriptionFromID($pdo, $entity->Val_id(), $cache, true);
            $a = HtmlLinks::GetLink_Company('', $entity->Val_id(), $fldIdValue);
            $cell = $row->setCellValue($a, $fldId)->SetData('field', $fldId);
            HtmlUtil::AddTooltipInCell($fldDescrValue, $cell);
        }


        $fldId = QryEmployeeModel::companydepartment_id;
        $fldIdValue = Utility::Nz($rowData, $fldId);
        if ($fldIdValue) {
            $entity = CompanydepartmentController::GetEntity($pdo, $fldIdValue, $cache);
            $fldDescrValue = CompanydepartmentController::GetDescriptionFromID($pdo, $entity->Val_id(), $cache, true);
            $a = HtmlLinks::GetLink_Companydepartment('', $entity->Val_id(), $fldIdValue);
            $cell = $row->setCellValue($a, $fldId)->SetData('field', $fldId);
            HtmlUtil::AddTooltipInCell($fldDescrValue, $cell);
        }


        $fldId = QryEmployeeModel::employeeposition_id;
        $fldIdValue = Utility::Nz($rowData, $fldId);
        if ($fldIdValue) {
            $entity = EmployeepositionController::GetEntity($pdo, $fldIdValue, $cache);
            $fldDescrValue = EmployeepositionController::GetDescriptionFromID($pdo, $entity->Val_id(), $cache, true);
            $a = HtmlLinks::GetLink_Employeeposition('', $entity->Val_id(), $fldIdValue);
            $cell = $row->setCellValue($a, $fldId)->SetData('field', $fldId);
            HtmlUtil::AddTooltipInCell($fldDescrValue, $cell);
        }


        $fldId = QryEmployeeModel::commchannel_group_uuid;
        $fldIdValue = Utility::Nz($rowData, $fldId);
        $cell = $row->setCellValue($fldIdValue, $fldId)->SetData('field', $fldId);

        $fldId = QryEmployeeModel::custominfodata_group_uuid;
        $fldIdValue = Utility::Nz($rowData, $fldId);
        $cell = $row->setCellValue($fldIdValue, $fldId)->SetData('field', $fldId);

        $fldId = QryEmployeeModel::remarks;
        HtmlUtil::SetRemarksTooltipInCell(Utility::Nz($rowData, $fldId), 5, $row, $fldId, $fldId);

        $fldId = QryEmployeeModel::supervisor_employee_id;
        $fldIdValue = Utility::Nz($rowData, $fldId);
        if ($fldIdValue) {
            $entity = EmployeeController::GetEntity($pdo, $fldIdValue, $cache);
            $fldDescrValue = EmployeeController::GetDescriptionFromID($pdo, $entity->Val_id(), $cache, true);
            $a = HtmlLinks::GetLink_Employee('', $entity->Val_id(), $fldIdValue);
            $cell = $row->setCellValue($a, $fldId)->SetData('field', $fldId);
            HtmlUtil::AddTooltipInCell($fldDescrValue, $cell);
        }


        $fldId = QryEmployeeModel::attachment_group_uuid;
        $fldIdValue = Utility::Nz($rowData, $fldId);
        $cell = $row->setCellValue($fldIdValue, $fldId)->SetData('field', $fldId);

        $fldId = QryEmployeeModel::user_member_id;
        $fldIdValue = Utility::Nz($rowData, $fldId);
        if ($fldIdValue) {
            $entity = MemberController::GetEntity($pdo, $fldIdValue, $cache);
            $fldDescrValue = MemberController::GetDescriptionFromID($pdo, $entity->Val_id(), $cache, true);
            $a = HtmlLinks::GetLink_Member('', $entity->Val_id(), $fldIdValue);
            $cell = $row->setCellValue($a, $fldId)->SetData('field', $fldId);
            HtmlUtil::AddTooltipInCell($fldDescrValue, $cell);
        }

        $fldId = QryEmployeeModel::start_dt;
        $fldIdValue = Utility::Nz($rowData, $fldId, '');
        $fldDescrValue = DateUtil::SqlDateToUserDate($fldIdValue, $userDateformat);
        $row->setCellValue($fldDescrValue, $fldId)->SetData('field', $fldId);
        $fldId = QryEmployeeModel::end_dt;
        $fldIdValue = Utility::Nz($rowData, $fldId, '');
        $fldDescrValue = DateUtil::SqlDateToUserDate($fldIdValue, $userDateformat);
        $row->setCellValue($fldDescrValue, $fldId)->SetData('field', $fldId);
        $fldId = QryEmployeeModel::poeanotificationdate_dt;
        $fldIdValue = Utility::Nz($rowData, $fldId, '');
        $fldDescrValue = DateUtil::SqlDateToUserDate($fldIdValue, $userDateformat);
        $row->setCellValue($fldDescrValue, $fldId)->SetData('field', $fldId);
        $fldId = QryEmployeeModel::poeareporteddate_dt;
        $fldIdValue = Utility::Nz($rowData, $fldId, '');
        $fldDescrValue = DateUtil::SqlDateToUserDate($fldIdValue, $userDateformat);
        $row->setCellValue($fldDescrValue, $fldId)->SetData('field', $fldId);
        $fldId = QryEmployeeModel::poeadelisteddate_dt;
        $fldIdValue = Utility::Nz($rowData, $fldId, '');
        $fldDescrValue = DateUtil::SqlDateToUserDate($fldIdValue, $userDateformat);
        $row->setCellValue($fldDescrValue, $fldId)->SetData('field', $fldId);

        $fldId = QryEmployeeModel::employeestatus_id;
        $fldIdValue = Utility::Nz($rowData, $fldId);
        if ($fldIdValue) {
            $entity = EmployeestatusController::GetEntity($pdo, $fldIdValue, $cache);
            $fldDescrValue = EmployeestatusController::GetDescriptionFromID($pdo, $entity->Val_id(), $cache, true);
            $a = HtmlLinks::GetLink_Employeestatus('', $entity->Val_id(), $fldIdValue);
            $cell = $row->setCellValue($a, $fldId)->SetData('field', $fldId);
            HtmlUtil::AddTooltipInCell($fldDescrValue, $cell);
        }


        $fldId = QryEmployeeModel::employeestatusdetail;
        $fldIdValue = Utility::Nz($rowData, $fldId);
        $cell = $row->setCellValue($fldIdValue, $fldId)->SetData('field', $fldId);

        if (array_key_exists('Edit_Function', $parameters)) {
            $url = "javascript:{$parameters['Edit_Function']}({$rowData['id']})";
            $a = HtmlUtil::GetLink('', $url, '');
            $row->setCellValue($a, 'COL_EDIT');
            $row->getCell('COL_EDIT')->SetData('field', 'col_edit')->AppendClass(HtmlClasses::NO_PRINT);
        }
        if (array_key_exists('Copy_Function', $parameters)) {
            $url = "javascript:{$parameters['Copy_Function']}({$rowData['id']})";
            $a = HtmlUtil::GetLink('', $url, '');
            $row->setCellValue($a, 'COL_COPY');
            $row->getCell('COL_COPY')->SetData('field', 'col_copy')->AppendClass(HtmlClasses::NO_PRINT);
        }
        if (array_key_exists('Delete_Function', $parameters)) {
            $url = "javascript:{$parameters['Delete_Function']}({$rowData['id']})";
            $a = HtmlUtil::GetLink('', $url, '');
            $row->setCellValue($a, 'COL_DELETE');
            $row->getCell('COL_DELETE')->SetData('field', 'col_delete')->AppendClass(HtmlClasses::NO_PRINT);
        }
    }


    $tbl->update();
    return $tbl;
}

function GetEmployeeTable(PDO $pdo, ModelDataCaches $cache, $criteria, $id, $data, array $parameters) {
    $member_id = Session::GetMemberId();
    $uri = Utility::Nz($parameters, 'Uri', '');
    $pager = Utility::Nz($parameters, 'Pager', HtmlPager::Create());
    $order = $pager->order;
    $userDateformat = Utility::Nz($parameters, 'UserDateformat', 'Y-m-d');

    $tblClass = HtmlClasses::UI_WIDGET_AND_WIDGET_CONTENT;
    $tbl = HtmlTable::Create()->SetId($id)->SetClass($tblClass)->AppendClass(HtmlClasses::LISTDATATABLE);

// The Columns
    $defWidth = '';
    $tbl->addColumn(TableColumn::Create('COL_SELECT', false, '5px')->AppendClass(HtmlClasses::NO_PRINT));
    $tbl->addColumn(TableColumn::Create('COL_AA'));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::id, false, $defWidth));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::company_name, false, $defWidth));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::employeestatus_id, false, $defWidth));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::lname, false, $defWidth)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::employeeposition_description, false, $defWidth)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::companydepartment_description, false, $defWidth)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create('col_phone', false, $defWidth));
    $tbl->addColumn(TableColumn::Create('col_mobile', false, $defWidth));
    $tbl->addColumn(TableColumn::Create('col_email', false, $defWidth)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::start_dt, false, $defWidth));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::end_dt, false, $defWidth));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::employeestatusdetail, false, $defWidth));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::poeanotificationdate_dt, false, $defWidth));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::poeareporteddate_dt, false, $defWidth));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::poeadelisteddate_dt, false, $defWidth));
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::user_member_id, false, $defWidth)->setHorizontalAlign_Left());
    $tbl->addColumn(TableColumn::Create(QryEmployeeModel::remarks, false, $defWidth)->setHorizontalAlign_Left());
    if (array_key_exists('Edit_Function', $parameters)) {
        $tbl->addColumn(TableColumn::Create('COL_EDIT', false, '5px')->AppendClass(HtmlClasses::NO_PRINT)->AppendClass('edit'));
    }
    if (array_key_exists('Copy_Function', $parameters)) {
        $tbl->addColumn(TableColumn::Create('COL_COPY', false, '5px')->AppendClass(HtmlClasses::NO_PRINT)->AppendClass('copy'));
    }
    if (array_key_exists('Delete_Function', $parameters)) {
        $tbl->addColumn(TableColumn::Create('COL_DELETE', false, '5px')->AppendClass(HtmlClasses::NO_PRINT)->AppendClass('delete'));
    }

    // The Headers
    $row = $tbl->newRow(true, true);
    $row->SetClass('ui-widget-header');

    $chkSelect = HtmlUtil::GetInputCheckbox('recordSelectorToggle', '', false, '1', false);
    $chkSelect->AppendAttributeValue('onclick', 'javascript:recordSelector_ToggleSelection();');
    $row->setCellValue($chkSelect, 'COL_SELECT');
    $row->setCellValue('#', 'COL_AA');

    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'Id', $uri, QryEmployeeModel::id, $pager->order), QryEmployeeModel::id);
    //$ths[] = HtmlElement::TH()->AddValue(HtmlUtil::GetOrderForm2('', 'Comp.Type', $uri, QryEmployeeModel::companytype_code, $order));
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'Status', $uri, QryEmployeeModel::employeestatus_id, $pager->order), QryEmployeeModel::employeestatus_id);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'Company', $uri, QryEmployeeModel::company_name, $pager->order), QryEmployeeModel::company_name);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'Name', $uri, QryEmployeeModel::lname, $pager->order), QryEmployeeModel::lname);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'Position', $uri, QryEmployeeModel::employeeposition_description, $pager->order), QryEmployeeModel::employeeposition_description);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'Department', $uri, QryEmployeeModel::companydepartment_description, $pager->order), QryEmployeeModel::companydepartment_description);
    $row->setCellValue('Phone', 'col_phone');
    $row->setCellValue('Mobile', 'col_mobile');
    $row->setCellValue('Email', 'col_email');
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'Start', $uri, QryEmployeeModel::start_dt, $pager->order), QryEmployeeModel::start_dt);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'End', $uri, QryEmployeeModel::end_dt, $pager->order), QryEmployeeModel::end_dt);
    $row->setCellValue('Status Details', QryEmployeeModel::employeestatusdetail);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'POEA<br>Notif. Date', $uri, QryEmployeeModel::poeanotificationdate_dt, $pager->order), QryEmployeeModel::poeanotificationdate_dt);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'POEA<br>Report. Date', $uri, QryEmployeeModel::poeareporteddate_dt, $pager->order), QryEmployeeModel::poeareporteddate_dt);
    $row->setCellValue(HtmlUtil::GetOrderForm2('', 'POEA<br>Delist. Date', $uri, QryEmployeeModel::poeadelisteddate_dt, $pager->order), QryEmployeeModel::poeadelisteddate_dt);
    $row->setCellValue('Assigned User', QryEmployeeModel::user_member_id);
    $row->setCellValue('Remarks', QryEmployeeModel::remarks);

    $pos = 1 + ($pager->page - 1 ) * $pager->range;
    foreach ($data as $rowData) {
        $row = $tbl->newRow(false, true);
        SetTableRow($pdo, $cache, $row, $pos, $criteria, $rowData, $parameters);
        $pos++;
    }
    $tbl->update();
    return $tbl;
}

function SetTableRow(PDO $pdo, ModelDataCaches $cache, $row, $pos, $criteria, $rowData, array $parameters) {
    $member_id = $criteria[F::member_id];
    $userDateformat = $criteria[F::userdateformat];

    $row->SetData('db_id', $rowData[QryEmployeeModel::id]);
    $chkSelect = HtmlUtil::GetInputCheckbox('', '', false, '1', false);
    $chkSelect->AppendClass('recordSelector');
    $chkSelect->SetData('id', $rowData[QryEmployeeModel::id]);
    $row->setCellValue($chkSelect, 'COL_SELECT');

    $createdby_member_id = $rowData[QryEmployeeModel::created_by];
    $createdby_dt = $rowData[QryEmployeeModel::created_dt];
    $modifiedby_member_id = $rowData[QryEmployeeModel::modified_by];
    $modifiedby_dt = $rowData[QryEmployeeModel::modified_dt];
    HtmlUtil::SetModifiedByInCell($pdo, $cache, "{$pos})", $member_id, $modifiedby_member_id, $modifiedby_dt, $createdby_member_id, $createdby_dt, $userDateformat, $row, 'COL_AA');

    $fldId = QryEmployeeModel::id;
    $fldIdValue = Utility::Nz($rowData, $fldId);
    $cell = $row->setCellValue($fldIdValue, $fldId)->SetData('field', $fldId);

    $fldId = QryEmployeeModel::employeestatus_id;
    $fldIdValue = Utility::Nz($rowData, $fldId);
    $status = EmployeestatusController::GetEntity($pdo, $fldIdValue, $cache);
    $fldDescr = EmployeestatusController::GetDescriptionFromId($pdo, $fldIdValue, $cache, true);
    $cell = $row->setCellValue($status->Val_code(), $fldId);
    HtmlUtil::AddTooltipInCell($fldDescr, $cell);

    $fldId = QryEmployeeModel::company_id;
    $fldIdValue = Utility::Nz($rowData, $fldId);
    $fldDescr = CompanyController::GetDescriptionFromId($pdo, $fldIdValue, $cache, true);
    $a = HtmlUtil::GetLinkCompany('', $rowData[QryEmployeeModel::company_code], $rowData[QryEmployeeModel::company_id]);
    $cell = $row->setCellValue($a, QryEmployeeModel::company_name);
    HtmlUtil::AddTooltipInCell($fldDescr, $cell);

    $fldId = QryEmployeeModel::person_id;
    $fldIdValue = Utility::Nz($rowData, $fldId);
    $fldDescr = PersonController::GetDescriptionFromId($pdo, $fldIdValue, $cache, true);
    $a = HtmlUtil::GetLinkEmployee('', $fldDescr, $rowData[QryEmployeeModel::id]);
    $cell = $row->setCellValue($a, QryEmployeeModel::lname);

    $fldId = QryEmployeeModel::employeeposition_description;
    $fldIdValue = Utility::Nz($rowData, $fldId);
    $cell = $row->setCellValue($fldIdValue, $fldId);

    $fldId = QryEmployeeModel::companydepartment_description;
    $fldIdValue = Utility::Nz($rowData, $fldId);
    $cell = $row->setCellValue($fldIdValue, $fldId);

    $uuid = $rowData[QryEmployeeModel::commchannel_group_uuid];
    $fldId = 'col_phone';
    $fldIdValue = CommchannelController::GetDefaultTelephoneByUUID($pdo, $cache, $uuid);
    $cell = $row->setCellValue($fldIdValue, $fldId);

    $fldId = 'col_mobile';
    $fldIdValue = CommchannelController::GetDefaultMobileByUUID($pdo, $cache, $uuid);
    $cell = $row->setCellValue($fldIdValue, $fldId);

    $fldId = 'col_email';
    $fldIdValue = CommchannelController::GetDefaultEmailByUUID($pdo, $cache, $uuid);
    if ($fldIdValue) {
        $a = HtmlUtil::GetLink('', "mailto:{$fldIdValue}", $fldIdValue);
        $cell = $row->setCellValue($a, $fldId);
    }


    $fldId = QryEmployeeModel::start_dt;
    $fldIdValue = DateUtil::SqlDateToUserDate($rowData[$fldId], $userDateformat);
    $cell = $row->setCellValue($fldIdValue, $fldId);

    $fldId = QryEmployeeModel::end_dt;
    $fldIdValue = DateUtil::SqlDateToUserDate($rowData[$fldId], $userDateformat);
    $cell = $row->setCellValue($fldIdValue, $fldId);

    $fldId = QryEmployeeModel::employeestatusdetail;
    $fldIdValue = Utility::Nz($rowData, $fldId);
    $cell = $row->setCellValue($fldIdValue, $fldId)->SetData('field', $fldId);

    $fldId = QryEmployeeModel::poeanotificationdate_dt;
    $fldIdValue = DateUtil::SqlDateToUserDate($rowData[$fldId], $userDateformat);
    $cell = $row->setCellValue($fldIdValue, $fldId);

    $fldId = QryEmployeeModel::poeareporteddate_dt;
    $fldIdValue = DateUtil::SqlDateToUserDate($rowData[$fldId], $userDateformat);
    $cell = $row->setCellValue($fldIdValue, $fldId);

    $fldId = QryEmployeeModel::poeadelisteddate_dt;
    $fldIdValue = DateUtil::SqlDateToUserDate($rowData[$fldId], $userDateformat);
    $cell = $row->setCellValue($fldIdValue, $fldId);

    $fldId = QryEmployeeModel::user_member_id;
    $fldIdValue = Utility::Nz($rowData, $fldId);
    if ($fldIdValue) {
        $userDescr = MemberController::GetDescriptionFromId($pdo, $fldIdValue, $cache, true);
        $userDescrSimple = MemberController::GetDescriptionFromId($pdo, $fldIdValue, $cache);
        $user = MemberController::GetEntity($pdo, $fldIdValue, $cache);
        $a = HtmlUtil::GetLinkMember('', $userDescrSimple, $fldIdValue);
        $cell = $row->setCellValue($a, $fldId);
        if ($user->Val_isblocked()) {
            $userDescr .= "<Br>BLOCKED (ID:{$fldIdValue})";
            $cell->Style_SetBackgroundColor('red');
        }
        HtmlUtil::AddTooltipInCell($userDescr, $cell);
    }

    $fldId = QryEmployeeModel::remarks;
    $fldIdValue = Utility::Nz($rowData, $fldId);
    HtmlUtil::SetRemarksTooltipInCell($fldIdValue, 5, $row, $fldId, $fldId);

    if (array_key_exists('Edit_Function', $parameters)) {
        $url = "javascript:{$parameters['Edit_Function']}({$rowData['id']})";
        $a = HtmlUtil::GetLink('', $url, '');
        $row->setCellValue($a, 'COL_EDIT');
        $row->getCell('COL_EDIT')->SetData('field', 'col_edit')->AppendClass(HtmlClasses::NO_PRINT);
    }
    if (array_key_exists('Copy_Function', $parameters)) {
        $url = "javascript:{$parameters['Copy_Function']}({$rowData['id']})";
        $a = HtmlUtil::GetLink('', $url, '');
        $row->setCellValue($a, 'COL_COPY');
        $row->getCell('COL_COPY')->SetData('field', 'col_copy')->AppendClass(HtmlClasses::NO_PRINT);
    }
    if (array_key_exists('Delete_Function', $parameters)) {
        $url = "javascript:{$parameters['Delete_Function']}({$rowData['id']})";
        $a = HtmlUtil::GetLink('', $url, '');
        $row->setCellValue($a, 'COL_DELETE');
        $row->getCell('COL_DELETE')->SetData('field', 'col_delete')->AppendClass(HtmlClasses::NO_PRINT);
    }

    return $row;
}

function SmartSearch_GetHelp() {
    $span = HtmlElement::SPAN();
    $span->SetClass('noPrint');
    $span->SetStyle('display:none');

    $tbl = HtmlTable::Create(4);
    $row = $tbl->newRow(false, true);
    $caption = "SmartSearch Flags";
    $cell = $row->setCellValue($caption, 0);
    $cell->setColspan(4);

    $row = HtmlUtil::AddSmartSearchHelpRow($tbl, "Code", "Description", "Format", "Example");
    $row = HtmlUtil::AddSmartSearchHelpRow($tbl, "I", "ID", " i:X|Y|... ", "i:66|77");
    $row = $tbl->newRow(false, true);
    $cell = $row->setCellValue("No field will search Last Name");
    $cell->setColSpan(4);

    $tbl->InsertInto($span);
    return $span;
}
Editor is loading...
Leave a Comment