2015-03-23 19:02:38 -04:00
|
|
|
<?php
|
2016-06-06 14:25:18 -04:00
|
|
|
|
2015-03-23 19:02:38 -04:00
|
|
|
G::LoadClass("pmFunctions");
|
|
|
|
|
G::LoadClass("reportTables");
|
|
|
|
|
|
|
|
|
|
class ConsolidatedCases
|
|
|
|
|
{
|
2016-06-06 14:25:18 -04:00
|
|
|
private $existTable;
|
|
|
|
|
private $existTableName;
|
|
|
|
|
private $existCaseConsolidate;
|
|
|
|
|
private $rowRepTab;
|
|
|
|
|
private $rowCaseConsCore;
|
|
|
|
|
|
|
|
|
|
public function processConsolidated($data)
|
2015-03-23 19:02:38 -04:00
|
|
|
{
|
2016-06-06 14:25:18 -04:00
|
|
|
$Status = $data['con_status'];
|
|
|
|
|
$TasUid = $data['tas_uid'];
|
|
|
|
|
$DynUid = $data['dyn_uid'];
|
|
|
|
|
$ProUid = $data['pro_uid'];
|
|
|
|
|
$RepTabUid = $data['rep_uid'];
|
|
|
|
|
$TableName = $data['table_name'];
|
|
|
|
|
$Title = $data['title'];
|
|
|
|
|
if($this->isUpdateFields($data) && $Status) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
if ($this->existTable && $Status) {
|
2017-03-27 09:59:15 -04:00
|
|
|
throw (new \Exception(\G::LoadTranslation("ID_BATCH_ROUTING_TABLE_ALREADY_EXISTS")));
|
2016-06-06 14:25:18 -04:00
|
|
|
}
|
2015-03-23 19:02:38 -04:00
|
|
|
|
2016-06-06 14:25:18 -04:00
|
|
|
if ($RepTabUid != '') {
|
|
|
|
|
$this->deleteRepTab($RepTabUid, $Status, $TasUid, $TableName);
|
|
|
|
|
if(!$Status){
|
|
|
|
|
return true;
|
2015-03-23 19:02:38 -04:00
|
|
|
}
|
2016-06-06 14:25:18 -04:00
|
|
|
$RepTabUid = '';
|
2015-03-24 17:42:13 -04:00
|
|
|
}
|
2015-03-23 19:02:38 -04:00
|
|
|
|
2016-06-06 14:25:18 -04:00
|
|
|
$_POST['form']['PRO_UID'] = $ProUid;
|
|
|
|
|
$_POST['form']['REP_TAB_UID'] = $RepTabUid;
|
|
|
|
|
$_POST['form']['REP_TAB_NAME'] = $TableName;
|
2015-03-24 17:42:13 -04:00
|
|
|
$_POST['form']['REP_TAB_TYPE'] = "NORMAL";
|
|
|
|
|
$_POST['form']['REP_TAB_GRID'] = '';
|
|
|
|
|
$_POST['form']['REP_TAB_CONNECTION'] = 'wf';
|
|
|
|
|
$_POST['form']['REP_TAB_CREATE_DATE'] = date("Y-m-d H:i:s");
|
|
|
|
|
$_POST['form']['REP_TAB_STATUS'] = 'ACTIVE';
|
2016-06-06 14:25:18 -04:00
|
|
|
$_POST['form']['REP_TAB_TITLE'] = $Title;
|
2015-03-24 17:42:13 -04:00
|
|
|
$_POST['form']['FIELDS'] = array();
|
|
|
|
|
|
|
|
|
|
$sOldTableName = $_POST['form']['REP_TAB_NAME'];
|
|
|
|
|
$sOldConnection = $_POST['form']['REP_TAB_CONNECTION'];
|
|
|
|
|
|
2016-06-06 14:25:18 -04:00
|
|
|
$_POST['form']['REP_TAB_UID'] = $this->createReportTable($_POST['form']);
|
2015-03-24 17:42:13 -04:00
|
|
|
|
|
|
|
|
$oReportTables = new ReportTables();
|
|
|
|
|
$oReportTables->deleteAllReportVars($_POST['form']['REP_TAB_UID']);
|
|
|
|
|
|
|
|
|
|
G::LoadClass("pmDynaform");
|
|
|
|
|
$pmDyna = new pmDynaform(array());
|
2016-06-06 14:25:18 -04:00
|
|
|
$pmDyna->fields["CURRENT_DYNAFORM"] = $DynUid;
|
2015-03-24 17:42:13 -04:00
|
|
|
$dataDyna = $pmDyna->getDynaform();
|
|
|
|
|
$json = G::json_decode($dataDyna["DYN_CONTENT"]);
|
|
|
|
|
$fieldsDyna = $json->items[0]->items;
|
2016-06-06 14:25:18 -04:00
|
|
|
$valueType = array(
|
|
|
|
|
'text',
|
|
|
|
|
'textarea',
|
|
|
|
|
'dropdown',
|
|
|
|
|
'checkbox',
|
|
|
|
|
'datetime',
|
|
|
|
|
'yesno',
|
|
|
|
|
'date',
|
|
|
|
|
'hidden',
|
|
|
|
|
'currency',
|
|
|
|
|
'percentage',
|
|
|
|
|
'link'
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
foreach ($fieldsDyna as $value) {
|
2015-08-25 17:10:02 -04:00
|
|
|
foreach ($value as $val) {
|
2016-06-06 14:25:18 -04:00
|
|
|
if (isset($val->type)) {
|
|
|
|
|
if (in_array($val->type, $valueType)) {
|
2015-08-25 17:10:02 -04:00
|
|
|
$_POST['form']['FIELDS'][] = $val->name . '-' . $val->type;
|
|
|
|
|
}
|
2016-06-06 14:25:18 -04:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
list($aFieldsClass, $aFields) = $this->createReportVariables($_POST['form']['REP_TAB_UID'], $ProUid, $_POST['form']['FIELDS']);
|
|
|
|
|
|
|
|
|
|
$_POST['form']['REP_TAB_TYPE'] = "NORMAL";
|
|
|
|
|
$oReportTables->dropTable($sOldTableName, $sOldConnection);
|
|
|
|
|
$oReportTables->createTable($_POST['form']['REP_TAB_NAME'], $_POST['form']['REP_TAB_CONNECTION'], $_POST['form']['REP_TAB_TYPE'], $aFields);
|
|
|
|
|
$oReportTables->populateTable($_POST['form']['REP_TAB_NAME'], $_POST['form']['REP_TAB_CONNECTION'], $_POST['form']['REP_TAB_TYPE'], $aFields, $_POST['form']['PRO_UID'], '');
|
|
|
|
|
$sRepTabUid = $_POST['form']['REP_TAB_UID'];
|
|
|
|
|
|
|
|
|
|
$oCaseConsolidated = CaseConsolidatedCorePeer::retrieveByPK($TasUid);
|
|
|
|
|
if (!(is_object($oCaseConsolidated)) || get_class($oCaseConsolidated) != 'CaseConsolidatedCore') {
|
|
|
|
|
$oCaseConsolidated = new CaseConsolidatedCore();
|
|
|
|
|
$oCaseConsolidated->setTasUid($TasUid);
|
|
|
|
|
}
|
|
|
|
|
if ($this->existCaseConsolidate) {
|
|
|
|
|
$oCaseConsolidated->delete();
|
|
|
|
|
$oCaseConsolidated = CaseConsolidatedCorePeer::retrieveByPK($TasUid);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!(is_object($oCaseConsolidated)) || get_class($oCaseConsolidated) != 'CaseConsolidatedCore') {
|
|
|
|
|
$oCaseConsolidated = new CaseConsolidatedCore();
|
|
|
|
|
$oCaseConsolidated->setTasUid($TasUid);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$oCaseConsolidated->setConStatus('ACTIVE');
|
|
|
|
|
$oCaseConsolidated->setDynUid($DynUid);
|
|
|
|
|
$oCaseConsolidated->setRepTabUid($sRepTabUid);
|
|
|
|
|
$oCaseConsolidated->save();
|
|
|
|
|
|
|
|
|
|
$sClassName = $TableName;
|
|
|
|
|
$oAdditionalTables = new AdditionalTables();
|
|
|
|
|
$oAdditionalTables->createPropelClasses($TableName, $sClassName, $aFieldsClass, $TasUid);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function deleteRepTab($RepTabUid, $Status, $TasUid, $TableName)
|
|
|
|
|
{
|
|
|
|
|
if (!$Status) {
|
|
|
|
|
$oCaseConsolidated = CaseConsolidatedCorePeer::retrieveByPK($TasUid);
|
|
|
|
|
if (!(is_object($oCaseConsolidated)) || get_class($oCaseConsolidated) != 'CaseConsolidatedCore') {
|
|
|
|
|
$oCaseConsolidated = new CaseConsolidatedCore();
|
|
|
|
|
$oCaseConsolidated->setTasUid($TasUid);
|
|
|
|
|
$oCaseConsolidated->setConStatus('INACTIVE');
|
|
|
|
|
$oCaseConsolidated->save();
|
|
|
|
|
} else {
|
|
|
|
|
$oCaseConsolidated->delete();
|
|
|
|
|
}
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$rptUid = null;
|
|
|
|
|
$criteria = new Criteria();
|
|
|
|
|
$criteria->addSelectColumn(ReportTablePeer::REP_TAB_UID);
|
|
|
|
|
$criteria->add(ReportTablePeer::REP_TAB_UID, $RepTabUid);
|
|
|
|
|
$rsCriteria = ReportTablePeer::doSelectRS($criteria);
|
|
|
|
|
|
|
|
|
|
if ($rsCriteria->next()) {
|
|
|
|
|
$row = $rsCriteria->getRow();
|
|
|
|
|
$rptUid = $row[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$rpts = new ReportTables();
|
|
|
|
|
if ($rptUid != null) {
|
|
|
|
|
$rpts->deleteReportTable($rptUid);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$sClassName = $TableName;
|
|
|
|
|
$sPath = PATH_DB . SYS_SYS . PATH_SEP . 'classes' . PATH_SEP;
|
|
|
|
|
|
|
|
|
|
@unlink($sPath . $sClassName . '.php');
|
|
|
|
|
@unlink($sPath . $sClassName . 'Peer.php');
|
|
|
|
|
@unlink($sPath . PATH_SEP . 'map' . PATH_SEP . $sClassName . 'MapBuilder.php');
|
|
|
|
|
@unlink($sPath . PATH_SEP . 'om' . PATH_SEP . 'Base' . $sClassName . '.php');
|
|
|
|
|
@unlink($sPath . PATH_SEP . 'om' . PATH_SEP . 'Base' . $sClassName . 'Peer.php');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function isUpdateFields($data)
|
|
|
|
|
{
|
|
|
|
|
$oSession = new DBSession(new DBConnection());
|
|
|
|
|
$oTables = $oSession->Execute('SHOW TABLES FROM ' . DB_NAME);
|
|
|
|
|
$this->existTable = false;
|
|
|
|
|
while ($aRow = $oTables->read()) {
|
|
|
|
|
if (in_array($data['table_name'], $aRow)) {
|
|
|
|
|
$this->existTable = true;
|
|
|
|
|
break;
|
2015-08-25 10:30:37 -04:00
|
|
|
}
|
2015-03-24 17:42:13 -04:00
|
|
|
}
|
2016-06-06 14:25:18 -04:00
|
|
|
$this->existTableName = $this->existTableName($data['table_name']);
|
|
|
|
|
$this->existCaseConsolidate = $this->existCaseConsolidate($data['tas_uid']);
|
|
|
|
|
unset($data['title']);
|
|
|
|
|
unset($data['con_status']);
|
|
|
|
|
$diff = $data;
|
|
|
|
|
if ($this->existTableName) {
|
|
|
|
|
$diff = array_diff($data, $this->rowRepTab);
|
|
|
|
|
}
|
|
|
|
|
if ($this->existCaseConsolidate){
|
|
|
|
|
$diff = array_diff($diff, $this->rowCaseConsCore);
|
|
|
|
|
}
|
|
|
|
|
return count($diff) <= 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function existTableName($name)
|
|
|
|
|
{
|
|
|
|
|
$criteria = new Criteria();
|
|
|
|
|
$criteria->add(ReportTablePeer::REP_TAB_NAME, $name);
|
|
|
|
|
$rsCriteria = ReportTablePeer::doSelectRS($criteria);
|
|
|
|
|
$existName = false;
|
|
|
|
|
if ($rsCriteria->next()) {
|
|
|
|
|
$this->rowRepTab = $rsCriteria->getRow();
|
|
|
|
|
$existName = true;
|
|
|
|
|
}
|
|
|
|
|
return $existName;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function existCaseConsolidate($taskUid)
|
|
|
|
|
{
|
|
|
|
|
$criteria = new Criteria();
|
|
|
|
|
$criteria->add(CaseConsolidatedCorePeer::TAS_UID, $taskUid);
|
|
|
|
|
$rsCriteria = CaseConsolidatedCorePeer::doSelectRS($criteria);
|
|
|
|
|
$existCaseConsolidate = false;
|
|
|
|
|
if ($rsCriteria->next()) {
|
|
|
|
|
$this->rowCaseConsCore = $rsCriteria->getRow();
|
|
|
|
|
$existCaseConsolidate = true;
|
|
|
|
|
}
|
|
|
|
|
return $existCaseConsolidate;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function createReportTable($dataRepTab)
|
|
|
|
|
{
|
|
|
|
|
G::LoadClass("reportTables");
|
|
|
|
|
$oReportTable = new ReportTable();
|
|
|
|
|
$oReportTable->create($dataRepTab);
|
|
|
|
|
return $oReportTable->getRepTabUid();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function createReportVariables($RepTabUid, $ProUid, $formFields)
|
|
|
|
|
{
|
|
|
|
|
$oReportVar = new ReportVar();
|
|
|
|
|
$fieldsClass = array();
|
|
|
|
|
$fields = array();
|
2015-03-24 17:42:13 -04:00
|
|
|
$i = 1;
|
2016-06-06 14:25:18 -04:00
|
|
|
$fieldsClass[$i]['FLD_NAME'] = 'APP_UID';
|
|
|
|
|
$fieldsClass[$i]['FLD_NULL'] = 'off';
|
|
|
|
|
$fieldsClass[$i]['FLD_KEY'] = 'on';
|
|
|
|
|
$fieldsClass[$i]['FLD_AUTO_INCREMENT'] = 'off';
|
|
|
|
|
$fieldsClass[$i]['FLD_DESCRIPTION'] = '';
|
|
|
|
|
$fieldsClass[$i]['FLD_TYPE'] = 'VARCHAR' ;
|
|
|
|
|
$fieldsClass[$i]['FLD_SIZE'] = 32;
|
2015-03-24 17:42:13 -04:00
|
|
|
$i++;
|
2016-06-06 14:25:18 -04:00
|
|
|
$fieldsClass[$i]['FLD_NAME'] = 'APP_NUMBER';
|
|
|
|
|
$fieldsClass[$i]['FLD_NULL'] = 'off';
|
|
|
|
|
$fieldsClass[$i]['FLD_KEY'] = 'on';
|
|
|
|
|
$fieldsClass[$i]['FLD_AUTO_INCREMENT'] = 'off';
|
|
|
|
|
$fieldsClass[$i]['FLD_DESCRIPTION'] = '';
|
|
|
|
|
$fieldsClass[$i]['FLD_TYPE'] = 'VARCHAR' ;
|
|
|
|
|
$fieldsClass[$i]['FLD_SIZE'] = 255;
|
|
|
|
|
|
|
|
|
|
foreach ($formFields as $sField) {
|
2015-03-24 17:42:13 -04:00
|
|
|
$aField = explode('-', $sField);
|
|
|
|
|
if ($aField[1] == 'title' || $aField[1] == 'submit') {
|
|
|
|
|
continue;
|
2015-03-23 19:02:38 -04:00
|
|
|
}
|
|
|
|
|
$i++;
|
2016-06-06 14:25:18 -04:00
|
|
|
$fieldsClass[$i]['FLD_NAME'] = $aField[0];
|
|
|
|
|
$fieldsClass[$i]['FLD_NULL'] = 'off';
|
|
|
|
|
$fieldsClass[$i]['FLD_KEY'] = 'off';
|
|
|
|
|
$fieldsClass[$i]['FLD_AUTO_INCREMENT'] = 'off';
|
|
|
|
|
$fieldsClass[$i]['FLD_DESCRIPTION'] = '';
|
2015-03-23 19:02:38 -04:00
|
|
|
|
2015-03-24 17:42:13 -04:00
|
|
|
switch ($aField[1]) {
|
|
|
|
|
case 'currency':
|
|
|
|
|
case 'percentage':
|
|
|
|
|
$sType = 'number';
|
2016-06-06 14:25:18 -04:00
|
|
|
$fieldsClass[$i]['FLD_TYPE'] = 'FLOAT' ;
|
|
|
|
|
$fieldsClass[$i]['FLD_SIZE'] = 255;
|
2015-03-24 17:42:13 -04:00
|
|
|
break;
|
|
|
|
|
case 'text':
|
|
|
|
|
case 'password':
|
|
|
|
|
case 'dropdown':
|
|
|
|
|
case 'yesno':
|
|
|
|
|
case 'checkbox':
|
|
|
|
|
case 'radiogroup':
|
|
|
|
|
case 'hidden':
|
|
|
|
|
case "link":
|
|
|
|
|
$sType = 'char';
|
2016-06-06 14:25:18 -04:00
|
|
|
$fieldsClass[$i]['FLD_TYPE'] = 'VARCHAR' ;
|
|
|
|
|
$fieldsClass[$i]['FLD_SIZE'] = 255;
|
2015-03-24 17:42:13 -04:00
|
|
|
break;
|
|
|
|
|
case 'textarea':
|
|
|
|
|
$sType = 'text';
|
2016-06-06 14:25:18 -04:00
|
|
|
$fieldsClass[$i]['FLD_TYPE'] = 'TEXT' ;
|
|
|
|
|
$fieldsClass[$i]['FLD_SIZE'] = '';
|
2015-03-24 17:42:13 -04:00
|
|
|
break;
|
|
|
|
|
case 'date':
|
|
|
|
|
$sType = 'date';
|
2016-06-06 14:25:18 -04:00
|
|
|
$fieldsClass[$i]['FLD_TYPE'] = 'DATE' ;
|
|
|
|
|
$fieldsClass[$i]['FLD_SIZE'] = '';
|
2015-03-24 17:42:13 -04:00
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
$sType = 'char';
|
2016-06-06 14:25:18 -04:00
|
|
|
$fieldsClass[$i]['FLD_TYPE'] = 'VARCHAR' ;
|
|
|
|
|
$fieldsClass[$i]['FLD_SIZE'] = 255;
|
2015-03-24 17:42:13 -04:00
|
|
|
break;
|
2015-03-23 19:02:38 -04:00
|
|
|
}
|
|
|
|
|
|
2016-06-06 14:25:18 -04:00
|
|
|
$oReportVar->create(array(
|
|
|
|
|
'REP_TAB_UID' => $RepTabUid,
|
|
|
|
|
'PRO_UID' => $ProUid,
|
|
|
|
|
'REP_VAR_NAME' => $aField[0],
|
|
|
|
|
'REP_VAR_TYPE' => $sType)
|
|
|
|
|
);
|
|
|
|
|
$fields[] = array('sFieldName' => $aField[0], 'sType' => $sType);
|
2015-06-19 18:01:40 -04:00
|
|
|
}
|
2016-06-06 14:25:18 -04:00
|
|
|
return array($fieldsClass, $fields);
|
2015-03-23 19:02:38 -04:00
|
|
|
}
|
|
|
|
|
}
|