CMXX - dealers

This commit is contained in:
“VeLiTi”
2025-05-08 13:42:19 +02:00
parent c3e5873912
commit da78217dd9
6 changed files with 226 additions and 50 deletions

View File

@@ -38,6 +38,9 @@ if(isset($get_content) && $get_content!=''){
elseif ($v[0] == 'id') {//create clause
$clause .= ' AND d.rowID = :'.$v[0];
}
elseif ($v[0] == 'rating_overall') {//create clause
$clause .= ' AND d.rating_overall >= :'.$v[0];
}
else {//create clause
$clause .= ' AND d.'.$v[0].' = :'.$v[0];
}
@@ -88,6 +91,7 @@ if (!empty($criterias)){
}
}
//Add paging details
if(isset($criterias['totals']) && $criterias['totals']==''){
$stmt->execute();

View File

@@ -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);