Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
CRAP | |
72.37% |
110 / 152 |
ResExtController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
103.80 | |
72.19% |
109 / 151 |
create | |
0.00% |
0 / 1 |
4.46 | |
45.45% |
5 / 11 |
|||
delete | |
0.00% |
0 / 1 |
3.24 | |
70.00% |
7 / 10 |
|||
deleteExtRes | |
0.00% |
0 / 1 |
2.02 | |
83.33% |
5 / 6 |
|||
storeExtResource | |
0.00% |
0 / 1 |
7.87 | |
73.91% |
17 / 23 |
|||
object2array | |
0.00% |
0 / 1 |
72 | |
0.00% |
0 / 12 |
|||
prepareStorageExt | |
0.00% |
0 / 1 |
29.84 | |
84.27% |
75 / 89 |
<?php | |
/** | |
* Copyright Maarch since 2008 under licence GPLv3. | |
* See LICENCE.txt file at the root folder for more details. | |
* This file is part of Maarch software. | |
* | |
*/ | |
/** | |
* @brief Resource Controller | |
* @author dev@maarch.org | |
* @ingroup core | |
*/ | |
namespace Core\Controllers; | |
use Psr\Http\Message\RequestInterface; | |
use Psr\Http\Message\ResponseInterface; | |
use Respect\Validation\Validator; | |
use Core\Models\ResExtModel; | |
require_once 'core/class/class_db_pdo.php'; | |
class ResExtController | |
{ | |
public function create(RequestInterface $request, ResponseInterface $response, $aArgs) | |
{ | |
if (!empty($aArgs)) { | |
$aArgs = $aArgs; | |
} else { | |
$aArgs = $request->getQueryParams(); | |
$aArgs['data'] = json_decode($aArgs['data']); | |
$aArgs['data'] = $this->object2array($aArgs['data']); | |
} | |
$return = $this->storeExtResource($aArgs); | |
if ($return['errors']) { | |
return $response | |
->withStatus(500) | |
->withJson( | |
['errors' => _NOT_CREATE . ' ' . $return['errors']] | |
); | |
} | |
return $response->withJson([$return]); | |
} | |
public function delete(RequestInterface $request, ResponseInterface $response, $aArgs) | |
{ | |
if (isset($aArgs['id'])) { | |
$obj = $this->deleteExtRes([ | |
'id' => $aArgs['id'] | |
]); | |
if (!$obj) { | |
return $response | |
->withStatus(500) | |
->withJson(['errors' => _NOT_DELETE]); | |
} | |
} else { | |
return $response | |
->withStatus(500) | |
->withJson(['errors' => _NOT_DELETE]); | |
} | |
$datas = [ | |
$obj, | |
]; | |
return $response->withJson($datas); | |
} | |
/** | |
* Deletes ext resource on database. | |
* @param $resId integer | |
* @param $table string | |
* @return res_id | |
*/ | |
public function deleteExtRes($aArgs) | |
{ | |
if (isset($aArgs['id'])) { | |
$obj = ResExtModel::delete([ | |
'id' => $aArgs['id'] | |
]); | |
} else { | |
return false; | |
} | |
$datas = $obj; | |
return $datas; | |
} | |
/** | |
* Store ext resource on database. | |
* @param $resId integer | |
* @param $data array | |
* @param $table string | |
* @return res_id | |
*/ | |
public function storeExtResource($aArgs) | |
{ | |
if (empty($aArgs['resId'])) { | |
return ['errors' => 'resId ' . _EMPTY]; | |
} | |
if (empty($aArgs['data'])) { | |
return ['errors' => 'data ' . _EMPTY]; | |
} | |
if (empty($aArgs['table'])) { | |
return ['errors' => 'table ' . _EMPTY]; | |
} | |
if (empty($aArgs['resTable'])) { | |
return ['errors' => 'resTable ' . _EMPTY]; | |
} | |
$resDetails = ResExtModel::getById([ | |
'resId' => $aArgs['resId'], | |
'table' => $aArgs['resTable'], | |
'select' => ['res_id'] | |
]); | |
if (empty($resDetails[0]['res_id'])) { | |
return ['errors' => 'res_id ' . _OF . ' ' . $aArgs['resTable'] . ' ' . _NOT_EXISTS]; | |
} | |
$resDetails = ResExtModel::getById([ | |
'resId' => $aArgs['resId'], | |
'table' => $aArgs['table'], | |
'select' => ['res_id'] | |
]); | |
if ($resDetails[0]['res_id'] > 0) { | |
return ['errors' => 'res_id ' . _OF . ' ' . $aArgs['table'] . ' ' . _EXISTS]; | |
} | |
$prepareData = $this->prepareStorageExt($aArgs); | |
$resExtInsert = ResExtModel::create([ | |
'table' => 'mlb_coll_ext', | |
'data' => $prepareData | |
]); | |
return true; | |
} | |
/** | |
* Convert an object to an array | |
* @param $object object to convert | |
*/ | |
private function object2array($object) | |
{ | |
$return = null; | |
if (is_array($object)) { | |
foreach ($object as $key => $value) { | |
$return[$key] = $this->object2array($value); | |
} | |
} else { | |
if (is_object($object)) { | |
$var = get_object_vars($object); | |
if ($var) { | |
foreach ($var as $key => $value) { | |
$return[$key] = ($key && !$value) ? null : $this->object2array($value); | |
} | |
} else { | |
return $object; | |
} | |
} else { | |
return $object; | |
} | |
} | |
return $return; | |
} | |
/** | |
* Prepares storage on database for resExt. | |
* @param $data array | |
* @return array $data | |
*/ | |
public function prepareStorageExt($aArgs) | |
{ | |
if (empty($aArgs['resId'])) { | |
return ['errors' => 'resId ' . _EMPTY]; | |
} | |
if (empty($aArgs['data'])) { | |
return ['errors' => 'data ' . _EMPTY]; | |
} | |
if (empty($aArgs['table'])) { | |
return ['errors' => 'table ' . _EMPTY]; | |
} | |
$queryExtFields = '('; | |
$queryExtValues = '('; | |
$queryExtValuesFinal = '('; | |
$parameters = array(); | |
$findProcessLimitDate = false; | |
$findProcessNotes = false; | |
$delayProcessNotes = 0; | |
$resId = $aArgs['resId']; | |
$table = $aArgs['table']; | |
$data = $aArgs['data']; | |
$countD = count($data); | |
for ($i = 0; $i < $countD; $i++) { | |
if ($data[$i]['column'] == 'process_limit_date') { | |
$findProcessLimitDate = true; | |
} | |
if ($data[$i]['column'] == 'process_notes') { | |
$findProcessNotes = true; | |
$don = explode(',', $data[$i]['value']); | |
$delayProcessNotes = $don['0']; | |
$calendarType = $don['1']; | |
} | |
} | |
if ($table == 'mlb_coll_ext') { | |
$ResExtModel = new ResExtModel(); | |
if ($delayProcessNotes > 0) { | |
$processLimitDate = $ResExtModel->retrieveProcessLimitDate([ | |
'resId' => $resId, | |
'delayProcessNotes' => $delayProcessNotes, | |
'calendarType' => $calendarType, | |
]); | |
} else { | |
$processLimitDate = $ResExtModel->retrieveProcessLimitDate([ | |
'resId' => $resId | |
]); | |
} | |
} | |
if (!$findProcessLimitDate && $processLimitDate <> '') { | |
array_push( | |
$data, | |
array( | |
'column' => 'process_limit_date', | |
'value' => $processLimitDate, | |
'type' => 'date', | |
) | |
); | |
} | |
require_once 'apps/maarch_entreprise/class/class_chrono.php'; | |
$chronoX = new \chrono(); | |
require_once 'apps/maarch_entreprise/Models/ContactsModel.php'; | |
$contacts = new \ContactsModel(); | |
for ($i=0; $i<count($data); $i++) { | |
if (strtoupper($data[$i]['type']) == 'INTEGER' || | |
strtoupper($data[$i]['type']) == 'FLOAT' | |
) { | |
if ($data[$i]['value'] == '') { | |
$data[$i]['value'] = '0'; | |
} | |
$data[$i]['value'] = str_replace(',', '.', $data[$i]['value']); | |
} | |
if (strtoupper($data[$i]['column']) == strtoupper('category_id')) { | |
$categoryId = $data[$i]['value']; | |
} | |
if (strtoupper($data[$i]['column']) == strtoupper('alt_identifier') && | |
$data[$i]['value'] == "" | |
) { | |
if ($table == 'mlb_coll_ext') { | |
$resDetails = ResExtModel::getById([ | |
'resId' => $resId, | |
'table' => 'res_letterbox', | |
'select' => ['destination, type_id'] | |
]); | |
$myVars = array( | |
'entity_id' => $resDetails[0]['destination'], | |
'type_id' => $resDetails[0]['type_id'], | |
'category_id' => $categoryId, | |
'folder_id' => "", | |
); | |
$myChrono = $chronoX->generate_chrono($categoryId, $myVars, 'false'); | |
$data[$i]['value'] = $myChrono; | |
} | |
} | |
if (strtoupper($data[$i]['column']) == strtoupper('exp_contact_id') && | |
$data[$i]['value'] <> "" && | |
!is_numeric($data[$i]['value']) | |
) { | |
$theString = str_replace(">", "", $data[$i]['value']); | |
$mail = explode("<", $theString); | |
$contactDetails =$contacts->getByEmail([ | |
'email' => $mail[count($mail) -1], | |
'select' => ['contact_id'] | |
]); | |
if ($contactDetails[0]['contact_id'] <> "") { | |
$data[$i]['value'] = $contactDetails[0]['contact_id']; | |
} else { | |
$data[$i]['value'] = 0; | |
} | |
$data[$i]['type'] = 'integer'; | |
} | |
if (strtoupper($data[$i]['column']) == strtoupper('address_id') && | |
$data[$i]['value'] <> "" && | |
!is_numeric($data[$i]['value']) | |
) { | |
$theString = str_replace(">", "", $data[$i]['value']); | |
$mail = explode("<", $theString); | |
$contactDetails =$contacts->getByEmail([ | |
'email' => $mail[count($mail) -1], | |
'select' => ['ca_id'] | |
]); | |
if ($contactDetails[0]['ca_id'] <> "") { | |
$data[$i]['value'] = $contactDetails[0]['ca_id']; | |
} else { | |
$data[$i]['value'] = 0; | |
} | |
$data[$i]['type'] = 'integer'; | |
} | |
//COLUMN | |
$data[$i]['column'] = strtolower($data[$i]['column']); | |
//VALUE | |
$parameters[$data[$i]['column']] = $data[$i]['value']; | |
} | |
$parameters['res_id'] = $resId; | |
return $parameters; | |
} | |
} |