CMXX - dealers
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
<?php
|
||||
defined($security_key) or exit;
|
||||
|
||||
ini_set('display_errors', '1');
|
||||
ini_set('display_startup_errors', '1');
|
||||
error_reporting(E_ALL);
|
||||
//------------------------------------------
|
||||
// dealers
|
||||
//------------------------------------------
|
||||
@@ -29,6 +31,9 @@ if(isset($post_content['bounds'])){
|
||||
//------------------------------------------
|
||||
if(isset($post_content) && $post_content !=''){
|
||||
|
||||
//ADD STATUS TO POST_CONTENT, active only
|
||||
$post_content['status'] = 1;
|
||||
|
||||
//------------------------------------------
|
||||
//RUN THROUGH POST CONTENT
|
||||
//------------------------------------------
|
||||
@@ -59,6 +64,10 @@ if(isset($post_content['bounds'])){
|
||||
$criterias['lat_sw'] = $southWestLat;
|
||||
$criterias['lat_ne'] = $northEastLat;
|
||||
}
|
||||
if ($criteria == 'status'){
|
||||
$clause .= " AND d.status = :status ";
|
||||
$criterias['status'] = $value;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -104,10 +113,36 @@ if(isset($post_content['bounds'])){
|
||||
// EXECUTE QUERY
|
||||
//------------------------------------------
|
||||
$stmt->execute();
|
||||
|
||||
|
||||
//Get results
|
||||
$messages = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
//------------------------------------------
|
||||
// Check if there are 0 rows returned
|
||||
//------------------------------------------
|
||||
if (empty($messages)) {
|
||||
// Calculate the center
|
||||
$centerLat = ($southWestLat + $northEastLat) / 2;
|
||||
$centerLng = ($southWestLng + $northEastLng) / 2;
|
||||
|
||||
// No rows were returned, execute alternative query
|
||||
$sql = 'SELECT
|
||||
d.*,
|
||||
(6371 * acos(
|
||||
cos(radians('.$centerLat.')) * cos(radians(d.lat)) * cos(radians(d.lng) - radians('.$centerLng.')) +
|
||||
sin(radians('.$centerLat.')) * sin(radians(d.lat))
|
||||
)) AS distance_km,
|
||||
m.full_path
|
||||
FROM dealers d LEFT JOIN media m ON d.dealer_media = m.rowID
|
||||
WHERE d.status = 1
|
||||
ORDER BY distance_km
|
||||
LIMIT 10';
|
||||
|
||||
$altStmt = $pdo->prepare($sql);
|
||||
$altStmt->execute();
|
||||
$messages = $altStmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
|
||||
//------------------------------------------
|
||||
//CHANGE ROWID INTO UUID
|
||||
//------------------------------------------
|
||||
@@ -151,11 +186,11 @@ elseif(isset($post_content['dealerfinder'])){
|
||||
$geo_search_2 = 'HAVING distance < '.$post_content['range'];
|
||||
|
||||
//Build SQL FOR GEO SEARCH
|
||||
$sql = 'select d.*, m.full_path, '.$geo_search_1.' FROM dealers d LEFT JOIN media m ON d.dealer_media = m.rowID '.$geo_search_2.' ORDER BY d.rating_overall ';
|
||||
$sql = 'select d.*, m.full_path, '.$geo_search_1.' FROM dealers d LEFT JOIN media m ON d.dealer_media = m.rowID WHERE d.status = 1 '.$geo_search_2.' ORDER BY ';
|
||||
}
|
||||
else {
|
||||
//Use standard
|
||||
$sql = 'select d.*, m.full_path FROM dealers d LEFT JOIN media m ON d.dealer_media = m.rowID ORDER BY d.rating_overall ';
|
||||
$sql = 'select d.*, m.full_path FROM dealers d LEFT JOIN media m ON d.dealer_media = m.rowID WHERE d.status = 1 ORDER BY ';
|
||||
}
|
||||
|
||||
//CHECK ALL THE POSTED ITEMS
|
||||
@@ -165,24 +200,28 @@ elseif(isset($post_content['dealerfinder'])){
|
||||
|
||||
//TRANSLATE RESPONSE TO DATABASE VALUES
|
||||
switch ($key) {
|
||||
case $field_question_1: //rating overall
|
||||
case ($field_question_1 ?? 'budget'): //budget
|
||||
//check value returned and include SQL
|
||||
switch ($value) {
|
||||
case '1':
|
||||
$sql .= 'case when d.'.$key.' = 8 then 1 else 0 end +';
|
||||
$sql .= 'case when d.'.$key.' = 1 then 1 else 0 end +';
|
||||
break;
|
||||
|
||||
|
||||
case '0':
|
||||
$sql .= 'case when (d.'.$key.' > 6.5 && d.d.'.$key.' < 8 ) then 1 else 0 end +';
|
||||
$sql .= 'case when d.'.$key.' = 0 then 1 else 0 end +';
|
||||
break;
|
||||
}
|
||||
//------------------------------------
|
||||
break;
|
||||
|
||||
case $field_question_2: //locations
|
||||
case ($field_question_2 ?? 'showroom_quality'): //showroom_quality
|
||||
|
||||
//check value returned and include SQL
|
||||
switch ($value) {
|
||||
case '2':
|
||||
$sql .= 'case when d.'.$key.' = 2 then 1 else 0 end +';
|
||||
break;
|
||||
|
||||
case '1':
|
||||
$sql .= 'case when d.'.$key.' = 1 then 1 else 0 end +';
|
||||
break;
|
||||
@@ -194,10 +233,14 @@ elseif(isset($post_content['dealerfinder'])){
|
||||
//------------------------------------
|
||||
break;
|
||||
|
||||
case $field_question_3: //brand_type
|
||||
case ($field_question_3 ?? 'showroom_size'): //showroom_size
|
||||
|
||||
//check value returned and include SQL
|
||||
switch ($value) {
|
||||
case '2':
|
||||
$sql .= 'case when d.'.$key.' = 2 then 1 else 0 end +';
|
||||
break;
|
||||
|
||||
case '1':
|
||||
$sql .= 'case when d.'.$key.' = 1 then 1 else 0 end +';
|
||||
break;
|
||||
@@ -209,43 +252,14 @@ elseif(isset($post_content['dealerfinder'])){
|
||||
//------------------------------------
|
||||
break;
|
||||
|
||||
case $field_question_4: //showroom size
|
||||
case ($field_question_4 ?? 'brand_category'): //brand_category
|
||||
|
||||
//check value returned and include SQL
|
||||
switch ($value) {
|
||||
case '1':
|
||||
$sql .= 'case when d.'.$key.' = 1 then 1 else 0 end +';
|
||||
case '2':
|
||||
$sql .= 'case when d.'.$key.' = 2 then 1 else 0 end +';
|
||||
break;
|
||||
|
||||
case '0':
|
||||
$sql .= 'case when d.'.$key.' = 0 then 1 else 0 end +';
|
||||
break;
|
||||
|
||||
case 'C':
|
||||
$sql .= 'case when d.'.$key.' = 2 then 1 else 0 end +';
|
||||
break;
|
||||
}
|
||||
//------------------------------------
|
||||
break;
|
||||
case $field_question_5: //garden_center
|
||||
|
||||
//check value returned and include SQL
|
||||
switch ($value) {
|
||||
case '1':
|
||||
$sql .= 'case when d.'.$key.' = 1 then 1 else 0 end +';
|
||||
break;
|
||||
|
||||
case '0':
|
||||
$sql .= 'case when d.'.$key.' = 0 then 1 else 0 end +';
|
||||
break;
|
||||
}
|
||||
//------------------------------------
|
||||
break;
|
||||
|
||||
case $field_question_6: // focus offering
|
||||
|
||||
//check value returned and include SQL
|
||||
switch ($value) {
|
||||
case '1':
|
||||
$sql .= 'case when d.'.$key.' = 1 then 1 else 0 end +';
|
||||
break;
|
||||
@@ -260,11 +274,13 @@ elseif(isset($post_content['dealerfinder'])){
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Replace LAST J
|
||||
$sql = removeTrailingElement($sql, ',');
|
||||
//REPLACE LAST + with DESC
|
||||
$sql = substr($sql, 0, -1).' desc limit 0,4';
|
||||
$sql = removeTrailingElement($sql, '+').' desc limit 0,4';
|
||||
//Prepare statement
|
||||
$stmt = $pdo->prepare($sql);
|
||||
|
||||
//Excute Query
|
||||
$stmt->execute();
|
||||
//Get results
|
||||
@@ -279,13 +295,70 @@ elseif(isset($post_content['dealerfinder'])){
|
||||
}
|
||||
|
||||
$updatedData = array_map('updateRowID', $messages);
|
||||
$messages = json_encode($messages, JSON_UNESCAPED_UNICODE);
|
||||
$messages = json_encode($updatedData, JSON_UNESCAPED_UNICODE);
|
||||
//------------------------------------------
|
||||
//Send results
|
||||
//------------------------------------------
|
||||
echo $messages;
|
||||
|
||||
}
|
||||
elseif(isset($post_content['dealer_closeby'])){
|
||||
|
||||
//++++++++++++++++++++++
|
||||
//Process FIND CLOSEST DEALERS
|
||||
//++++++++++++++++++++++
|
||||
|
||||
//GET GEOLOCATION
|
||||
if ((isset($post_content['latitude']) && $post_content['latitude']!='0') && (isset($post_content['longitude']) && $post_content['longitude']!='0')){
|
||||
//INPUT GEOLOCATION USER
|
||||
$lat = $post_content['latitude'];
|
||||
$lng = $post_content['longitude'];
|
||||
|
||||
//Build SQL FOR GEO SEARCH
|
||||
$sql = 'SELECT
|
||||
d.rowID,
|
||||
d.name as dealer,
|
||||
d.lat,
|
||||
d.lng,
|
||||
(6371 * acos(
|
||||
cos(radians('.$lat.')) * cos(radians(d.lat)) * cos(radians(d.lng) - radians('.$lng.')) +
|
||||
sin(radians('.$lat.')) * sin(radians(d.lat))
|
||||
)) AS distance_km,
|
||||
m.full_path as imageUrl
|
||||
FROM dealers d LEFT JOIN media m ON d.dealer_media = m.rowID
|
||||
WHERE d.status = 1
|
||||
ORDER BY distance_km
|
||||
LIMIT 5';
|
||||
|
||||
//Prepare statement
|
||||
$stmt = $pdo->prepare($sql);
|
||||
|
||||
//Excute Query
|
||||
$stmt->execute();
|
||||
|
||||
//Get results
|
||||
$messages = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
//------------------------------------------
|
||||
//CHANGE ROWID INTO UUID
|
||||
//------------------------------------------
|
||||
function updateRowID($row) {
|
||||
$row['rowID'] = encodeUuid($row['rowID']);
|
||||
return $row;
|
||||
}
|
||||
|
||||
$updatedData = array_map('updateRowID', $messages);
|
||||
header('Content-Type: application/json');
|
||||
$messages = json_encode($updatedData, JSON_UNESCAPED_UNICODE);
|
||||
//------------------------------------------
|
||||
//Send results
|
||||
//------------------------------------------
|
||||
echo $messages;
|
||||
}
|
||||
else {
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(['error' => "Latitude or longitude not provided."]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//++++++++++++++++++++++
|
||||
@@ -311,6 +384,8 @@ else
|
||||
$clause_insert ='';
|
||||
$input_insert = '';
|
||||
|
||||
//UPDATE CALCULATED VALUES BUDGET, SHOWROOM_QUALTIY, BRAND_CATEGORY AND UPDATE DEALER_SLUG
|
||||
$post_content = processPostContent($post_content);
|
||||
|
||||
if (isset($post_content['opening_hours'])){
|
||||
$post_content['opening_hours'] = json_encode($post_content['opening_hours'], JSON_UNESCAPED_UNICODE);
|
||||
|
||||
Reference in New Issue
Block a user