Files
old-wiaas-legacy/api-wiaas/server/components/v1/packages/CustomerPackages.php
2018-06-11 11:09:35 +02:00

84 lines
3.4 KiB
PHP

<?php
class CustomerPackages{
const PACKAGE_TYPES = [
'ID_STANDARD_TYPE' => 1,
'ID_OPTION_TYPE' => 2,
'ID_ADDITONAL_TYPE' => 3
];
public function getShopPackages($idCommercialLead, $idCustomer, $idPackage = 0, $search = ''){
global $database;
$whereSql = "WHERE p.status='available' AND p.idPackageType=".self::PACKAGE_TYPES['ID_STANDARD_TYPE']." ";
$search = $database->escapeValue($search);
if($idPackage !== 0){
$whereSql .= " AND p.id=$idPackage";
}
if($search !== ''){
$searchValues = explode(' ', $search);
$packageCondition = '';
$descriptionCondition = '';
$referenceCondition = '';
$countryCondition = '';
foreach ($searchValues as $valueToSearch) {
if($valueToSearch !== ''){
$packageCondition .= "p.name like '%".$valueToSearch."%'"." OR ";
$descriptionCondition .= " p.description like '%".$valueToSearch."%'"." OR ";
$referenceCondition .= "p.reference='".$valueToSearch."' OR ";
$countryCondition .= "c.name='".$valueToSearch."' OR ";
}
}
$countryCondition = rtrim($countryCondition, ' OR ');
$whereSql .= " AND ( $packageCondition
$descriptionCondition
$referenceCondition
$countryCondition)";
}
$sql = "SELECT
p.id AS idPackage,
p.name AS packageName
FROM
".TABLES['packages']." p
INNER JOIN
".TABLES['countries']." c ON c.id = p.idCountry
INNER JOIN
(SELECT
idPackage,
plcl.idPaymentType,
plcl.idCommercialLead,
MAX(IFNULL(idCustomer, 0)) AS idCustomer
FROM
".TABLES['price_list_commercial_lead']." plcl
LEFT OUTER JOIN ".TABLES['customers']." cust
ON cust.id = plcl.idCustomer
WHERE
(cust.id = $idCustomer OR cust.idUser IS NULL)
AND plcl.idCommercialLead = $idCommercialLead
GROUP BY plcl.idPackage , plcl.idPaymentType
) AS price_selection
ON price_selection.idPackage = p.id
INNER JOIN ".TABLES['price_list_commercial_lead']." plcl
ON plcl.idPackage = price_selection.idPackage
AND plcl.idPaymentType = price_selection.idPaymentType
AND plcl.idCommercialLead = price_selection.idCommercialLead
AND IFNULL(plcl.idCustomer, 0) = price_selection.idCustomer
AND plcl.visibleToCustomer = 1
INNER JOIN
(SELECT
proc.idCountry
FROM ".TABLES['processes']." proc
GROUP BY proc.idCountry
) proc_countries
ON proc_countries.idCountry=p.idCountry
$whereSql
GROUP BY p.id
ORDER BY p.id DESC";
return $database->fetchResultArray($sql);
}
}