JezK
Edit File: functions.php
<?php // ini_set('display_errors', 1); // ini_set('display_startup_errors', 1); // error_reporting(E_ALL); use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; use PHPMailer\PHPMailer\SMTP; class AdminFunctions { public $conn; public $db; function __construct() { require_once dirname(__FILE__) . '/dbconnect.php'; require_once dirname(__FILE__) . '/../../vendor/autoload.php'; // opening db connection date_default_timezone_set('Etc/UTC'); $this->db = new DbConnect(); $this->conn = $this->db->connect(); } function addNewUser($post) { $name = trim($post['name']); $mobile = trim($post['mobile']); $email = strtolower(trim($post['email'])); $password = base64_encode($post['password']); $address = trim($post['address']); // Checking User Exists or not $chechNumber = $this->conn->prepare('SELECT phone FROM user WHERE phone=:phone AND delete_status!=1'); $chechNumber->bindParam(':phone', $mobile, PDO::PARAM_STR); $chechNumber->execute(); $numRows = $chechNumber->rowCount(); if ($numRows == 0) { // Getting Maxium id for user id $maxIdQuery = $this->conn->prepare('SELECT MAX(id) as max_id FROM user'); $maxIdQuery->execute(); $maxIdResult = $maxIdQuery->fetch(PDO::FETCH_ASSOC); $maxId = $maxIdResult['max_id'] + 1; $userId = 'DE' . $maxId; $insertQuery = "INSERT INTO user (user_id,user_name, phone,email, address,password,modified_date) VALUES ('" . $userId . "','" . $name . "','" . $mobile . "','" . $email . "','" . $address . "','" . $password . "','')"; $insert = $this->conn->exec($insertQuery); return $insert; } else { return 0; // If user exists sending 0 } } function deleteUser($post) { $userId = $post['id']; $deleteQuery = $this->conn->prepare(" UPDATE user SET delete_status = 1 WHERE id = $userId"); $deleteQuery->execute(); $delete = $deleteQuery->rowCount(); if ($delete) { return $delete; } else { return 0; } } function editUser($post) { $id = $post['id']; $email = $post['email']; $address = $post['address']; $phone = $post['phone']; // Checking User Mobile Exits With Others or not $chechNumber = $this->conn->prepare('SELECT phone FROM user WHERE phone=:phone AND id != :id'); $chechNumber->bindParam(':id', $id, PDO::PARAM_INT); $chechNumber->bindParam(':phone', $phone, PDO::PARAM_STR); $chechNumber->execute(); $numRows = $chechNumber->rowCount(); if ($numRows == 0) { $updateQuery = $this->conn->prepare('UPDATE user SET phone = :phone,email = :email, address =:address WHERE id = :id'); $updateQuery->bindParam(':phone', $phone, PDO::PARAM_STR); $updateQuery->bindParam(':email', $email, PDO::PARAM_STR); $updateQuery->bindParam(':address', $address, PDO::PARAM_STR); $updateQuery->bindParam(':id', $id, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); if ($update) { return $update; } else { return 2; // No Update } } else { return 0; // Number Exits } } function addSubAdmin($post) { $name = trim($post['name']); $mobile = trim($post['mobile']); $email = strtolower(trim($post['email'])); $password = sha1($post['password']); $address = trim($post['address']); $branchId = $post['branchId']; // Checking User Exists or not $chechNumber = $this->conn->prepare('SELECT phone FROM subaadmin WHERE phone=:phone AND delete_status = 0'); $chechNumber->bindParam(':phone', $mobile, PDO::PARAM_STR); $chechNumber->execute(); $numRows = $chechNumber->rowCount(); if ($numRows == 0) { $insertQuery = "INSERT INTO subaadmin (name, phone,email,branch_id, address,password,token) VALUES ('$name','$mobile','$email',$branchId,'$address','$password','')"; $insert = $this->conn->exec($insertQuery); return $insert; } else { return 0; // If user exists sending 0 } } function getAllSubAdmins() { $sql = "SELECT id,name,email,phone,address FROM subaadmin WHERE delete_status = 0"; $query = $this->conn->prepare($sql); $query->execute(); $data = $query->fetchAll(PDO::FETCH_ASSOC); return $data; } function getSingleSubAdmin($id) { $subAdmin = $id; $query = 'SELECT * From subaadmin WHERE id =:id'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':id', $subAdmin, PDO::PARAM_INT); $selectQuery->execute(); $subAdminData = $selectQuery->fetch(PDO::FETCH_ASSOC); return $subAdminData; } function updateSubAdmin($post) { $Id = $post['subadminid']; $name = $post['name']; $email = $post['email']; $phone = $post['mobile']; $address = $post['address']; $branchId = $post['branchId']; // Checking User Mobile Exits With Others or not $chechNumber = $this->conn->prepare('SELECT phone FROM subaadmin WHERE phone=:phone AND id != :id'); $chechNumber->bindParam(':id', $Id, PDO::PARAM_INT); $chechNumber->bindParam(':phone', $phone, PDO::PARAM_STR); $chechNumber->execute(); $numRows = $chechNumber->rowCount(); if ($numRows == 0) { $UpdateQuery = $this->conn->prepare('UPDATE subaadmin SET name = :name, email = :email,branch_id=:branch_id,phone = :phone,address = :address WHERE id = :id'); $UpdateQuery->bindParam(':name', $name, PDO::PARAM_STR); $UpdateQuery->bindParam(':email', $email, PDO::PARAM_STR); $UpdateQuery->bindParam(':branch_id', $branchId, PDO::PARAM_INT); $UpdateQuery->bindParam(':phone', $phone, PDO::PARAM_INT); $UpdateQuery->bindParam(':address', $address, PDO::PARAM_STR); $UpdateQuery->bindParam(':id', $Id, PDO::PARAM_INT); $UpdateQuery->execute(); $update = $UpdateQuery->rowCount(); if ($update) { return $update; } else { return 2; // No Update } } else { return 0; // NUmber Exists } } function deleteSubadmin($post) { $id = $post['id']; $sql = "UPDATE subaadmin SET delete_status=1 WHERE id=$id"; $deleteQuery = $this->conn->prepare($sql); $deleteQuery->execute(); $delete = $deleteQuery->rowCount(); if ($delete) { return $delete; } else { return 0; } } function getAllBraches() { if (isset($_SESSION['admin'])) { $sql = "SELECT * FROM braches WHERE delete_status = 0"; } else { $selectBranchQuery = $this->conn->prepare('SELECT branch_id FROM subaadmin WHERE id = :subadmin_id'); $selectBranchQuery->bindParam(':subadmin_id', $_SESSION['subId'], PDO::PARAM_INT); $selectBranchQuery->execute(); $branchData = $selectBranchQuery->fetch(PDO::FETCH_ASSOC); $branchId = $branchData['branch_id']; if ($branchId == 0 || $branchId == null) { $sql = "SELECT * FROM braches WHERE delete_status = 0"; } else { $sql = "SELECT * FROM braches WHERE delete_status = 0 AND brach_id IN (" . $branchId . ")"; } } $query = $this->conn->prepare($sql); $query->execute(); $data = $query->fetchAll(PDO::FETCH_ASSOC); return $data; } function addBranch($post) { $branchName = trim($post['name']); $sql = "SELECT * FROM braches WHERE name=:branch_name AND delete_status=0"; $checkQuery = $this->conn->prepare($sql); $checkQuery->bindParam(':branch_name', $branchName, PDO::PARAM_STR); $checkQuery->execute(); $branchExists = $checkQuery->rowCount(); if ($branchExists == 0) { $sql = "INSERT INTO braches(name) VALUES(:branch_name)"; $insertQuery = $this->conn->prepare($sql); $insertQuery->bindParam(':branch_name', $branchName, PDO::PARAM_STR); $insertQuery->execute(); $insert = $insertQuery->rowCount(); if ($insert) { return $insert; } } else { return 0; } } function getBranchDetailsId($post) { $branch_id = $post['id']; $sql = "SELECT name,brach_id FROM braches WHERE brach_id=:branch_id AND delete_status=0"; $query = $this->conn->prepare($sql); $query->bindParam(':branch_id', $branch_id, PDO::PARAM_INT); $query->execute(); $data = $query->fetch(PDO::FETCH_ASSOC); return $data; } function updateBranchDetails($post) { $id = $post['id']; $name = $post['name']; $sql = "SELECT brach_id FROM braches WHERE name=:name AND brach_id != :id AND delete_status=0"; $checkQuery = $this->conn->prepare($sql); $checkQuery->bindParam(':name', $name, PDO::PARAM_STR); $checkQuery->bindParam(':id', $id, PDO::PARAM_INT); $checkQuery->execute(); $brachExists = $checkQuery->rowCount(); if ($brachExists == 0) { $sql = "UPDATE braches SET name=:name WHERE brach_id=:id"; $query = $this->conn->prepare($sql); $query->bindParam(':name', $name, PDO::PARAM_STR); $query->bindParam(':id', $id, PDO::PARAM_INT); $query->execute(); return 1; } else { return 0; } } function deleteBranch($post) { $id = $post['id']; $sql = "UPDATE subaadmin SET branch_id=0 WHERE branch_id=:id"; $query = $this->conn->prepare($sql); $query->bindParam(':id', $id, PDO::PARAM_INT); $query->execute(); $sql = "UPDATE braches SET delete_status=1 WHERE brach_id=:id"; $query = $this->conn->prepare($sql); $query->bindParam(':id', $id, PDO::PARAM_INT); $query->execute(); return $query->rowCount(); } function userLogin($post) { $email = strtolower(trim($post['email'])); $password = trim($post['password']); $password1 = sha1(trim($post['password'])); // $password1 = $this->encryptDecrypt(1,$post['lpassword']); $query = $this->conn->prepare('SELECT * FROM admin WHERE email=:email AND password=:password'); $query->bindParam(':email', $email, PDO::PARAM_STR); $query->bindParam(':password', $password1, PDO::PARAM_STR); $query->execute(); $count = $query->rowcount(); // $result = $query->fetch(PDO::FETCH_ASSOC); if ($count == 1) { $data = $query->fetch(PDO::FETCH_ASSOC); $result['data'] = $data; $result['status'] = 1; } else { $result['status'] = 0; } return $result; } function subAdminLogin($post) { $result = []; $email = $post['email']; $password = sha1($post['password']); $selectQuery = $this->conn->prepare('SELECT * FROM subaadmin WHERE email=:email AND password=:password'); $selectQuery->bindParam('email', $email, PDO::PARAM_STR); $selectQuery->bindParam('password', $password, PDO::PARAM_STR); $selectQuery->execute(); $rowcount = $selectQuery->rowCount(); if ($rowcount == 1) { $data = $selectQuery->fetch(PDO::FETCH_ASSOC); $result['data'] = $data; $result['status'] = 1; } else { $result['status'] = 0; } return $result; } function checkEmailExists($email) { $baseUrl = $_ENV['base_url']; $sql = "SELECT * FROM admin WHERE email=:email"; $query = $this->conn->prepare($sql); $query->bindParam('email', $email, PDO::PARAM_STR); $query->execute(); $data = $query->fetchAll(PDO::FETCH_ASSOC); // print_r($data);exit; if (!empty($data)) { // print_r($data[0]['user_id']);exit; $id = base64_encode($data[0]['id']); $token = md5(uniqid(rand(), true)); $query = 'UPDATE admin SET token = :token where email = :email'; $updateQuery = $this->conn->prepare($query); $updateQuery->bindParam(':email', $email, PDO::PARAM_STR); $updateQuery->bindParam(':token', $token, PDO::PARAM_STR); $updateQuery->execute(); $customerContent = ' <tr style="padding:10px !important;display:flex;width:100%;color:#FA0000;word-break: break-word;justify-content: space-evenly;"> <td style="width:45%;font-weight:bold;text-align:center;color:#676767">Change Your Password</td> <td style="width: 5%;">:</td> <td style="width: 50%; color:#FA0000;"><a href="' . $baseUrl . 'admin/resetpassword.php?id=' . $id . '&token=' . $token . '"" target="_blank" style="color:#FA0000">Reset Password</a></td> </tr> '; $message = ' <html> <head> <title>1MH Fitness</title> </head> <body> <div style="text-align:center;"> <img src="https://bu1is.krify.com/detailing_edition_web/admin/images/logo.png" alt="image" style="width:25%;height:auto;"/> </div> <div style="text-align:center;width: 550px;margin: 40px auto;border: 3px solid #676767;border-radius: 28px;"> <div style="color: #676767;font-size: 24px;text-align:center !important;font-weight: 600;padding-top:10px;">Reset your password by click the below link</div> <div style="margin:15px;padding:20px !important;"> <hr style="border: 1px solid #676767;"/> <table style="width: 100%;"> <tbody style="overflow:auto;font-size: 16px;"> ' . $customerContent . ' </tbody> </table> <hr style="border: 1px solid #676767;"/> <footer> <h3 style="color: #FA0000;font-size: 18px;"><br/>Thanks & Regards<br/> Detailing Edition Team</h3> </footer> </div> </div> </body> </html>'; $to = $email; $subject = "Forgot Password"; // $message = "To change your password click on the link below:<br>"; // $message .= "$baseUrl/activate.php?id=$id"; $res = $this->smtpMail($to, $subject, $message); // print_r($res); } if ($res) { $status = 1; } else { $status = 0; } return $status; } function smtpMail($to, $subject, $message) { $mail = new PHPMailer(true); $mail->isSMTP(); $mail->Host = "smtp.gmail.com"; $mail->SMTPAuth = true; $mail->Username = 'Detailingedition@gmail.com'; $mail->Password = 'tjzmcggynoxfktii'; //If SMTP requires TLS encryption then set it $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; //Set TCP port to connect to $mail->Port = 587; $mail->From = 'Detailingedition@gmail.com'; $mail->FromName = 'Detailing Edition'; $mail->addAddress($to); $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $message; if (!$mail->send()) { return "NO"; } else { return 1; } } function userDeatils($userId, $type = 1) { if ($type == 1) { $query = $this->conn->prepare('SELECT * FROM user WHERE id=:id '); $query->bindParam(':id', $userId, PDO::PARAM_INT); } else if ($type == 2) { $query = $this->conn->prepare('SELECT * FROM user WHERE user_id=:user_id '); $query->bindParam(':user_id', $userId, PDO::PARAM_STR); } $query->execute(); $count = $query->rowCount(); $queryData = array(); if ($count > 0) { $queryData = $query->fetch(PDO::FETCH_ASSOC); $queryData['status'] = 1; } else { $queryData['status'] = 0; } return $queryData; } function userDeatilsByNumber($userMobile) { $query = $this->conn->prepare("SELECT * FROM user WHERE phone = '$userMobile' AND delete_status = 0 AND login_status = 1"); $query->execute(); $count = $query->rowCount(); $queryData = array(); if ($count > 0) { $queryData = $query->fetch(PDO::FETCH_ASSOC); $queryData['status'] = 1; } else { $queryData['status'] = 0; } return $queryData; } function dashboard() { $result = []; $status = 0; $userQuery = $this->conn->prepare('SELECT COUNT(id) AS usersCount FROM user WHERE delete_status=0'); $userQuery->execute(); $usersQueryData = $userQuery->fetch(PDO::FETCH_ASSOC); $servicesQuery = $this->conn->prepare('SELECT COUNT(service_id) AS servicesCount FROM services WHERE delete_status=:delete_status'); $servicesQuery->bindParam(':delete_status', $status, PDO::PARAM_INT); $servicesQuery->execute(); $servicesQueryData = $servicesQuery->fetch(PDO::FETCH_ASSOC); // $packagesQuery = $this->conn->prepare('SELECT COUNT(care_club_id) AS packageCount FROM care_club WHERE delete_status=:delete_status'); // $packagesQuery->bindParam(':delete_status', $status, PDO::PARAM_INT); // $packagesQuery->execute(); // $packagesQueryData = $packagesQuery->fetch(PDO::FETCH_ASSOC); // Initialize variables $status = 0; $branchId = null; // Check if sub-admin is logged in if (isset($post['subAdmin']) && $post['subAdmin'] == 'logedin') { $subAdminId = $post['subId']; // Fetch the branch for the sub-admin $branchQuery = $this->conn->prepare('SELECT branch_id FROM sub_admin WHERE sub_admin_id = :subAdminId LIMIT 1'); $branchQuery->bindParam(':subAdminId', $subAdminId, PDO::PARAM_INT); $branchQuery->execute(); $branch = $branchQuery->fetch(PDO::FETCH_ASSOC); if ($branch) { $branchId = $branch['branch_id']; } } // Prepare the query to fetch care clubs if ($branchId !== null) { $careClubQuery = $this->conn->prepare(" SELECT COUNT(DISTINCT care_club.care_club_id) AS packageCount, care_club.care_club_id, care_club.name FROM care_club LEFT JOIN care_club_brach ON care_club.care_club_id = care_club_brach.care_club_id WHERE (care_club_brach.branch_id = :branchId OR care_club_brach.branch_id IS NULL) AND care_club.delete_status = 0 "); // Bind branch ID $careClubQuery->bindParam(':branchId', $branchId, PDO::PARAM_INT); } else { $careClubQuery = $this->conn->prepare(" SELECT COUNT(DISTINCT care_club.care_club_id) AS packageCount, care_club.care_club_id, care_club.name FROM care_club LEFT JOIN care_club_brach ON care_club.care_club_id = care_club_brach.care_club_id WHERE care_club.delete_status = :delete_status "); } $careClubQuery->bindParam(':delete_status', $status, PDO::PARAM_INT); // Execute the query $careClubQuery->execute(); $packagesQueryData = $careClubQuery->fetchAll(PDO::FETCH_ASSOC); $productsQuery = $this->conn->prepare('SELECT COUNT(product_id) AS productCount FROM products WHERE delete_status=:delete_status'); $productsQuery->bindParam(':delete_status', $status, PDO::PARAM_INT); $productsQuery->execute(); $productsQueryData = $productsQuery->fetch(PDO::FETCH_ASSOC); $subAdminQuery = $this->conn->prepare('SELECT COUNT(id) AS subAdminCount FROM subaadmin WHERE delete_status= 0'); $subAdminQuery->execute(); $subAdminQueryData = $subAdminQuery->fetch(PDO::FETCH_ASSOC); $purchaseRevenueQuery = $this->conn->prepare('SELECT SUM(amount) AS total_amount FROM allotment WHERE type IN (2, 3) AND (approve_status = 1 OR approve_status = 4 )'); $purchaseRevenueQuery->execute(); $purchaseRevenueQueryData = $purchaseRevenueQuery->fetch(PDO::FETCH_ASSOC); //careclub $packageRevenueQuery = $this->conn->prepare('SELECT SUM(amount) AS packageRevenue FROM allotment WHERE type=4 AND (approve_status = 1 OR approve_status = 4 ) '); $packageRevenueQuery->execute(); $packageRevenueQueryData = $packageRevenueQuery->fetch(PDO::FETCH_ASSOC); $branchesQuery = $this->conn->prepare('SELECT COUNT(brach_id) as branchCount FROM braches WHERE delete_status=:delete_status'); $branchesQuery->bindParam(':delete_status', $status, PDO::PARAM_INT); $branchesQuery->execute(); $branchesQueryData = $branchesQuery->fetch(PDO::FETCH_ASSOC); $result['usersCount'] = $usersQueryData['usersCount']; $result['servicesCount'] = $servicesQueryData['servicesCount']; $result['packageCount'] = $packagesQueryData[0]['packageCount']; $result['productCount'] = $productsQueryData['productCount']; $result['subAdminCount'] = $subAdminQueryData['subAdminCount']; $result['branchCount'] = $branchesQueryData['branchCount']; $result['purchaseRevenue'] = $purchaseRevenueQueryData['total_amount']; $result['packageRevenue'] = $packageRevenueQueryData['packageRevenue']; // $result['productsRevenue'] = $psum; return $result; } function fileterDate($post) { $startDate = $post['startDate'] . ' 00:00:00'; $endDate = $post['endDate'] . ' 23:59:59'; $userQuery = $this->conn->prepare('SELECT COUNT(id) AS userCount FROM user WHERE created_date > :start_date AND created_date < :end_date'); $userQuery->bindParam(':start_date', $startDate); $userQuery->bindParam(':end_date', $endDate); $userQuery->execute(); $userData = $userQuery->fetch(PDO::FETCH_ASSOC); $serviceQuery = $this->conn->prepare('SELECT COUNT(service_id) AS servicesCount FROM services WHERE delete_status = 0 AND created_date > :start_date AND created_date < :end_date'); $serviceQuery->bindParam(':start_date', $startDate); $serviceQuery->bindParam(':end_date', $endDate); $serviceQuery->execute(); $serviceData = $serviceQuery->fetch(PDO::FETCH_ASSOC); $productQuery = $this->conn->prepare('SELECT COUNT(product_id) AS productCount FROM products WHERE delete_status = 0 AND created_date > :start_date AND created_date < :end_date'); $productQuery->bindParam(':start_date', $startDate); $productQuery->bindParam(':end_date', $endDate); $productQuery->execute(); $productData = $productQuery->fetch(PDO::FETCH_ASSOC); $packageQuery = $this->conn->prepare('SELECT COUNT(package_id) AS packageCount FROM packages WHERE delete_status = 0 AND created_date > :start_date AND created_date < :end_date'); $packageQuery->bindParam(':start_date', $startDate); $packageQuery->bindParam(':end_date', $endDate); $packageQuery->execute(); $packageData = $packageQuery->fetch(PDO::FETCH_ASSOC); $subAdminQuery = $this->conn->prepare('SELECT COUNT(id) AS subCount FROM subaadmin WHERE created_date > :start_date AND created_date < :end_date'); $subAdminQuery->bindParam(':start_date', $startDate); $subAdminQuery->bindParam(':end_date', $endDate); $subAdminQuery->execute(); $subAdminData = $subAdminQuery->fetch(PDO::FETCH_ASSOC); $branchesQuery = $this->conn->prepare('SELECT COUNT(brach_id) as branchCount FROM braches WHERE delete_status=0 AND created_at > :start_date AND created_at < :end_date'); $branchesQuery->bindParam(':start_date', $startDate); $branchesQuery->bindParam(':end_date', $endDate); $branchesQuery->execute(); $branchesQueryData = $branchesQuery->fetch(PDO::FETCH_ASSOC); $packageRevenueQuery = $this->conn->prepare('SELECT SUM(amount) AS packageRevenue FROM allotment WHERE created_date > :start_date AND created_date < :end_date AND type =:type AND (approve_status =:approve_status OR approve_status =:approve_status1)'); $type = 1; $approveStatus = 1; $approveStatus1 = 4; $packageRevenueQuery->bindParam(':type', $type); $packageRevenueQuery->bindParam(':start_date', $startDate); $packageRevenueQuery->bindParam(':end_date', $endDate); $packageRevenueQuery->bindParam(':approve_status', $approveStatus); $packageRevenueQuery->bindParam(':approve_status1', $approveStatus1); $packageRevenueQuery->execute(); $packageRevenueData = $packageRevenueQuery->fetch(PDO::FETCH_ASSOC); if (empty($packageRevenueData['packageRevenue'])) { $packageRevenueData['packageRevenue'] = 0; } $purchaseRevenueQuery = $this->conn->prepare('SELECT SUM(amount) AS purchaseRevenue FROM allotment WHERE type !=:type AND created_date > :start_date AND created_date < :end_date AND ( approve_status =:approve_status OR approve_status =:approve_status1)'); $purchaseRevenueQuery->bindParam(':type', $type); $purchaseRevenueQuery->bindParam(':start_date', $startDate); $purchaseRevenueQuery->bindParam(':end_date', $endDate); $purchaseRevenueQuery->bindParam(':approve_status', $approveStatus); $purchaseRevenueQuery->bindParam(':approve_status1', $approveStatus1); $purchaseRevenueQuery->execute(); $purchaseRevenueQueryData = $purchaseRevenueQuery->fetch(PDO::FETCH_ASSOC); if (empty($purchaseRevenueQueryData['purchaseRevenue'])) { $purchaseRevenueQueryData['purchaseRevenue'] = 0; } $data = array(); $data['usersCount'] = $userData['userCount']; $data['servicesCount'] = $serviceData['servicesCount']; $data['packageCount'] = $packageData['packageCount']; $data['productCount'] = $productData['productCount']; $data['subAdminCount'] = $subAdminData['subCount']; $data['branchCount'] = $branchesQueryData['branchCount']; $data['packageRevenue'] = $packageRevenueData['packageRevenue']; $data['purchaseRevenue'] = $purchaseRevenueQueryData['purchaseRevenue']; return $data; } function adminNotifications() { $notification_status = 0; $serviceQuery = $this->conn->prepare('SELECT COUNT(notification_status) AS count From services WHERE notification_status = 0 AND created_by = 2 AND service_status = 0'); $serviceQuery->execute(); $servicesData = $serviceQuery->fetch(PDO::FETCH_ASSOC); $productQuery = $this->conn->prepare('SELECT COUNT(notification_status) AS count From products WHERE notification_status = 0 AND created_by = 2 AND product_status = 0'); $productQuery->execute(); $productsData = $productQuery->fetch(PDO::FETCH_ASSOC); $careClubQuery = $this->conn->prepare('SELECT COUNT(notification_status) AS count From care_club WHERE notification_status = 0 AND created_by = 2 AND care_club_status = 0'); $careClubQuery->execute(); $careClubData = $careClubQuery->fetch(PDO::FETCH_ASSOC); $allotmentQuery = $this->conn->prepare('SELECT COUNT(notification_status) AS count From allotment WHERE notification_status = 0'); $allotmentQuery->execute(); $allotmentData = $allotmentQuery->fetch(PDO::FETCH_ASSOC); $userAllotmentQuery = $this->conn->prepare('SELECT COUNT(DISTINCT DATE_FORMAT(created_date, "%Y-%m-%d %H:%i:%s")) AS count FROM allotment WHERE notification_status = 3'); $userAllotmentQuery->execute(); $userAllotmentData = $userAllotmentQuery->fetch(PDO::FETCH_ASSOC); $result = array(); $result['services'] = $servicesData['count']; $result['products'] = $productsData['count']; $result['careClubs'] = $careClubData['count']; $result['allotment'] = $allotmentData['count']; $result['userAllotment'] = $userAllotmentData['count']; return $result; } function adminServiceNotificationsOpen() { $updateQuery = $this->conn->prepare('UPDATE services SET notification_status = 2 WHERE notification_status != 1'); $updateQuery->execute(); } function adminProductsNotificationsOpen() { $updateQuery = $this->conn->prepare('UPDATE products SET notification_status = 2 WHERE notification_status != 1'); $updateQuery->execute(); } function adminCareClubsNotificationsOpen() { $updateQuery = $this->conn->prepare('UPDATE care_club SET notification_status = 2 WHERE notification_status != 1'); $updateQuery->execute(); } function adminApprovalNotificationsOpen() { $updateQuery = $this->conn->prepare('UPDATE allotment SET notification_status = 2 WHERE notification_status != 1'); $updateQuery->execute(); } function userAllotNotificationsOpen() { $updateQuery = $this->conn->prepare('UPDATE allotment SET notification_status = 2 WHERE notification_status != 1'); $updateQuery->execute(); } function subAdminNotifications($post) { $subId = $post['subId']; $serviceQuery = $this->conn->prepare('SELECT COUNT(notification_status) AS count From services WHERE notification_status = 1 AND created_by = 3 AND service_status = 1 AND addedBy_id = "' . $subId . '"'); $serviceQuery->execute(); $servicesData = $serviceQuery->fetch(PDO::FETCH_ASSOC); $productQuery = $this->conn->prepare('SELECT COUNT(notification_status) AS count From products WHERE notification_status = 1 AND created_by = 3 AND product_status = 1 AND addedBy_id = "' . $subId . '" '); $productQuery->execute(); $productsData = $productQuery->fetch(PDO::FETCH_ASSOC); $careClubQuery = $this->conn->prepare('SELECT COUNT(notification_status) AS count From care_club WHERE notification_status = 1 AND created_by = 3 AND care_club_status = 1 AND addedBy_id = "' . $subId . '" '); $careClubQuery->execute(); $careClubsData = $careClubQuery->fetch(PDO::FETCH_ASSOC); $approvalQuery = $this->conn->prepare('SELECT COUNT(approve_status) AS count From allotment WHERE notification_status = 4 '); $approvalQuery->execute(); $approvalQuery = $approvalQuery->fetch(PDO::FETCH_ASSOC); $approvalRejectQuery = $this->conn->prepare('SELECT COUNT(approve_status) AS count From allotment WHERE notification_status = 6'); $approvalRejectQuery->execute(); $approvalRejectQuery = $approvalRejectQuery->fetch(PDO::FETCH_ASSOC); $result = array(); $result['services'] = $servicesData['count']; $result['products'] = $productsData['count']; $result['careClubs'] = $careClubsData['count']; $result['approval'] = $approvalQuery['count']; $result['reject'] = $approvalRejectQuery['count']; return $result; } function subAdminServiceNotificationsOpen() { $updateQuery = $this->conn->prepare('UPDATE services SET notification_status = 2 WHERE notification_status = 1'); $updateQuery->execute(); } function subAdminProductsNotificationsOpen() { $updateQuery = $this->conn->prepare('UPDATE products SET notification_status = 2 WHERE notification_status = 1'); $updateQuery->execute(); } function subAdminCareClubNotificationsOpen() { $updateQuery = $this->conn->prepare('UPDATE care_club SET notification_status = 2 WHERE notification_status = 1'); $updateQuery->execute(); } function addService($post) { $baseUrl = $_ENV['base_url']; $serviceName = trim($post['title']); $serviceDescription = trim($post['description']); $sedanAmount = trim($post['sedan_amount']); $muvAmount = trim($post['muv_amount']); $suvAmount = trim($post['suv_amount']); $hbAmount = trim($post['hb_amount']); // $expiry = trim($post['expiry']); $created_by = $post['addedby']; if ($created_by == 2) { $addedBy_id = $post['subId']; } $fileName = $_FILES["serviceImage"]['name']; $uniqueFileName = uniqid() . '_' . $fileName; if ($fileName) { $targetDir = '../../uploads/services/'; $targetFile = $targetDir . $uniqueFileName; if (move_uploaded_file($_FILES["serviceImage"]["tmp_name"], $targetFile)) { if ($created_by == 1) { $insertQuery = "INSERT INTO services (name,description,sedan_amount,muv_amount,suv_amount,hb_amount,image_name, service_status, created_by,addedBy_id,modified_date) VALUES ('" . $serviceName . "', '" . $serviceDescription . "','" . $sedanAmount . "','" . $muvAmount . "','" . $suvAmount . "','" . $hbAmount . "','" . $uniqueFileName . "','1', '1','0','')"; } else if ($created_by == 2) { $insertQuery = "INSERT INTO services (name, description, sedan_amount,muv_amount,suv_amount,hb_amount,image_name, service_status, created_by, addedBy_id,modified_date) VALUES ('" . $serviceName . "', '" . $serviceDescription . "','" . $sedanAmount . "','" . $muvAmount . "','" . $suvAmount . "','" . $hbAmount . "','" . $uniqueFileName . "','0', '2','" . $addedBy_id . "','')"; } $insert = $this->conn->exec($insertQuery); return $insert; } else { return 2; // Unable to upload file } } else { return 3; // Image Not Getting } } function getServices($post) { $deleteStatus = 0; $type = $post['type']; if ($type == 1) { $query = 'SELECT * From services WHERE delete_status = 0 ORDER BY service_id DESC'; } else if ($type == 2) { $query = 'SELECT * From services WHERE delete_status = 0 AND service_status = 0 AND created_by = 2 ORDER BY service_id DESC'; } else if ($type == 3) { $query = 'SELECT * From services WHERE delete_status = 0 AND service_status = 1 ORDER BY service_id DESC'; } else if ($type == 4) { $query = 'SELECT * From services WHERE delete_status = 0 AND service_status = 0 AND created_by != 2 ORDER BY service_id DESC'; } else if ($type == 5) { $query = 'SELECT * From services WHERE delete_status = 0 AND created_by != 2 ORDER BY service_id DESC'; } $selectQuery = $this->conn->prepare($query); // $selectQuery->bindParam(':delete_status',$deleteStatus,PDO::PARAM_INT); $selectQuery->execute(); $servicesData = $selectQuery->fetchAll(PDO::FETCH_ASSOC); return $servicesData; } function deleteService($post) { $serviceId = $post['serviceId']; $updateStatus = 1; $serviceStatus = 0; // UPDATE services SET delete_status = :delete_status WHERE service_id = :service_id $deleteQuery = $this->conn->prepare('UPDATE services SET delete_status = :delete_status, service_status = :service_status WHERE service_id = :service_id'); $deleteQuery->bindParam(':delete_status', $updateStatus, PDO::PARAM_INT); $deleteQuery->bindParam(':service_status', $serviceStatus, PDO::PARAM_INT); $deleteQuery->bindParam(':service_id', $serviceId, PDO::PARAM_INT); $deleteQuery->execute(); $delete = $deleteQuery->rowCount(); if ($delete) { return $delete; } else { return 0; } } function serachService($post) { $searchTerm = trim($post['key']); $query = 'SELECT * From services WHERE name LIKE :searchTerm AND delete_status = 0'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindValue(':searchTerm', "%$searchTerm%", PDO::PARAM_STR);; $selectQuery->execute(); $searchServicesData = $selectQuery->fetchAll(PDO::FETCH_ASSOC); return $searchServicesData; } function changeServiceStatus($post) { $serviceStatus = $post['key']; $serviceId = $post['id']; $updateQuery = $this->conn->prepare('UPDATE services SET service_status = :service_status WHERE service_id = :service_id'); $updateQuery->bindParam(':service_status', $serviceStatus, PDO::PARAM_INT); $updateQuery->bindParam(':service_id', $serviceId, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } function getSingleserviceDetails($id) { $serviceId = $id; $query = 'SELECT * From services WHERE service_id =:service_id'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':service_id', $serviceId, PDO::PARAM_INT); $selectQuery->execute(); $servicesData = $selectQuery->fetch(PDO::FETCH_ASSOC); // $servicesData['image_name'] = $_ENV['base_url'] . 'uploads/services/' . $servicesData['image_name']; return $servicesData; } function editService($post) { $baseUrl = $_ENV['base_url']; $serviceName = $post['edittitle']; $serviceDescription = $post['editdescription']; $sedanAmount = $post['edit_sedan_amount']; $muvAmount = $post['edit_muv_amount']; $suvAmount = $post['edit_suv_amount']; $hbAmount = $post['edit_hb_amount']; // $expiry = $post['expiry']; // $duration = $post['duration']; $editServiceId = $post['editServiceId']; $query = 'SELECT image_name From services WHERE service_id =:service_id'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':service_id', $editServiceId, PDO::PARAM_INT); $selectQuery->execute(); $imageName = $selectQuery->fetch(PDO::FETCH_ASSOC); $unlinkFileName = $imageName['image_name']; $unlinkFilePath = '../../uploads/services/' . $unlinkFileName; if (isset($_FILES) && $_FILES['editserviceImage']['name'] != "") { if (unlink($unlinkFilePath)) { $fileName = $_FILES["editserviceImage"]['name']; $uniqueFileName = uniqid() . '_' . $fileName; $targetDir = '../../uploads/services/'; $targetFile = $targetDir . $uniqueFileName; if (move_uploaded_file($_FILES["editserviceImage"]["tmp_name"], $targetFile)) { $updateQuery = $this->conn->prepare('UPDATE services SET name = :name,sedan_amount = :sedanAmount, muv_amount = :muvAmount,suv_amount = :suvAmount,hb_amount = :hbAmount,image_name =:image_name WHERE service_id = :service_id'); $updateQuery->bindParam(':name', $serviceName, PDO::PARAM_STR); $updateQuery->bindParam(':description', $serviceDescription, PDO::PARAM_STR); $updateQuery->bindParam(':sedanAmount', $sedanAmount, PDO::PARAM_INT); $updateQuery->bindParam(':muvAmount', $muvAmount, PDO::PARAM_INT); $updateQuery->bindParam(':suvAmount', $suvAmount, PDO::PARAM_INT); $updateQuery->bindParam(':hbAmount', $hbAmount, PDO::PARAM_INT); $updateQuery->bindParam(':image_name', $uniqueFileName, PDO::PARAM_STR); // $updateQuery->bindParam(':expiry', $expiry, PDO::PARAM_INT); // $updateQuery->bindParam(':duration', $duration, PDO::PARAM_INT); $updateQuery->bindParam(':service_id', $editServiceId, PDO::PARAM_INT); $updateQuery->execute(); } $update = $updateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } } else { $updateQuery1 = $this->conn->prepare('UPDATE services SET name = :name, description = :description,sedan_amount = :sedanAmount, muv_amount = :muvAmount,suv_amount = :suvAmount,hb_amount = :hbAmount WHERE service_id = :service_id'); $updateQuery1->bindParam(':name', $serviceName, PDO::PARAM_STR); $updateQuery1->bindParam(':description', $serviceDescription, PDO::PARAM_STR); $updateQuery1->bindParam(':sedanAmount', $sedanAmount, PDO::PARAM_INT); $updateQuery1->bindParam(':muvAmount', $muvAmount, PDO::PARAM_INT); $updateQuery1->bindParam(':suvAmount', $suvAmount, PDO::PARAM_INT); $updateQuery1->bindParam(':hbAmount', $hbAmount, PDO::PARAM_INT); // $updateQuery1->bindParam(':expiry', $expiry, PDO::PARAM_INT); // $updateQuery1->bindParam(':duration', $duration, PDO::PARAM_INT); $updateQuery1->bindParam(':service_id', $editServiceId, PDO::PARAM_INT); $updateQuery1->execute(); $update = $updateQuery1->rowCount(); if ($update) { return $update; } else { return 0; } } } function serviceAccept($post) { $serviceStatus = 1; $serviceId = $post['id']; $created_by = 3; $notification_status = 1; $updateQuery = $this->conn->prepare('UPDATE services SET service_status = :service_status,created_by = :created_by,notification_status =:notification_status WHERE service_id = :service_id'); $updateQuery->bindParam(':created_by', $created_by, PDO::PARAM_INT); $updateQuery->bindParam(':service_status', $serviceStatus, PDO::PARAM_INT); $updateQuery->bindParam(':service_id', $serviceId, PDO::PARAM_INT); $updateQuery->bindParam(':notification_status', $notification_status, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } function serviceDecline($post) { $service_id = $post['id']; $deleteQuery = $this->conn->prepare('DELETE FROM services WHERE service_id = :service_id'); $deleteQuery->bindParam(':service_id', $service_id, PDO::PARAM_INT); $deleteQuery->execute(); $delete = $deleteQuery->rowCount(); if ($delete) { return $delete; } else { return 0; } } function addPackage($post) { $name = trim($post['name']); $description = trim($post['description']); $points = trim($post['points']); $amount = trim($post['amount']); $month = trim($post['months']); $addedBy = trim($post['addedBy']); $servicePoints = json_encode($post['servicePoints']); $selectedServices = json_encode($post['checkboxes']); if ($addedBy == 2) { $addedBy_Id = $post['subId']; } if ($addedBy == 1) { $insertQuery = "INSERT INTO packages (name,description,total_points, service_points,service_id,month,amount,status,modified_date,dispaly_or_not,delete_status,created_by,addedBy_id) VALUES ('" . $name . "','" . $description . "','" . $points . "','" . $servicePoints . "','" . $selectedServices . "','" . $month . "','" . $amount . "','1','','1','0','1','0')"; } else if ($addedBy == 2) { $insertQuery = "INSERT INTO packages (name,description,total_points, service_points,service_id,month,amount,status,modified_date,dispaly_or_not,delete_status,created_by,addedBy_id) VALUES ('" . $name . "','" . $description . "','" . $points . "','" . $servicePoints . "','" . $selectedServices . "','" . $month . "','" . $amount . "','0','','1','0','2','" . $addedBy_Id . "')"; } $insert = $this->conn->exec($insertQuery); return $insert; } function getPackages($post) { $type = $post['type']; if ($type == 1) { $query = 'SELECT * From packages WHERE delete_status = 0 ORDER BY package_id DESC'; } else if ($type == 2) { $query = 'SELECT * From packages WHERE delete_status = 0 AND status = 0 AND created_by = 2 ORDER BY package_id DESC'; } else if ($type == 3) { $query = 'SELECT * From packages WHERE delete_status = 0 AND status = 1 ORDER BY package_id DESC'; } else if ($type == 4) { $query = 'SELECT * From packages WHERE delete_status = 0 AND status = 0 AND created_by != 2 ORDER BY package_id DESC'; } $selectQuery = $this->conn->prepare($query); $selectQuery->execute(); $servicesData = $selectQuery->fetchAll(PDO::FETCH_ASSOC); return $servicesData; } function pacakgeAccept($post) { $serviceStatus = 1; $pacakgeId = $post['id']; $created_by = 3; $notification_status = 1; $updateQuery = $this->conn->prepare('UPDATE packages SET status = :status,created_by = :created_by,notification_status =:notification_status WHERE package_id = :package_id'); $updateQuery->bindParam(':created_by', $created_by, PDO::PARAM_INT); $updateQuery->bindParam(':status', $serviceStatus, PDO::PARAM_INT); $updateQuery->bindParam(':notification_status', $notification_status, PDO::PARAM_INT); $updateQuery->bindParam(':package_id', $pacakgeId, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } function pacakgeDecline($post) { $package_id = $post['id']; $deleteQuery = $this->conn->prepare('DELETE FROM packages WHERE package_id = :package_id'); $deleteQuery->bindParam(':package_id', $package_id, PDO::PARAM_INT); $deleteQuery->execute(); $delete = $deleteQuery->rowCount(); if ($delete) { return $delete; } else { return 0; } } function changePackageStatus($post) { $packageStatus = $post['key']; $packageId = $post['id']; $updateQuery = $this->conn->prepare('UPDATE packages SET status = :status WHERE package_id = :package_id'); $updateQuery->bindParam(':status', $packageStatus, PDO::PARAM_INT); $updateQuery->bindParam(':package_id', $packageId, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } function deletePackage($post) { $packageId = $post['packageId']; $deleteStatus = 1; $status = 0; // UPDATE services SET delete_status = :delete_status WHERE service_id = :service_id $deleteQuery = $this->conn->prepare('UPDATE packages SET delete_status = :delete_status, status = :status WHERE package_id = :package_id'); $deleteQuery->bindParam(':delete_status', $deleteStatus, PDO::PARAM_INT); $deleteQuery->bindParam(':status', $status, PDO::PARAM_INT); $deleteQuery->bindParam(':package_id', $packageId, PDO::PARAM_INT); $deleteQuery->execute(); $delete = $deleteQuery->rowCount(); if ($delete) { return $delete; } else { return 0; } } function getServicesByPackage($id) { $packageId = $id; $query = 'SELECT service_id From packages WHERE package_id =:package_id'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':package_id', $packageId, PDO::PARAM_INT); $selectQuery->execute(); $servicesData = $selectQuery->fetch(PDO::FETCH_ASSOC); $serviceIds = json_decode($servicesData['service_id']); $serviceNames = []; $i = 0; foreach ($serviceIds as $id) { $service = $this->getSingleserviceDetails($id); if ($service['expiry'] == 0) { $expiry = ''; } else { if ($service['duration'] == 1) { $duration = 'Months'; } else { $duration = 'Years'; } $expiry = '<p>(' . $service['expiry'] . ' ' . $duration . ')</p>'; } $serviceNames[$i] = $service['name'] . ' ' . $expiry; $i++; } return $serviceNames; } function getSinglePacakgeDetails($id) { $packageId = $id; $query = 'SELECT * From packages WHERE package_id =:package_id'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':package_id', $packageId, PDO::PARAM_INT); $selectQuery->execute(); $servicesData = $selectQuery->fetchAll(PDO::FETCH_ASSOC); return $servicesData; } function getSubAdminCareClubIds($subAdminIds) { $sql = "SELECT id AS subAdminId,care_club_ids FROM subaadmin WHERE id IN($subAdminIds)"; $query = $this->conn->prepare($sql); $query->execute(); $data = $query->fetchAll(PDO::FETCH_ASSOC); return $data; } function addCareClub($postData) { if (!isset($postData['addCareClub'])) { return 'Invalid Request'; } $title = trim($postData['title'] ?? ''); $branches = $postData['branches'] ?? []; if ($title === '' || empty($branches)) { return 'Invalid data'; } /* ----------------------------- CALCULATE TOTAL SERVICES ------------------------------*/ $totalServices = 0; foreach ($branches as $branch) { if (!isset($branch['years'])) continue; foreach ($branch['years'] as $yearData) { $totalServices += (int)($yearData['limit'] ?? 0); } } /* ----------------------------- INSERT CARE CLUB ------------------------------*/ // $clubSql = " // INSERT INTO care_club // (name, total_services, care_club_status, created_by, addedBy_id, delete_status) // VALUES (?, ?, 1, ?, ?, 0)"; // $stmt = $this->conn->prepare($clubSql); // $stmt->execute([ // $title, // $totalServices, // $_SESSION['user_id'] ?? 1, // $_SESSION['user_id'] ?? 1 // ]); // $careClubId = $this->conn->lastInsertId(); $clubSql = " INSERT INTO care_club (name, total_services, care_club_status, created_by, addedBy_id, delete_status) VALUES (:name, :total_services, 1, :created_by, :added_by, 0)"; $stmt = $this->conn->prepare($clubSql); $createdBy = $postData['addedBy']; $addedBy = $postData['subId'] ?? 0; $stmt->bindParam(':name', $title, PDO::PARAM_STR); $stmt->bindParam(':total_services', $totalServices, PDO::PARAM_INT); $stmt->bindParam(':created_by', $createdBy, PDO::PARAM_INT); $stmt->bindParam(':added_by', $addedBy, PDO::PARAM_INT); $stmt->execute(); $careClubId = $this->conn->lastInsertId(); if (!$careClubId) { return 'Unable to create care club'; } /* ----------------------------- INSERT BRANCH DATA ------------------------------*/ foreach ($branches as $branch) { $branchId = (int)($branch['branch_id'] ?? 0); $quantity = (int)($branch['quantity'] ?? 0); if ($branchId <= 0 || $quantity <= 0) { continue; } // Defaults $prices = [ 'sedan' => [0, 0, 0, 0, 0], 'muv' => [0, 0, 0, 0, 0], 'suv' => [0, 0, 0, 0, 0], 'hb' => [0, 0, 0, 0, 0] ]; $servicesPerYear = [ '', '', '', '', '' ]; foreach ($branch['years'] as $year => $yearData) { $yearIndex = $year - 1; $rawServices = $yearData['services'] ?? []; /* REMOVE ZERO / EMPTY VALUES */ $filteredServices = array_filter( $rawServices, function ($count) { return (int)$count > 0; } ); /* VALIDATION */ $usedServices = array_sum($filteredServices); $limit = (int)($yearData['limit'] ?? 0); if ($usedServices > $limit) { return "Service limit exceeded for Year {$year}"; } /* STORE ONLY VALID SERVICES */ $servicesPerYear[$yearIndex] = json_encode($filteredServices); // Pricing $prices['sedan'][$yearIndex] = (int)($yearData['pricing']['sedan'] ?? 0); $prices['muv'][$yearIndex] = (int)($yearData['pricing']['muv'] ?? 0); $prices['suv'][$yearIndex] = (int)($yearData['pricing']['suv'] ?? 0); $prices['hb'][$yearIndex] = (int)($yearData['pricing']['hatchback'] ?? 0); } /* ----------------------------- INSERT INTO care_club_brach ------------------------------*/ $branchSql = " INSERT INTO care_club_brach ( branch_id, care_club_id, count, created_at, modified_at, delete_status, alloted_count, sedan_price_1_year, sedan_price_2_year, sedan_price_3_year, sedan_price_4_year, sedan_price_5_year, muv_price_1_year, muv_price_2_year, muv_price_3_year, muv_price_4_year, muv_price_5_year, suv_price_1_year, suv_price_2_year, suv_price_3_year, suv_price_4_year, suv_price_5_year, hb_price_1_year, hb_price_2_year, hb_price_3_year, hb_price_4_year, hb_price_5_year, services_1_year, services_2_year, services_3_year, services_4_year, services_5_year ) VALUES ( ?, ?, ?, NOW(), NOW(), 0, 0, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )"; $stmt = $this->conn->prepare($branchSql); $stmt->execute([ $branchId, $careClubId, $quantity, $prices['sedan'][0], $prices['sedan'][1], $prices['sedan'][2], $prices['sedan'][3], $prices['sedan'][4], $prices['muv'][0], $prices['muv'][1], $prices['muv'][2], $prices['muv'][3], $prices['muv'][4], $prices['suv'][0], $prices['suv'][1], $prices['suv'][2], $prices['suv'][3], $prices['suv'][4], $prices['hb'][0], $prices['hb'][1], $prices['hb'][2], $prices['hb'][3], $prices['hb'][4], $servicesPerYear[0], $servicesPerYear[1], $servicesPerYear[2], $servicesPerYear[3], $servicesPerYear[4] ]); } return 1; } function editCareClub($post) { $careClubId = (int)($post['care_club_id'] ?? 0); // echo $careClubId;exit; $title = trim($post['title'] ?? ''); $branches = $post['branches'] ?? []; if ($careClubId <= 0 || $title === '' || empty($branches)) { return 'Invalid data'; } try { $this->conn->beginTransaction(); /* ----------------------------- CALCULATE TOTAL SERVICES ------------------------------*/ $totalServices = 0; foreach ($branches as $branch) { if (!isset($branch['years'])) continue; foreach ($branch['years'] as $yearData) { $totalServices += (int)($yearData['limit'] ?? 0); } } /* ----------------------------- UPDATE CARE CLUB ------------------------------*/ $stmt = $this->conn->prepare(" UPDATE care_club SET name = :name, total_services = :total_services WHERE care_club_id = :care_club_id"); $stmt->bindParam(':name', $title, PDO::PARAM_STR); $stmt->bindParam(':total_services', $totalServices, PDO::PARAM_INT); $stmt->bindParam(':care_club_id', $careClubId, PDO::PARAM_INT); $stmt->execute(); /* ----------------------------- REMOVE OLD BRANCH DATA ------------------------------*/ $this->conn->prepare(" DELETE FROM care_club_brach WHERE care_club_id = ? ")->execute([$careClubId]); /* ----------------------------- INSERT UPDATED BRANCH DATA ------------------------------*/ foreach ($branches as $branch) { $branchId = (int)($branch['branch_id'] ?? 0); $quantity = (int)($branch['quantity'] ?? 0); if ($branchId <= 0 || $quantity <= 0) { continue; } $prices = [ 'sedan' => [0, 0, 0, 0, 0], 'muv' => [0, 0, 0, 0, 0], 'suv' => [0, 0, 0, 0, 0], 'hb' => [0, 0, 0, 0, 0] ]; $servicesPerYear = ['{}', '{}', '{}', '{}', '{}']; foreach ($branch['years'] as $year => $yearData) { $yearIndex = $year - 1; $rawServices = $yearData['services'] ?? []; $filteredServices = array_filter( $rawServices, fn($count) => (int)$count > 0 ); $usedServices = array_sum($filteredServices); $limit = (int)($yearData['limit'] ?? 0); if ($usedServices > $limit) { $this->conn->rollBack(); return "Service limit exceeded for Year {$year}"; } $servicesPerYear[$yearIndex] = json_encode( $filteredServices, JSON_UNESCAPED_UNICODE ); $prices['sedan'][$yearIndex] = (int)($yearData['pricing']['sedan'] ?? 0); $prices['muv'][$yearIndex] = (int)($yearData['pricing']['muv'] ?? 0); $prices['suv'][$yearIndex] = (int)($yearData['pricing']['suv'] ?? 0); $prices['hb'][$yearIndex] = (int)($yearData['pricing']['hatchback'] ?? 0); } $branchSql = " INSERT INTO care_club_brach ( branch_id, care_club_id, count, created_at, modified_at, delete_status, alloted_count, sedan_price_1_year, sedan_price_2_year, sedan_price_3_year, sedan_price_4_year, sedan_price_5_year, muv_price_1_year, muv_price_2_year, muv_price_3_year, muv_price_4_year, muv_price_5_year, suv_price_1_year, suv_price_2_year, suv_price_3_year, suv_price_4_year, suv_price_5_year, hb_price_1_year, hb_price_2_year, hb_price_3_year, hb_price_4_year, hb_price_5_year, services_1_year, services_2_year, services_3_year, services_4_year, services_5_year ) VALUES ( ?, ?, ?, NOW(), NOW(), 0, 0, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? ) "; $stmt = $this->conn->prepare($branchSql); $stmt->execute([ $branchId, $careClubId, $quantity, ...$prices['sedan'], ...$prices['muv'], ...$prices['suv'], ...$prices['hb'], ...$servicesPerYear ]); } $this->conn->commit(); return 1; } catch (Exception $e) { $this->conn->rollBack(); return 'Error: ' . $e->getMessage(); } } function addCareClubBrach($post) { $branchId = $post['branchId']; $count = $post['count']; $careClubId = $post['careClubId']; $sql = "INSERT INTO care_club_brach (branch_id,care_club_id,count"; $vehicleTypes = ['sedan', 'muv', 'suv', 'hb']; for ($year = 1; $year <= 5; $year++) { foreach ($vehicleTypes as $type) { $sql .= ", {$type}_price_{$year}_year"; } } $sql .= ") VALUES ($branchId,$careClubId,$count"; for ($year = 1; $year <= 5; $year++) { foreach ($vehicleTypes as $type) { $price = $post[$type . '_branch_amount_1' . $year]; $price = isset($price) && $price != "" ? $price : 0; // $price = isset($priceArray[$year]) ? $priceArray[$year] : 0; $sql .= ",$price"; } } $sql .= ")"; $insertStatus = $this->conn->exec($sql); return $insertStatus; } function deleteCareClubBrach($post) { $id = $post['id']; $sql = "UPDATE care_club_brach SET delete_status=1 WHERE id=$id"; $query = $this->conn->prepare($sql); $query->execute(); $updateStatus = $query->rowCount(); return $updateStatus; } function changeCareClubStatus($post) { $status = $post['key']; $careClubId = $post['id']; $updateQuery = $this->conn->prepare('UPDATE care_club SET care_club_status = :care_club_status WHERE care_club_id = :care_club_id'); $updateQuery->bindParam(':care_club_status', $status, PDO::PARAM_INT); $updateQuery->bindParam(':care_club_id', $careClubId, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } function careClubAccept($post) { $status = 1; $careClubId = $post['id']; $created_by = 3; $notification_status = 1; $updateQuery = $this->conn->prepare('UPDATE care_club SET care_club_status = :care_club_status,created_by = :created_by,notification_status =:notification_status WHERE care_club_id = :care_club_id'); $updateQuery->bindParam(':created_by', $created_by, PDO::PARAM_INT); $updateQuery->bindParam(':care_club_status', $status, PDO::PARAM_INT); $updateQuery->bindParam(':notification_status', $notification_status, PDO::PARAM_INT); $updateQuery->bindParam(':care_club_id', $careClubId, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } function careClubDecline($post) { $careClubId = $post['id']; $selectSql = "SELECT braches FROM care_club WHERE care_club_id = $careClubId"; $selectQuery = $this->conn->prepare($selectSql); $selectQuery->execute(); $brachesData = $selectQuery->fetch(PDO::FETCH_ASSOC); $bracheIdsString = $brachesData['braches']; $barchesIdsArray = json_decode($bracheIdsString); foreach ($barchesIdsArray as $brachId) { $sql = "SELECT care_club_ids FROM subaadmin WHERE id = $brachId"; $query = $this->conn->prepare($sql); $query->execute(); $data = $query->fetch(PDO::FETCH_ASSOC); $careClubIdsString = $data['care_club_ids']; $careClubIdsArray = json_decode($careClubIdsString); $finalArray = array_diff($careClubIdsArray, [$careClubId]); $finalArrayString = json_encode($finalArray); $updateSql = "UPDATE subaadmin SET care_club_ids='$finalArrayString' WHERE id=$brachId"; $updateQuery = $this->conn->prepare($updateSql); $updateQuery->execute(); } $deleteQuery = $this->conn->prepare('DELETE FROM care_club WHERE care_club_id = :care_club_id'); $deleteQuery->bindParam(':care_club_id', $careClubId, PDO::PARAM_INT); $deleteQuery->execute(); $delete = $deleteQuery->rowCount(); if ($delete) { return $delete; } else { return 0; } } function deleteCareClub($post) { $careClubId = $post['careClubId']; $deleteStatus = 1; $status = 0; // UPDATE services SET delete_status = :delete_status WHERE service_id = :service_id $deleteQuery = $this->conn->prepare('UPDATE care_club SET delete_status = :delete_status, care_club_status = :care_club_status WHERE care_club_id = :care_club_id'); $deleteQuery->bindParam(':delete_status', $deleteStatus, PDO::PARAM_INT); $deleteQuery->bindParam(':care_club_status', $status, PDO::PARAM_INT); $deleteQuery->bindParam(':care_club_id', $careClubId, PDO::PARAM_INT); $deleteQuery->execute(); $delete = $deleteQuery->rowCount(); if ($delete) { return $delete; } else { return 0; } } function getCareClubs($post) { $type = $post['type']; if (isset($_SESSION['subAdmin'])) { $selectBranchQuery = $this->conn->prepare('SELECT branch_id FROM subaadmin WHERE id = :subadmin_id'); $selectBranchQuery->bindParam(':subadmin_id', $_SESSION['subId'], PDO::PARAM_INT); $selectBranchQuery->execute(); $branchData = $selectBranchQuery->fetch(PDO::FETCH_ASSOC); $branchId = $branchData['branch_id']; if ($branchId == 0 || $branchId == null) { if ($type == 1) { $query = 'SELECT * From care_club WHERE delete_status = 0 ORDER BY care_club_id DESC'; } else if ($type == 2) { $query = 'SELECT * From care_club WHERE delete_status = 0 AND care_club_status = 0 AND created_by = 2 ORDER BY care_club_id DESC'; } else if ($type == 3) { $query = 'SELECT * From care_club WHERE delete_status = 0 AND care_club_status = 1 ORDER BY care_club_id DESC'; } else if ($type == 4) { $query = 'SELECT * From care_club WHERE delete_status = 0 AND care_club_status = 0 AND created_by != 2 ORDER BY care_club_id DESC'; } } else { $selectQuery = $this->conn->prepare('SELECT care_club.*,care_club_brach.* FROM care_club LEFT JOIN care_club_brach ON care_club_brach.care_club_id = care_club.care_club_id AND care_club_brach.branch_id = ' . $branchId . ' WHERE care_club.delete_status = 0 AND (care_club_brach.delete_status IS NULL OR care_club_brach.delete_status = 0) AND (care_club_brach.branch_id = ' . $branchId . ' OR care_club_brach.branch_id IS NULL) AND (care_club.care_club_id IN ( SELECT care_club_id FROM care_club_brach WHERE branch_id = ' . $branchId . ' ) OR care_club.care_club_id NOT IN ( SELECT care_club_id FROM care_club_brach )) '); if ($type == 2) { $selectQuery->execute(); $selectQuery->execute(); $query = $selectQuery->queryString . ' AND care_club.created_by = 2 ORDER BY care_club.care_club_id DESC'; } else if ($type == 3) { $selectQuery->execute(); $selectQuery->execute(); $query = $selectQuery->queryString . ' AND care_club.care_club_status = 1 ORDER BY care_club.care_club_id DESC'; } else if ($type == 4) { $selectQuery->execute(); $selectQuery->execute(); $query = $selectQuery->queryString . ' AND care_club.created_by != 2 ORDER BY care_club.care_club_id DESC'; } else { $selectQuery->execute(); $query = $selectQuery->queryString . ' ORDER BY care_club.care_club_id DESC'; } } } else { if ($type == 1) { $query = 'SELECT * From care_club WHERE delete_status = 0 ORDER BY care_club_id DESC'; } else if ($type == 2) { $query = 'SELECT * From care_club WHERE delete_status = 0 AND care_club_status = 0 AND created_by = 2 ORDER BY care_club_id DESC'; } else if ($type == 3) { $query = 'SELECT * From care_club WHERE delete_status = 0 AND care_club_status = 1 ORDER BY care_club_id DESC'; } else if ($type == 4) { $query = 'SELECT * From care_club WHERE delete_status = 0 AND care_club_status = 0 AND created_by != 2 ORDER BY care_club_id DESC'; } } $selectQuery = $this->conn->prepare($query); $selectQuery->execute(); $servicesData = $selectQuery->fetchAll(PDO::FETCH_ASSOC); return $servicesData; } function getServicesByCareClub($id) { $careClubId = $id; $query = 'SELECT services_1_year,services_2_year,services_3_year,services_4_year,services_5_year From care_club_brach WHERE care_club_id =:care_club_id'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':care_club_id', $careClubId, PDO::PARAM_INT); $selectQuery->execute(); $queryData = $selectQuery->fetch(PDO::FETCH_ASSOC); $services1stYr = json_decode($queryData['services_1_year'], true) ?? []; $services2ndYr = json_decode($queryData['services_2_year'], true) ?? []; $services3rdYr = json_decode($queryData['services_3_year'], true) ?? []; $services4thYr = json_decode($queryData['services_4_year'], true) ?? []; $services5thYr = json_decode($queryData['services_5_year'], true) ?? []; $allServiceIds = array_values(array_unique(array_merge( array_keys($services1stYr), array_keys($services2ndYr), array_keys($services3rdYr), array_keys($services4thYr), array_keys($services5thYr) ))); /* ----------------------------- BUILD SERVICE ID => TOTAL COUNT MAP ------------------------------*/ $serviceCountMap = []; foreach ([$services1stYr, $services2ndYr, $services3rdYr, $services4thYr, $services5thYr] as $yearServices) { foreach ($yearServices as $serviceId => $count) { if (!isset($serviceCountMap[$serviceId])) { $serviceCountMap[$serviceId] = 0; } $serviceCountMap[$serviceId] += (int)$count; } } /* ----------------------------- FETCH SERVICE NAMES + BUILD FINAL ARRAY ------------------------------*/ $serviceNames = []; $i = 0; foreach ($allServiceIds as $serviceId) { $service = $this->getSingleserviceDetails($serviceId); if (!$service || !isset($service['name'])) { continue; } $count = $serviceCountMap[$serviceId] ?? 0; $serviceNames[$i] = [ 'service_id' => $serviceId, 'name' => $service['name'], 'count' => $count ]; $i++; } return $serviceNames; } function getSingleCareClub($post) { $id = $post['id']; //apply price for specific care club for subadmin if care club have any branch if (isset($_SESSION['subAdmin'])) { $selectBranchQuery = $this->conn->prepare('SELECT branch_id FROM subaadmin WHERE id = :subadmin_id'); $selectBranchQuery->bindParam(':subadmin_id', $_SESSION['subId'], PDO::PARAM_INT); $selectBranchQuery->execute(); $branchData = $selectBranchQuery->fetch(PDO::FETCH_ASSOC); $branchId = $branchData['branch_id']; $query = "SELECT care_club.*, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.sedan_price_1_year END AS subAdminSedanAmount1, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.sedan_price_2_year END AS subAdminSedanAmount2, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.sedan_price_3_year END AS subAdminSedanAmount3, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.sedan_price_4_year END AS subAdminSedanAmount4, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.sedan_price_5_year END AS subAdminSedanAmount5, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.muv_price_1_year END AS subAdminMuvAmount1, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.muv_price_2_year END AS subAdminMuvAmount2, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.muv_price_3_year END AS subAdminMuvAmount3, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.muv_price_4_year END AS subAdminMuvAmount4, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.muv_price_5_year END AS subAdminMuvAmount5, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.suv_price_1_year END AS subAdminSuvAmount1, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.suv_price_2_year END AS subAdminSuvAmount2, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.suv_price_3_year END AS subAdminSuvAmount3, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.suv_price_4_year END AS subAdminSuvAmount4, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.suv_price_5_year END AS subAdminSuvAmount5, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.hb_price_1_year END AS subAdminHbAmount1, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.hb_price_2_year END AS subAdminHbAmount2, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.hb_price_3_year END AS subAdminHbAmount3, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.hb_price_4_year END AS subAdminHbAmount4, CASE WHEN care_club_brach.branch_id = $branchId THEN care_club_brach.hb_price_5_year END AS subAdminHbAmount5 FROM care_club LEFT JOIN care_club_brach ON care_club_brach.care_club_id = care_club.care_club_id AND care_club_brach.branch_id = $branchId AND care_club_brach.delete_status = 0 WHERE care_club.delete_status = 0 AND care_club.care_club_id = $id ORDER BY care_club.care_club_id DESC"; } else { $query = "SELECT * FROM care_club WHERE care_club_id=$id"; } $query = $this->conn->prepare($query); $query->execute(); $data = $query->fetch(PDO::FETCH_ASSOC); return $data; } function getBrachesByCareClub($careClubId) { $sql = "SELECT care_club_brach.*, braches.name as name FROM care_club_brach LEFT JOIN braches ON care_club_brach.branch_id = braches.brach_id WHERE care_club_brach.care_club_id = $careClubId AND care_club_brach.delete_status = 0"; $query = $this->conn->prepare($sql); $query->execute(); $data = $query->fetchAll(PDO::FETCH_ASSOC); return $data; } function editProduct($post) { $baseUrl = $_ENV['base_url']; $editProductId = $post['editproductId']; $productName = $post['edittitle']; $amount = $post['editamount']; $editdescription = $post['editdescription']; $expiry = trim($post['expiry']); $duration = $post['duration']; $warranty = $post['warranty']; $warranty_duration = $post['warranty_duration']; $query = 'SELECT image_name From products WHERE product_id =:product_id'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':product_id', $editProductId, PDO::PARAM_INT); $selectQuery->execute(); $imageName = $selectQuery->fetch(PDO::FETCH_ASSOC); $unlinkFileName = $imageName['image_name']; $unlinkFilePath = '../../uploads/products/' . $unlinkFileName; if ($_FILES['editProductImage']['size'] != 0) { $fileName = $_FILES["editProductImage"]['name']; $uniqueFileName = uniqid() . '_' . $fileName; $targetDir = '../../uploads/products/'; $targetFile = $targetDir . $uniqueFileName; if (unlink($unlinkFilePath)) { if (move_uploaded_file($_FILES["editProductImage"]["tmp_name"], $targetFile)) { $updateQuery = $this->conn->prepare('UPDATE products SET name = :name,amount = :amount,image_name =:image_name,description =:description,expiry =:expiry,duration =:duration,warranty =:warranty,warranty_duration =:warranty_duration WHERE product_id = :product_id'); $updateQuery->bindParam(':name', $productName, PDO::PARAM_STR); $updateQuery->bindParam(':amount', $amount, PDO::PARAM_INT); $updateQuery->bindParam(':image_name', $uniqueFileName, PDO::PARAM_STR); $updateQuery->bindParam(':description', $editdescription, PDO::PARAM_STR); $updateQuery->bindParam(':expiry', $expiry, PDO::PARAM_INT); $updateQuery->bindParam(':duration', $duration, PDO::PARAM_INT); $updateQuery->bindParam(':warranty', $warranty, PDO::PARAM_INT); $updateQuery->bindParam(':warranty_duration', $warranty_duration, PDO::PARAM_INT); $updateQuery->bindParam(':product_id', $editProductId, PDO::PARAM_INT); $updateQuery->execute(); } $update = $updateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } } else { $updateQuery1 = $this->conn->prepare('UPDATE products SET name = :name,amount = :amount,description =:description,expiry =:expiry,duration =:duration,warranty =:warranty,warranty_duration_type =:warranty_duration WHERE product_id = :product_id'); $updateQuery1->bindParam(':name', $productName, PDO::PARAM_STR); $updateQuery1->bindParam(':amount', $amount, PDO::PARAM_INT); $updateQuery1->bindParam(':product_id', $editProductId, PDO::PARAM_INT); $updateQuery1->bindParam(':description', $editdescription, PDO::PARAM_STR); $updateQuery1->bindParam(':expiry', $expiry, PDO::PARAM_INT); $updateQuery1->bindParam(':duration', $duration, PDO::PARAM_INT); $updateQuery1->bindParam(':warranty', $warranty, PDO::PARAM_INT); $updateQuery1->bindParam(':warranty_duration', $warranty_duration, PDO::PARAM_INT); $updateQuery1->execute(); $update = $updateQuery1->rowCount(); if ($update) { return $update; } else { return 0; } } } function editPackage($post) { $packageId = $post['packageId']; $description = $post['description']; $points = $post['points']; $amount = $post['amount']; $month = $post['months']; $servicePoints = json_encode($post['servicePoints']); $selectedServices = json_encode($post['checkboxes']); $currentDateTime = date('Y-m-d H:i:s'); $updateQuery = $this->conn->prepare('UPDATE packages SET description = :description,total_points = :total_points, service_points =:service_points, service_id =:service_id , month =:month,amount =:amount , modified_date =:modified_date WHERE package_id = :package_id'); $updateQuery->bindParam(':description', $description, PDO::PARAM_STR); $updateQuery->bindParam(':total_points', $points, PDO::PARAM_INT); $updateQuery->bindParam(':service_points', $servicePoints, PDO::PARAM_STR); $updateQuery->bindParam(':service_id', $selectedServices, PDO::PARAM_STR); $updateQuery->bindParam(':month', $month, PDO::PARAM_INT); $updateQuery->bindParam(':amount', $amount, PDO::PARAM_INT); $updateQuery->bindParam(':modified_date', $currentDateTime, PDO::PARAM_INT); $updateQuery->bindParam(':package_id', $packageId, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } function addProduct($post) { $baseUrl = $_ENV['base_url']; $serviceName = trim($post['title']); $description = trim($post['description']); $amount = trim($post['amount']); $addedBy = trim($post['addedby']); $expiry = trim($post['expiry']); $duration = $post['duration']; $warranty = $post['warranty']; $warrantyDuration = $post['warranty_duration']; $addedBy_Id = ''; if ($addedBy == 2) { $addedBy_Id = $post['subId']; } $fileName = $_FILES["productImage"]['name']; $uniqueFileName = uniqid() . '_' . $fileName; if ($fileName) { $targetDir = '../../uploads/products/'; $targetFile = $targetDir . $uniqueFileName; if (move_uploaded_file($_FILES["productImage"]["tmp_name"], $targetFile)) { if ($addedBy == 1) { $insertQuery = "INSERT INTO products (name, amount,image_name, description, product_status, expiry, duration,warranty,warranty_duration_type,created_by,addedBy_id, modified_date,delete_status) VALUES ('$serviceName','$amount','$uniqueFileName','$description','1','$expiry','$duration',$warranty,$warrantyDuration,'1','0','','0')"; } else if ($addedBy == 2) { $insertQuery = "INSERT INTO products (name, amount,image_name, description, product_status, expiry, duration,warranty,warranty_duration_type,created_by,addedBy_id, modified_date,delete_status) VALUES ('$serviceName','$amount','$uniqueFileName','$description','0','$expiry','$duration',$warranty,$warrantyDuration,'2','$addedBy_Id','','0')"; } $insert = $this->conn->exec($insertQuery); return $insert; } else { return 2; // Unable to upload file } } else { return 3; // Image Not Getting } } function getProducts($post) { $type = $post['type']; if ($type == 1) { $query = 'SELECT * From products WHERE delete_status = 0 ORDER BY product_id DESC'; } else if ($type == 2) { $query = 'SELECT * From products WHERE delete_status = 0 AND product_status = 0 AND created_by = 2 ORDER BY product_id DESC'; } else if ($type == 3) { $query = 'SELECT * From products WHERE delete_status = 0 AND product_status = 1 ORDER BY product_id DESC'; } else if ($type == 4) { $query = 'SELECT * From products WHERE delete_status = 0 AND product_status = 0 AND created_by != 2 ORDER BY product_id DESC'; } $selectQuery = $this->conn->prepare($query); // $selectQuery->bindParam(':delete_status',$deleteStatus,PDO::PARAM_INT); $selectQuery->execute(); $servicesData = $selectQuery->fetchAll(PDO::FETCH_ASSOC); return $servicesData; } function changeProductStatus($post) { $productStatus = $post['key']; $productId = $post['id']; $updateQuery = $this->conn->prepare('UPDATE products SET product_status = :product_status WHERE product_id = :product_id'); $updateQuery->bindParam(':product_status', $productStatus, PDO::PARAM_INT); $updateQuery->bindParam(':product_id', $productId, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } function productAccept($post) { $productStatus = 1; $productId = $post['id']; $created_by = 3; $notification_status = 1; $updateQuery = $this->conn->prepare('UPDATE products SET product_status = :product_status,created_by = :created_by,notification_status =:notification_status WHERE product_id = :product_id'); $updateQuery->bindParam(':created_by', $created_by, PDO::PARAM_INT); $updateQuery->bindParam(':product_status', $productStatus, PDO::PARAM_INT); $updateQuery->bindParam(':product_id', $productId, PDO::PARAM_INT); $updateQuery->bindParam(':notification_status', $notification_status, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } function productDecline($post) { $productId = $post['id']; $deleteQuery = $this->conn->prepare('DELETE FROM products WHERE product_id = :product_id'); $deleteQuery->bindParam(':product_id', $productId, PDO::PARAM_INT); $deleteQuery->execute(); $delete = $deleteQuery->rowCount(); if ($delete) { return $delete; } else { return 0; } } function deleteProduct($post) { $ProductId = $post['ProductId']; $deleteStatus = 1; $serviceStatus = 0; // UPDATE services SET delete_status = :delete_status WHERE service_id = :service_id $deleteQuery = $this->conn->prepare('UPDATE products SET delete_status = :delete_status, product_status = :product_status WHERE product_id = :product_id'); $deleteQuery->bindParam(':delete_status', $deleteStatus, PDO::PARAM_INT); $deleteQuery->bindParam(':product_status', $serviceStatus, PDO::PARAM_INT); $deleteQuery->bindParam(':product_id', $ProductId, PDO::PARAM_INT); $deleteQuery->execute(); $delete = $deleteQuery->rowCount(); if ($delete) { return $delete; } else { return 0; } } function serachProduct($post) { $searchTerm = trim($post['key']); $query = 'SELECT * From products WHERE name LIKE :searchTerm AND delete_status = 0'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindValue(':searchTerm', "%$searchTerm%", PDO::PARAM_STR);; $selectQuery->execute(); $searchServicesData = $selectQuery->fetchAll(PDO::FETCH_ASSOC); return $searchServicesData; } function getSingleProductDetails($id) { $productId = $id; $query = 'SELECT * From products WHERE product_id =:product_id'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':product_id', $productId, PDO::PARAM_INT); $selectQuery->execute(); $servicesData = $selectQuery->fetch(PDO::FETCH_ASSOC); $servicesData['image_name'] = $_ENV['base_url'] . 'uploads/products/' . $servicesData['image_name']; return $servicesData; } function passwordChange($post) { if ($post['token'] == '') { return 2; } else { $id = $post['id']; $query1 = 'SELECT token FROM admin WHERE id = :id'; $check = $this->conn->prepare($query1); $check->bindParam(':id', $id, PDO::PARAM_INT); $check->execute(); $token = $check->fetch(PDO::FETCH_ASSOC); // return $token; if ($token['token'] == $post['token']) { $npassword = $post['newpassword']; $cpassword = $post['confirmpassword']; $newtoken = ''; $encodedPassword = sha1($cpassword); // return $encodedPassword; $query = 'UPDATE admin SET password = :password , token = :token where id = :id'; $updateQuery = $this->conn->prepare($query); $updateQuery->bindParam(':password', $encodedPassword, PDO::PARAM_STR); $updateQuery->bindParam(':token', $newtoken, PDO::PARAM_STR); $updateQuery->bindParam(':id', $id, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); if ($update) { return 1; } else { return 0; } } else { return 2; } } } function checkSubEmailExists($email) { $baseUrl = $_ENV['base_url']; $sql = "SELECT * FROM subaadmin WHERE email=:email"; $query = $this->conn->prepare($sql); $query->bindParam('email', $email, PDO::PARAM_STR); $query->execute(); $data = $query->fetchAll(PDO::FETCH_ASSOC); // print_r($data);exit; if (!empty($data)) { // print_r($data[0]['user_id']);exit; $id = base64_encode($data[0]['id']); $token = md5(uniqid(rand(), true)); $query = 'UPDATE subaadmin SET token = :token where email = :email'; $updateQuery = $this->conn->prepare($query); $updateQuery->bindParam(':email', $email, PDO::PARAM_STR); $updateQuery->bindParam(':token', $token, PDO::PARAM_STR); $updateQuery->execute(); $customerContent = ' <tr style="padding:10px !important;display:flex;width:100%;color:#FA0000;word-break: break-word;justify-content: space-evenly;"> <td style="width:45%;font-weight:bold;text-align:center;color:#676767">Change Your Password</td> <td style="width: 5%;">:</td> <td style="width: 50%; color:#FA0000;"><a href="' . $baseUrl . 'sub-admin/resetpassword.php?id=' . $id . '&token=' . $token . '"" target="_blank" style="color:#FA0000">Reset Password</a></td> </tr> '; $message = ' <html> <head> <title>1MH Fitness</title> </head> <body> <div style="text-align:center;"> <img src="https://bu1is.krify.com/detailing_edition_web/admin/images/logo.png" alt="image" style="width:25%;height:auto;"/> </div> <div style="text-align:center;width: 550px;margin: 40px auto;border: 3px solid #676767;border-radius: 28px;"> <div style="color: #676767;font-size: 24px;text-align:center !important;font-weight: 600;padding-top:10px;">Reset your password by click the below link</div> <div style="margin:15px;padding:20px !important;"> <hr style="border: 1px solid #676767;"/> <table style="width: 100%;"> <tbody style="overflow:auto;font-size: 16px;"> ' . $customerContent . ' </tbody> </table> <hr style="border: 1px solid #676767;"/> <footer> <h3 style="color: #FA0000;font-size: 18px;"><br/>Thanks & Regards<br/> Detailing Edition Team</h3> </footer> </div> </div> </body> </html>'; $to = $email; $subject = "Forgot Password"; // $message = "To change your password click on the link below:<br>"; // $message .= "$baseUrl/activate.php?id=$id"; $res = $this->smtpMail($to, $subject, $message); } if ($res) { $status = 1; } else { $status = 0; } return $status; } function subPasswordChange($post) { if ($post['token'] == '') { return 2; } else { $id = $post['id']; $query1 = 'SELECT token FROM subaadmin WHERE id = :id'; $check = $this->conn->prepare($query1); $check->bindParam(':id', $id, PDO::PARAM_INT); $check->execute(); $token = $check->fetch(PDO::FETCH_ASSOC); // return $token; if ($token['token'] == $post['token']) { $npassword = $post['newpassword']; $cpassword = $post['confirmpassword']; $newtoken = ''; $encodedPassword = sha1($cpassword); // return $encodedPassword; $query = 'UPDATE subaadmin SET password = :password , token = :token where id = :id'; $updateQuery = $this->conn->prepare($query); $updateQuery->bindParam(':password', $encodedPassword, PDO::PARAM_STR); $updateQuery->bindParam(':token', $newtoken, PDO::PARAM_STR); $updateQuery->bindParam(':id', $id, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); if ($update) { return 1; } else { return 0; } } else { return 2; } } } function addCoupon($post) { $name = trim($post['couponName']); $amount = trim($post['amount']); $maxallocations = strtolower(trim($post['maxallocations'])); $minBill = trim($post['minBillAmount']); // Checking Coupon Exists or not $checkCoupon = $this->conn->prepare('SELECT name FROM coupons WHERE name=:name and cpn_type = 1'); $checkCoupon->bindParam(':name', $name, PDO::PARAM_STR); $checkCoupon->execute(); $numRows = $checkCoupon->rowCount(); if ($numRows == 0) { $insertQuery = "INSERT INTO coupons (name, amount,usercount, usedusers,min_bill,modified_date,cpn_type) VALUES ('" . $name . "','" . $amount . "','" . $maxallocations . "','0','" . $minBill . "','',1)"; $insert = $this->conn->exec($insertQuery); return $insert; } else { return 0; // If Coupon exists sending 0 } } function deleteCoupon($couponId) { $deleteStatus = 1; $updateQuery = $this->conn->prepare('UPDATE coupons SET delete_status = :delete_status WHERE coupon_id = :coupon_id'); $updateQuery->bindParam(':delete_status', $deleteStatus, PDO::PARAM_INT); $updateQuery->bindParam(':coupon_id', $couponId, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } function updateCoupon($post) { $Id = $post['editCouponId']; $name = $post['editCouponName']; $amount = $post['editAmount']; $maxAllocations = $post['editMaxallocations']; $minBill = $post['editminBillAmount']; $currentDateTime = date('Y-m-d H:i:s'); $UpdateQuery = $this->conn->prepare('UPDATE coupons SET name = :name, amount = :amount,usercount = :usercount,min_bill =:min_bill,modified_date =:modified_date WHERE coupon_id = :coupon_id'); $UpdateQuery->bindParam(':name', $name, PDO::PARAM_STR); $UpdateQuery->bindParam(':amount', $amount, PDO::PARAM_INT); $UpdateQuery->bindParam(':usercount', $maxAllocations, PDO::PARAM_INT); $UpdateQuery->bindParam(':min_bill', $minBill, PDO::PARAM_INT); $UpdateQuery->bindParam(':modified_date', $currentDateTime, PDO::PARAM_STR); $UpdateQuery->bindParam(':coupon_id', $Id, PDO::PARAM_INT); $UpdateQuery->execute(); $update = $UpdateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } function addSecretCoupon($post) { $name = trim($post['couponName']); $percent = trim($post['percent']); $maxallocations = 1; $minBill = trim($post['minBillAmount']); // Checking Coupon Exists or not $checkCoupon = $this->conn->prepare('SELECT name FROM coupons WHERE name=:name and cpn_type = 2'); $checkCoupon->bindParam(':name', $name, PDO::PARAM_STR); $checkCoupon->execute(); $numRows = $checkCoupon->rowCount(); // echo $numRows;exit; if ($numRows == 0) { $insertQuery = "INSERT INTO coupons (name, percent,usercount, usedusers,min_bill,modified_date,cpn_type) VALUES ('" . $name . "','" . $percent . "','" . $maxallocations . "','0','" . $minBill . "','',2)"; $insert = $this->conn->exec($insertQuery); return $insert; } else { return 0; // If Coupon exists sending 0 } } function updateSecretCoupon($post) { $Id = $post['editCouponId']; $name = $post['editCouponName']; $percent = $post['editPercent']; $minBill = $post['editminBillAmount']; $currentDateTime = date('Y-m-d H:i:s'); $UpdateQuery = $this->conn->prepare('UPDATE coupons SET name = :name, percent = :percent,min_bill =:min_bill,modified_date =:modified_date WHERE coupon_id = :coupon_id'); $UpdateQuery->bindParam(':name', $name, PDO::PARAM_STR); $UpdateQuery->bindParam(':percent', $percent, PDO::PARAM_INT); $UpdateQuery->bindParam(':min_bill', $minBill, PDO::PARAM_INT); $UpdateQuery->bindParam(':modified_date', $currentDateTime, PDO::PARAM_STR); $UpdateQuery->bindParam(':coupon_id', $Id, PDO::PARAM_INT); $UpdateQuery->execute(); $update = $UpdateQuery->rowCount(); if ($update) { return $update; } else { return 0; } } function getSingleCoupon($couponName) { $delete_status = 0; $query = 'SELECT * From coupons WHERE name =:name AND delete_status =:delete_status'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':name', $couponName, PDO::PARAM_STR); $selectQuery->bindParam(':delete_status', $delete_status, PDO::PARAM_STR); $selectQuery->execute(); $count = $selectQuery->rowCount(); $couponData = array(); if ($count > 0) { $couponData = $selectQuery->fetch(PDO::FETCH_ASSOC); } else { $couponData['status'] = 0; } return $couponData; } function getSingleCouponById($id) { $query = 'SELECT * From coupons WHERE coupon_id =:coupon_id'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':coupon_id', $id, PDO::PARAM_STR); $selectQuery->execute(); $couponData = $selectQuery->fetch(PDO::FETCH_ASSOC); return $couponData; } function addPackagePayment($post, $type) { // Admin Adding if ($type == 1) { $approveStatus = 1; $notificationStatus = 1; } else { // Sub Admin Adding $approveStatus = 0; $notificationStatus = 0; } $packageId = $post['packageId']; $userId = $post['userId']; $vehicletype = $post['vehicletype']; $vehiclenumber = $post['vehiclenumber']; $model = $post['model']; $arrayservicesIds = $post['servicesIds']; $servicesIds = json_encode($post['servicesIds']); $serviceNamesArray = array(); $i = 0; foreach ($arrayservicesIds as $id) { $serviceDeatils = $this->getSingleserviceDetails($id); $serviceNamesArray[$i] = $serviceDeatils['name']; $i = $i + 1; } $serviceNames = json_encode($serviceNamesArray); $pacakgeDetails = $this->getSinglePacakgeDetails($packageId); $packageName = $pacakgeDetails[0]['name']; $servicePoints = $pacakgeDetails[0]['service_points']; $amount = $post['amount']; $extendMonths = $post['extendMonths']; $currentDate = new DateTime(); // Extend the months $currentDate->add(new DateInterval('P' . $extendMonths . 'M')); // Output the extended date $extendedDate = $currentDate->format('d-m-Y'); $amount = $amount * 1.18; $jsonData = array(); $vechileDetailsArray = array(); $jsonData['vehicletype'] = $vehicletype; $jsonData['vehiclenumber'] = $vehiclenumber; $jsonData['model'] = $model; $jsonData['expiryDate'] = $extendedDate; $jsonData['servicePoints'] = $servicePoints; $jsonData['packageName'] = $packageName; $jsonData['serviceNames'] = $serviceNames; $vechileDetailsArray['servicePointsStatus'] = ['0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0']; $vechileDetails = serialize($vechileDetailsArray); $purchaseDetails = serialize($jsonData); // Admin Adding if ($type == 1) { $invoiceQuery = 'SELECT MAX(invoice_id) as invoiceId From allotment WHERE approve_status = 1 OR approve_status = 4'; $invoiceQuery = $this->conn->prepare($invoiceQuery); $invoiceQuery->execute(); $invoiceData = $invoiceQuery->fetch(PDO::FETCH_ASSOC); $count = $invoiceQuery->rowCount(); if ($count > 0) { $invoiceId = $invoiceData['invoiceId'] + 1; } else { $invoiceId = 1; } } else { // Sub Admin Adding $invoiceId = 0; } $adminColumnName = (isset($_SESSION['id'])) ? 'admin_id' : 'sub_admin_id'; $adminId = (isset($_SESSION['id'])) ? $_SESSION['id'] : $_SESSION['subId']; $insertQuery = "INSERT INTO allotment ($adminColumnName,invoice_id,package_id,service_id,product_id,user_id,type,amount,details,vechile_details,approve_status,notification_status,remarks) VALUES ('" . $adminId . "','" . $invoiceId . "','" . $packageId . "','" . $servicesIds . "','0','" . $userId . "','1','" . $amount . "','" . $purchaseDetails . "','" . $vechileDetails . "','" . $approveStatus . "','" . $notificationStatus . "','')"; $insert = $this->conn->exec($insertQuery); $insertedId = $this->conn->lastInsertId(); $result = array(); $result['insert'] = $insert; $result['insertedId'] = $insertedId; return $result; } function addCareClubPayment($post, $type) { // Admin Adding if ($type == 1) { $approveStatus = 1; $notificationStatus = 1; } else { // Sub Admin Adding $careClubId = $post['careClubId']; $selectBranchQuery = $this->conn->prepare('SELECT branch_id FROM subaadmin WHERE id = :subadmin_id'); $selectBranchQuery->bindParam(':subadmin_id', $_SESSION['subId'], PDO::PARAM_INT); $selectBranchQuery->execute(); $branchData = $selectBranchQuery->fetch(PDO::FETCH_ASSOC); $branchId = $branchData['branch_id']; if ($branchId > 0) { $sql = "SELECT count,alloted_count FROM care_club_brach WHERE care_club_id = $careClubId AND branch_id = $branchId and delete_status = 0"; $query = $this->conn->prepare($sql); $query->execute(); $countData = $query->fetch(PDO::FETCH_ASSOC); if ($countData) { $alloted_count = $countData['alloted_count']; $count = $countData['count']; if ($alloted_count >= $count) { return "Care club purchase limit excedded"; } else { $newCount = $alloted_count + 1; $sql = "UPDATE care_club_brach SET alloted_count = $newCount WHERE care_club_id = $careClubId AND branch_id = $branchId"; $updateQuery = $this->conn->prepare($sql); $updateQuery->execute(); $approveStatus = 0; $notificationStatus = 0; } } else { $approveStatus = 0; $notificationStatus = 0; } } else { $approveStatus = 0; $notificationStatus = 0; } } $userId = $post['userId']; $carType = $post['carType']; $planType = $post['planType']; $careClubId = $post['careClubId']; $branchId = $post['branchId']; $couponId = $post['couponId'] ? $post['couponId'] : 0; $careClubDetails = $this->getBranchCarPlanPrice(['careClubId' => $careClubId, 'branchId' => $branchId]); switch ($carType) { case 1: $careClubDetails['amount'] = $careClubDetails['sedan_price_' . $planType . '_year']; break; case 2: $careClubDetails['amount'] = $careClubDetails['suv_price_' . $planType . '_year']; break; case 3: $careClubDetails['amount'] = $careClubDetails['muv_price_' . $planType . '_year']; break; case 4: $careClubDetails['amount'] = $careClubDetails['hb_price_' . $planType . '_year']; break; } $currentDate = new DateTime(); $currentDate->modify('+' . $planType . ' years'); $expiryDate = $currentDate->format('d-m-Y'); switch ($planType) { case 1: $careClubServiceDetails = json_decode($careClubDetails['services_1_year'], true); break; case 2: $careClubServiceDetails = json_decode($careClubDetails['services_2_year'], true); break; case 3: $careClubServiceDetails = json_decode($careClubDetails['services_3_year'], true); break; case 4: $careClubServiceDetails = json_decode($careClubDetails['services_4_year'], true); break; case 5: $careClubServiceDetails = json_decode($careClubDetails['services_5_year'], true); break; } // Get service details for the care club $serviceIds = array_keys($careClubServiceDetails); $serviceCounts = array_values($careClubServiceDetails); $serviceIdsString = json_encode($serviceIds); $serviceCountsString = json_encode($serviceCounts); $serviceNamesArray = array(); $i = 0; foreach ($serviceIds as $id) { $serviceDeatils = $this->getSingleserviceDetails($id); $serviceNamesArray[$i] = $serviceDeatils['name']; $i = $i + 1; } // Here we are adding all service names with their count in the care club $serviceNameWithCountArray = []; foreach ($serviceCounts as $index => $count) { $name = $serviceNamesArray[$index]; $serviceNameWithCountArray = array_merge($serviceNameWithCountArray, array_fill(0, $count, $name)); } $serviceNameWithPlanCountArray = []; foreach ($serviceNameWithCountArray as $name) { $serviceNameWithPlanCountArray = array_merge( $serviceNameWithPlanCountArray, array_fill(0, $planType, $name) ); } $serviceNames = json_encode($serviceNameWithPlanCountArray); $vehicletype = $post['vehicletype']; $vehicleNumber = $post['vehiclenumber']; $model = $post['model']; $totalServicesCount = count($serviceNameWithPlanCountArray); $details = []; $details['careClubName'] = $careClubDetails['name']; $details['serviceIds'] = $serviceIdsString; $details['serviceNames'] = $serviceNames; $details['serviceCount'] = $serviceCountsString; $details['expiryDate'] = $expiryDate; $details['vehicletype'] = $vehicletype; $details['vehicleNumber'] = $vehicleNumber; $details['model'] = $model; $details['totalServices'] = $totalServicesCount; $details['careClubCost'] = (isset($careClubDetails['subAdminAmount']) && $careClubDetails['subAdminAmount'] != '') ? $careClubDetails['subAdminAmount'] : $careClubDetails['amount']; $details['carType'] = $carType; $details['planType'] = $planType; $detailsString = serialize($details); //if subadmin has price for the care club $amount = (isset($careClubDetails['subAdminAmount']) && $careClubDetails['subAdminAmount'] != '') ? $careClubDetails['subAdminAmount'] : $careClubDetails['amount']; if ($couponId != 0) { $couponSelectquery = 'SELECT * From coupons WHERE coupon_id =:coupon_id'; $couponSelectquery = $this->conn->prepare($couponSelectquery); $couponSelectquery->bindParam(':coupon_id', $couponId, PDO::PARAM_INT); $couponSelectquery->execute(); $couponData = $couponSelectquery->fetch(PDO::FETCH_ASSOC); $usercount = $couponData['usercount'] - $couponData['usedusers']; if ($couponData['cpn_type'] == 1) { $couponAmount = $couponData['amount']; } else { $couponAmount = $amount * ($couponData['percent'] / 100); } if ($usercount > 0) { $couponUsedUsers = $couponData['usedusers'] + 1; $updateCouponQuery = $this->conn->prepare('UPDATE coupons SET usedusers = :usedusers WHERE coupon_id = :coupon_id'); $updateCouponQuery->bindParam(':usedusers', $couponUsedUsers, PDO::PARAM_INT); $updateCouponQuery->bindParam(':coupon_id', $couponId, PDO::PARAM_INT); $updateCouponQuery->execute(); $update = $updateCouponQuery->rowCount(); } $amount = $amount - $couponAmount; // $amount = ($subamount * 0.18) + $amount; } //add tax for care club final amount $amount += $amount * 0.18; $vechileDetailsArray = []; for ($i = 0; $i < $totalServicesCount; $i++) { $vechileDetailsArray[$i]['status'] = 0; } $vechileDetailsString = serialize($vechileDetailsArray); // Admin Adding if ($type == 1) { $invoiceQuery = 'SELECT MAX(invoice_id) as invoiceId From allotment WHERE approve_status = 1 OR approve_status = 4'; $invoiceQuery = $this->conn->prepare($invoiceQuery); $invoiceQuery->execute(); $invoiceData = $invoiceQuery->fetch(PDO::FETCH_ASSOC); $count = $invoiceQuery->rowCount(); if ($count > 0) { $invoiceId = $invoiceData['invoiceId'] + 1; } else { $invoiceId = 1; } } else { // Sub Admin Adding $invoiceId = 0; } $adminColumnName = (isset($_SESSION['id'])) ? 'admin_id' : 'sub_admin_id'; $adminId = (isset($_SESSION['id'])) ? $_SESSION['id'] : $_SESSION['subId']; $insertQuery = "INSERT INTO allotment SET $adminColumnName = $adminId, invoice_id = '" . $invoiceId . "',care_club_id=$careClubId, service_id='', product_id='' , user_id = $userId, type = 4, amount=$amount,details='',vechile_details='', care_club_details = '$detailsString' , care_club_vechile_details = '$vechileDetailsString', approve_status = '$approveStatus' , notification_status = '$notificationStatus', remarks = '',car_type = '$carType', coupon_id='$couponId'"; $insert = $this->conn->exec($insertQuery); $insertedId = $this->conn->lastInsertId(); $result = array(); $result['insert'] = $insert; $result['insertedId'] = $insertedId; return $result; } function addCareClubServiceCarDetails($post) { $vehicleType = $post['vehicleType']; $vehicleNumber = $post['vehicleNumber']; $model = $post['model']; $date = $post['date']; // Y-m-d format $allotmentId = $post['allotmentId']; $serviceIndex = $post['serviceIndex']; $serviceName = $_POST['serviceName']; $indianFormatDate = date('d-m-Y', strtotime($date)); $allotmentDetails = $this->getAllotmentDetails($allotmentId); $vechileDetails = unserialize($allotmentDetails['care_club_vechile_details']); $vechileDetails[$serviceIndex]['status'] = 1; $vechileDetails[$serviceIndex]['vehicleType'] = $vehicleType; $vechileDetails[$serviceIndex]['vehicleNumber'] = $vehicleNumber; $vechileDetails[$serviceIndex]['model'] = $model; $vechileDetails[$serviceIndex]['date'] = $indianFormatDate; $vechileDetails[$serviceIndex]['serviceName'] = $serviceName; $serializeData = serialize($vechileDetails); $updateQuery = $this->conn->prepare('UPDATE allotment SET care_club_vechile_details = :care_club_vechile_details WHERE id = :id'); $updateQuery->bindParam(':care_club_vechile_details', $serializeData, PDO::PARAM_STR); $updateQuery->bindParam(':id', $allotmentId, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); return $update; } function addServicePayment($post, $type) { // Admin Adding if ($type == 1) { $approveStatus = 1; $notificationStatus = 1; } else { // Sub Admin Adding $approveStatus = 0; $notificationStatus = 0; } $selectedServicesIdsArray = isset($post['ServicesIds']) ? json_decode($post['ServicesIds']) : []; $selectedProductIds = isset($post['productIds']) ? json_decode($post['productIds']) : []; $productQuantity = isset($post['productQuantity']) ? json_decode($post['productQuantity']) : []; $userId = $post['userId']; $couponId = isset($post['couponId']) ? $post['couponId'] : 0; $couponAmount = 0; $carType = $post['selectedCarType']; $loyaltyPoints = isset($post['loyalty']) ? $post['loyalty'] : 0; $referralPoints = isset($post['referral']) ? $post['referral'] : 0; $servicesLength = count($selectedServicesIdsArray); $productsLength = count($selectedProductIds); // Getting Services Data of user seleced items $servicesNamesArray = array(); $servicesCostsArray = array(); $servicesAmount = 0; for ($i = 0; $i < $servicesLength; $i++) { $servicesDetails = $this->getSingleserviceDetails($selectedServicesIdsArray[$i]); if ($carType == 1) { $servicesDetails['amount'] = $servicesDetails['sedan_amount']; } else if ($carType == 2) { $servicesDetails['amount'] = $servicesDetails['suv_amount']; } else if ($carType == 3) { $servicesDetails['amount'] = $servicesDetails['muv_amount']; } else if ($carType == 4) { $servicesDetails['amount'] = $servicesDetails['hb_amount']; } $servicesNamesArray[] = $servicesDetails['name']; $servicesCostsArray[] = $servicesDetails['amount']; $servicesAmount = $servicesAmount + $servicesDetails['amount']; } // Getting Products Data of user seleced items $selectedProductNames = array(); $selectedProductCosts = array(); $productAmount = 0; for ($i = 0; $i < $productsLength; $i++) { $productDetails = $this->getSingleProductDetails($selectedProductIds[$i]); $selectedProductNames[$i] = $productDetails['name']; $selectedProductCosts[$i] = $productDetails['amount'] * $productQuantity[$i]; $selectedProductExpiry[$i] = $productDetails['expiry']; $selectedProductDuration[$i] = $productDetails['duration']; $selectedProductWarrenty[$i] = $productDetails['warranty']; $selectedProductWarrentyDuration[$i] = $productDetails['warranty_duration_type']; $productAmount = $productAmount + $selectedProductCosts[$i]; } $subamount = $servicesAmount + $productAmount; $finalSubAmount = $subamount; // $amount = ($subamount * 0.18) + $subamount; if ($couponId != 0) { $couponSelectquery = 'SELECT * From coupons WHERE coupon_id =:coupon_id'; $couponSelectquery = $this->conn->prepare($couponSelectquery); $couponSelectquery->bindParam(':coupon_id', $couponId, PDO::PARAM_INT); $couponSelectquery->execute(); $couponData = $couponSelectquery->fetch(PDO::FETCH_ASSOC); $usercount = $couponData['usercount'] - $couponData['usedusers']; if ($couponData['cpn_type'] == 1) { $couponAmount = $couponData['amount']; } else { $couponAmount = $subamount * ($couponData['percent'] / 100); } if ($usercount > 0) { $couponUsedUsers = $couponData['usedusers'] + 1; $updateCouponQuery = $this->conn->prepare('UPDATE coupons SET usedusers = :usedusers WHERE coupon_id = :coupon_id'); $updateCouponQuery->bindParam(':usedusers', $couponUsedUsers, PDO::PARAM_INT); $updateCouponQuery->bindParam(':coupon_id', $couponId, PDO::PARAM_INT); $updateCouponQuery->execute(); $update = $updateCouponQuery->rowCount(); } $subamount = $subamount - $couponAmount; $finalSubAmount = $subamount; } if ($loyaltyPoints > 0) { $subamount = $subamount - $loyaltyPoints; } if ($referralPoints > 0) { $subamount = $subamount - $referralPoints; } $amount = ($subamount * 0.18) + $subamount; $selectedServicesIds = json_encode($selectedServicesIdsArray); $servicesNames = json_encode($servicesNamesArray); $servicesCosts = json_encode($servicesCostsArray); $productIds = json_encode($selectedProductIds); $jsonData = array(); $jsonData['selectedServicesIds'] = json_encode($selectedServicesIdsArray); $jsonData['servicesNames'] = json_encode($servicesNamesArray); $jsonData['servicesCosts'] = json_encode($servicesCostsArray); $jsonData['selectedProductIds'] = json_encode($selectedProductIds); $jsonData['productNames'] = json_encode($selectedProductNames); $jsonData['productQuantity'] = json_encode($productQuantity); $jsonData['productCosts'] = json_encode($selectedProductCosts); if (isset($selectedProductExpiry)) { $jsonData['productExpiry'] = json_encode($selectedProductExpiry); } if (isset($selectedProductDuration)) { $jsonData['productDuration'] = json_encode($selectedProductDuration); } if (isset($selectedProductWarrenty)) { $jsonData['productWarrenty'] = json_encode($selectedProductWarrenty); } if (isset($selectedProductWarrentyDuration)) { $jsonData['productWarrentyDuration'] = json_encode($selectedProductWarrentyDuration); } $jsonData['productCosts'] = json_encode($selectedProductCosts); $jsonData['couponId'] = $couponId; $jsonData['couponAmount'] = $couponAmount; $jsonData['loyaltyPoints'] = $loyaltyPoints; $jsonData['referralPoints'] = $referralPoints; $purchaseDetails = serialize($jsonData); $totalServicesCount = count($servicesNamesArray); $vechileDetailsArray = []; for ($i = 0; $i < $totalServicesCount; $i++) { $vechileDetailsArray[$i]['status'] = 0; $vechileDetailsArray[$i]['serviceName'] = $servicesNamesArray[$i]; } $vechileDetailsString = serialize($vechileDetailsArray); // Admin Adding if ($type == 1) { $invoiceQuery = 'SELECT MAX(invoice_id) as invoiceId From allotment WHERE approve_status = 1 OR approve_status = 4'; $invoiceQuery = $this->conn->prepare($invoiceQuery); $invoiceQuery->execute(); $invoiceData = $invoiceQuery->fetch(PDO::FETCH_ASSOC); $count = $invoiceQuery->rowCount(); if ($count > 0) { $invoiceId = $invoiceData['invoiceId'] + 1; } else { $invoiceId = 1; } } else { // Sub Admin Adding $invoiceId = 0; } // $insertQuery = "INSERT INTO allotment (invoice_id,package_id,service_id,product_id,user_id,type,amount,details,vechile_details,care_club_details,care_club_vechile_details,approve_status,notification_status,remarks) VALUES ('$invoiceId','0','$selectedServicesIds','$productIds','$userId','2','$amount ','$purchaseDetails','$vechileDetailsString','','','$approveStatus','$notificationStatus','')"; $adminColumnName = (isset($_SESSION['id'])) ? 'admin_id' : 'sub_admin_id'; $adminId = (isset($_SESSION['id'])) ? $_SESSION['id'] : $_SESSION['subId']; $insertQuery = "INSERT INTO allotment ($adminColumnName,invoice_id,package_id,service_id,product_id,user_id,type,amount,details,vechile_details,care_club_details,care_club_vechile_details,approve_status,notification_status,remarks,coupon_id,loyalty_points,referral_points) VALUES ('$adminId','$invoiceId','0','$selectedServicesIds','$productIds','$userId','2','$amount ','$purchaseDetails','$vechileDetailsString','','','$approveStatus','$notificationStatus','',$couponId,$loyaltyPoints,$referralPoints)"; $insert = $this->conn->exec($insertQuery); $insertedId = $this->conn->lastInsertId(); // //update loyalty points in user table // if($loyaltyPoints > 0) { // $query = "UPDATE user SET loyalty_points = loyalty_points - :loyaltyPoints WHERE id = :userId"; // $stmt = $this->conn->prepare($query); // $stmt->bindParam(':loyaltyPoints', $loyaltyPoints, PDO::PARAM_INT); // $stmt->bindParam(':userId', $userId, PDO::PARAM_INT); // $stmt->execute(); // } $updateFields = []; $params = [':userId' => $userId]; if ($loyaltyPoints > 0) { $updateFields[] = "loyalty_points = loyalty_points - :loyaltyPoints"; $params[':loyaltyPoints'] = $loyaltyPoints; } if ($referralPoints > 0) { $updateFields[] = "referral_points = referral_points - :referralPoints"; $params[':referralPoints'] = $referralPoints; } if (!empty($updateFields)) { $query = "UPDATE user SET " . implode(', ', $updateFields) . " WHERE id = :userId"; $stmt = $this->conn->prepare($query); $stmt->bindParam(':loyaltyPoints', $loyaltyPoints, PDO::PARAM_INT); $stmt->bindParam(':userId', $userId, PDO::PARAM_INT); $stmt->execute(); } //update referral points in user table if ($referralPoints > 0) { $query = "UPDATE user SET referral_points = referral_points - :referralPoints WHERE id = :userId"; $stmt = $this->conn->prepare($query); $stmt->bindParam(':referralPoints', $referralPoints, PDO::PARAM_INT); $stmt->bindParam(':userId', $userId, PDO::PARAM_INT); $stmt->execute(); } //Get referrer ID from user table $refQuery = $this->conn->prepare('SELECT referred_by FROM user WHERE id = :user_id'); $refQuery->execute([':user_id' => $userId]); $refRow = $refQuery->fetch(PDO::FETCH_ASSOC); if ($refRow) { $referrerId = (int)$refRow['referred_by']; //Calculate 10% of amount $bonus = round($finalSubAmount * 0.10, 2); //Update referral_points $updatePoints = $this->conn->prepare(' UPDATE user SET referral_points = referral_points + :bonus WHERE id = :referrer_id '); $updatePoints->execute([ ':bonus' => $bonus, ':referrer_id' => $referrerId ]); } $result = array(); $result['insert'] = $insert; $result['insertedId'] = $insertedId; $result['encryptedUserId'] = base64_encode($userId); return $result; } function addServiceCarDetails($post) { $vehicleType = $post['vehicleType']; $vehicleNumber = $post['vehicleNumber']; $model = $post['model']; $date = $post['date']; // Y-m-d format $allotmentId = $post['allotmentId']; $serviceIndex = $post['serviceIndex']; $indianFormatDate = date('d-m-Y', strtotime($date)); $allotmentDetails = $this->getAllotmentDetails($allotmentId); $vechileDetails = unserialize($allotmentDetails['vechile_details']); $vechileDetails[$serviceIndex]['status'] = 1; $vechileDetails[$serviceIndex]['vehicleType'] = $vehicleType; $vechileDetails[$serviceIndex]['vehicleNumber'] = $vehicleNumber; $vechileDetails[$serviceIndex]['model'] = $model; $vechileDetails[$serviceIndex]['date'] = $indianFormatDate; $serializeData = serialize($vechileDetails); $updateQuery = $this->conn->prepare('UPDATE allotment SET vechile_details = :vechile_details WHERE id = :id'); $updateQuery->bindParam(':vechile_details', $serializeData, PDO::PARAM_STR); $updateQuery->bindParam(':id', $allotmentId, PDO::PARAM_INT); $updateQuery->execute(); $update = $updateQuery->rowCount(); return $update; } function addProductPayment($post, $type) { // Admin Adding if ($type == 1) { $approveStatus = 1; $notificationStatus = 1; } else { // Sub Admin Adding $approveStatus = 0; $notificationStatus = 0; } $selectedServicesIdsArray = json_decode($post['ServicesIds']); $selectedServiceCarTypes = json_decode($post['ServiceCarTypes']); $selectedProductIds = json_decode($post['productIds']); $productQuantity = json_decode($post['productQuantity']); $userId = $post['userId']; $couponId = isset($post['couponId']) ? $post['couponId'] : 0; $couponAmount = 0; $loyaltyPoints = isset($post['loyalty']) ? $post['loyalty'] : 0; $referralPoints = isset($post['referral']) ? $post['referral'] : 0; $servicesLength = count($selectedServicesIdsArray); $productsLength = count($selectedProductIds); // Getting Services Data of user seleced items $servicesNamesArray = array(); $servicesCostsArray = array(); $servicesAmount = 0; for ($i = 0; $i < $servicesLength; $i++) { $servicesDetails = $this->getSingleserviceDetails($selectedServicesIdsArray[$i]); $amount = 0; switch ($selectedServiceCarTypes[$i]) { case 1: $amount = $servicesDetails['sedan_amount']; break; case 2: $amount = $servicesDetails['suv_amount']; break; case 3: $amount = $servicesDetails['muv_amount']; break; case 4: $amount = $servicesDetails['hb_amount']; break; } $servicesNamesArray[] = $servicesDetails['name']; $servicesCostsArray[] = $amount; $servicesAmount = $servicesAmount + $amount; } $productAmount = 0; for ($i = 0; $i < $productsLength; $i++) { $productDetails = $this->getSingleProductDetails($selectedProductIds[$i]); $selectedProductNames[$i] = $productDetails['name']; $selectedProductCosts[$i] = $productDetails['amount'] * $productQuantity[$i]; $selectedProductExpiry[$i] = $productDetails['expiry']; $selectedProductDuration[$i] = $productDetails['duration']; $selectedProductWarrenty[$i] = $productDetails['warranty']; $selectedProductWarrentyDuration[$i] = $productDetails['warranty_duration_type']; $productAmount = $productAmount + $selectedProductCosts[$i]; } $subamount = $servicesAmount + $productAmount; $finalSubAmount = $subamount; // $amount = ($subamount * 0.18) + $subamount; if ($couponId != 0) { $couponSelectquery = 'SELECT * From coupons WHERE coupon_id =:coupon_id'; $couponSelectquery = $this->conn->prepare($couponSelectquery); $couponSelectquery->bindParam(':coupon_id', $couponId, PDO::PARAM_INT); $couponSelectquery->execute(); $couponData = $couponSelectquery->fetch(PDO::FETCH_ASSOC); $usercount = $couponData['usercount'] - $couponData['usedusers']; if ($couponData['cpn_type'] == "1") { $couponAmount = $couponData['amount']; } else { $couponAmount = $subamount * ($couponData['percent'] / 100); } if ($usercount > 0) { $couponUsedUsers = $couponData['usedusers'] + 1; $updateCouponQuery = $this->conn->prepare('UPDATE coupons SET usedusers = :usedusers WHERE coupon_id = :coupon_id'); $updateCouponQuery->bindParam(':usedusers', $couponUsedUsers, PDO::PARAM_INT); $updateCouponQuery->bindParam(':coupon_id', $couponId, PDO::PARAM_INT); $updateCouponQuery->execute(); $update = $updateCouponQuery->rowCount(); } $subamount = $subamount - $couponAmount; $finalSubAmount = $subamount; } if ($loyaltyPoints > 0) { $subamount = $subamount - $loyaltyPoints; } if ($referralPoints > 0) { $subamount = $subamount - $referralPoints; } $amount = ($subamount * 0.18) + $subamount; $selectedServicesIds = json_encode($selectedServicesIdsArray); $servicesNames = json_encode($servicesNamesArray); $servicesCosts = json_encode($servicesCostsArray); $productIds = json_encode($selectedProductIds); $jsonData = array(); $jsonData['selectedServicesIds'] = json_encode($selectedServicesIdsArray); $jsonData['servicesNames'] = json_encode($servicesNamesArray); $jsonData['servicesCosts'] = json_encode($servicesCostsArray); $jsonData['selectedProductIds'] = json_encode($selectedProductIds); $jsonData['productNames'] = json_encode($selectedProductNames); $jsonData['productQuantity'] = json_encode($productQuantity); $jsonData['productCosts'] = json_encode($selectedProductCosts); $jsonData['productExpiry'] = json_encode($selectedProductExpiry); $jsonData['productDuration'] = json_encode($selectedProductDuration); $jsonData['productWarrenty'] = json_encode($selectedProductWarrenty); $jsonData['productWarrentyDuration'] = json_encode($selectedProductWarrentyDuration); $jsonData['couponId'] = $couponId; $jsonData['couponAmount'] = $couponAmount; $jsonData['loyaltyPoints'] = $loyaltyPoints; $jsonData['referralPoints'] = $referralPoints; $purchaseDetails = serialize($jsonData); $totalServicesCount = count($servicesNamesArray); $vechileDetailsArray = []; for ($i = 0; $i < $totalServicesCount; $i++) { $vechileDetailsArray[$i]['status'] = 0; $vechileDetailsArray[$i]['serviceName'] = $servicesNamesArray[$i]; } $vechileDetailsString = serialize($vechileDetailsArray); // Admin Adding if ($type == 1) { $invoiceQuery = 'SELECT MAX(invoice_id) as invoiceId From allotment WHERE approve_status = 1 OR approve_status = 4'; $invoiceQuery = $this->conn->prepare($invoiceQuery); $invoiceQuery->execute(); $invoiceData = $invoiceQuery->fetch(PDO::FETCH_ASSOC); $count = $invoiceQuery->rowCount(); if ($count > 0) { $invoiceId = $invoiceData['invoiceId'] + 1; } else { $invoiceId = 1; } } else { // Sub Admin Adding $invoiceId = 0; } $adminColumnName = (isset($_SESSION['id'])) ? 'admin_id' : 'sub_admin_id'; $adminId = (isset($_SESSION['id'])) ? $_SESSION['id'] : $_SESSION['subId']; $insertQuery = "INSERT INTO allotment ($adminColumnName,invoice_id,package_id,service_id,product_id,user_id,type,amount,details,vechile_details,care_club_details,care_club_vechile_details,approve_status,notification_status,remarks,coupon_id,loyalty_points,referral_points) VALUES ($adminId,'$invoiceId','0','$selectedServicesIds','$productIds','$userId','3','$amount','$purchaseDetails','$vechileDetailsString','','','$approveStatus','$notificationStatus','',$couponId,$loyaltyPoints,$referralPoints)"; $insert = $this->conn->exec($insertQuery); $insertedId = $this->conn->lastInsertId(); //update loyalty points in user table if ($loyaltyPoints > 0) { $query = "UPDATE user SET loyalty_points = loyalty_points - :loyaltyPoints WHERE id = :userId"; $stmt = $this->conn->prepare($query); $stmt->bindParam(':loyaltyPoints', $loyaltyPoints, PDO::PARAM_INT); $stmt->bindParam(':userId', $userId, PDO::PARAM_INT); $stmt->execute(); } //update referral points in user table if ($referralPoints > 0) { $query = "UPDATE user SET referral_points = referral_points - :referralPoints WHERE id = :userId"; $stmt = $this->conn->prepare($query); $stmt->bindParam(':referralPoints', $referralPoints, PDO::PARAM_INT); $stmt->bindParam(':userId', $userId, PDO::PARAM_INT); $stmt->execute(); } //Get referrer ID from user table $refQuery = $this->conn->prepare('SELECT referred_by FROM user WHERE id = :user_id'); $refQuery->execute([':user_id' => $userId]); $refRow = $refQuery->fetch(PDO::FETCH_ASSOC); if ($refRow) { $referrerId = (int)$refRow['referred_by']; //Calculate 10% of amount $bonus = round($finalSubAmount * 0.10, 2); //Update referral_points $updatePoints = $this->conn->prepare(' UPDATE user SET referral_points = referral_points + :bonus WHERE id = :referrer_id '); $updatePoints->execute([ ':bonus' => $bonus, ':referrer_id' => $referrerId ]); } $result = array(); $result['insert'] = $insert; $result['insertedId'] = $insertedId; $result['encryptedUserId'] = base64_encode($userId); return $result; } function subAdminPayment($post) { $id = $post['allotmentId']; $approveStatus = 4; $invoiceQuery = 'SELECT MAX(invoice_id) as invoiceId From allotment WHERE approve_status = 1 OR approve_status = 4'; $invoiceQuery = $this->conn->prepare($invoiceQuery); $invoiceQuery->execute(); $invoiceData = $invoiceQuery->fetch(PDO::FETCH_ASSOC); $count = $invoiceQuery->rowCount(); if ($count > 0) { $invoiceId = $invoiceData['invoiceId'] + 1; } else { $invoiceId = 1; } $updateCouponQuery = $this->conn->prepare('UPDATE allotment SET approve_status = :approve_status,invoice_id =:invoice_id WHERE id = :id'); $updateCouponQuery->bindParam(':approve_status', $approveStatus, PDO::PARAM_INT); $updateCouponQuery->bindParam(':invoice_id', $invoiceId, PDO::PARAM_INT); $updateCouponQuery->bindParam(':id', $id, PDO::PARAM_INT); $updateCouponQuery->execute(); $update = $updateCouponQuery->rowCount(); return $update; } function getAllotmentDetails($id) { $allotmentId = $id; $query = 'SELECT * From allotment WHERE id =:id'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':id', $allotmentId, PDO::PARAM_INT); $selectQuery->execute(); $allotmentDeatils = $selectQuery->fetch(PDO::FETCH_ASSOC); return $allotmentDeatils; } function getUserPacakgePurchagesData($id) { $user_id = $id; $type = 1; $approveStatus = 1; $approveStatus1 = 4; $query = 'SELECT * From allotment WHERE user_id =:user_id AND type =:type AND (approve_status=:approve_status OR approve_status=:approve_status1) ORDER BY `id` DESC'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':type', $type, PDO::PARAM_INT); $selectQuery->bindParam(':user_id', $user_id, PDO::PARAM_INT); $selectQuery->bindParam(':approve_status', $approveStatus, PDO::PARAM_INT); $selectQuery->bindParam(':approve_status1', $approveStatus1, PDO::PARAM_INT); $selectQuery->execute(); $userPacakgePurchagesData = $selectQuery->fetchAll(PDO::FETCH_ASSOC); return $userPacakgePurchagesData; } function getUserCareClubPurchagesData($id) { $user_id = $id; $type = 4; $approveStatus = 1; $approveStatus1 = 4; $query = 'SELECT * From allotment WHERE user_id =:user_id AND type =:type AND (approve_status=:approve_status OR approve_status=:approve_status1) ORDER BY `id` DESC'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':type', $type, PDO::PARAM_INT); $selectQuery->bindParam(':user_id', $user_id, PDO::PARAM_INT); $selectQuery->bindParam(':approve_status', $approveStatus, PDO::PARAM_INT); $selectQuery->bindParam(':approve_status1', $approveStatus1, PDO::PARAM_INT); $selectQuery->execute(); $userPacakgePurchagesData = $selectQuery->fetchAll(PDO::FETCH_ASSOC); return $userPacakgePurchagesData; } function getUserServicePurchagesData($id) { $user_id = $id; $query = "SELECT * From allotment WHERE user_id =$user_id AND type IN(2,3) AND service_id != '[]' AND service_id != '' AND service_id IS NOT NULL ORDER BY `id` DESC"; $selectQuery = $this->conn->prepare($query); $selectQuery->execute(); $userServicePurchagesData = $selectQuery->fetchAll(PDO::FETCH_ASSOC); return $userServicePurchagesData; } function getUserProductPurchagesData($id) { $user_id = $id; $type = 3; $query = "SELECT * From allotment WHERE user_id = '$user_id' AND type IN(2,3) ORDER BY `id` DESC"; $selectQuery = $this->conn->prepare($query); $selectQuery->execute(); $userServicePurchagesData = $selectQuery->fetchAll(PDO::FETCH_ASSOC); return $userServicePurchagesData; } function getUserPurchagesData($id) { $user_id = $id; $type = 1; $approveStatus = 1; $approveStatus1 = 4; $query = 'SELECT * From allotment WHERE user_id =:user_id AND type !=:type AND ( approve_status =:approve_status OR approve_status =:approve_status1 ) ORDER BY `id` DESC'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':type', $type, PDO::PARAM_INT); $selectQuery->bindParam(':user_id', $user_id, PDO::PARAM_INT); $selectQuery->bindParam(':approve_status', $approveStatus, PDO::PARAM_INT); $selectQuery->bindParam(':approve_status1', $approveStatus1, PDO::PARAM_INT); $selectQuery->execute(); $userServicePurchagesData = $selectQuery->fetchAll(PDO::FETCH_ASSOC); return $userServicePurchagesData; } function approveAllotment($id) { $approveStatus = 3; $notification_status = 4; $updateCouponQuery = $this->conn->prepare('UPDATE allotment SET approve_status = :approve_status, notification_status =:notification_status WHERE id = :id'); $updateCouponQuery->bindParam(':approve_status', $approveStatus, PDO::PARAM_INT); $updateCouponQuery->bindParam(':notification_status', $notification_status, PDO::PARAM_INT); $updateCouponQuery->bindParam(':id', $id, PDO::PARAM_INT); $updateCouponQuery->execute(); $update = $updateCouponQuery->rowCount(); return $update; } function userApproveAllotment($id) { $approveStatus = 1; $notification_status = 4; // Step 1: Update allotment status $updateCouponQuery = $this->conn->prepare(' UPDATE allotment SET approve_status = :approve_status, notification_status = :notification_status WHERE id = :id '); $updateCouponQuery->execute([ ':approve_status' => $approveStatus, ':notification_status' => $notification_status, ':id' => $id ]); // Step 2: Fetch amount + user_id manually $fetchAllotment = $this->conn->prepare(' SELECT details, user_id FROM allotment WHERE id = :id '); $fetchAllotment->execute([':id' => $id]); $row = $fetchAllotment->fetch(PDO::FETCH_ASSOC); if (!$row) { return 0; // Allotment not found } $purchaseDetails = unserialize($row['details']); $productCosts = isset($purchaseDetails['productCosts']) ? json_decode($purchaseDetails['productCosts']) : []; $servicesCosts = isset($purchaseDetails['servicesCosts']) ? json_decode($purchaseDetails['servicesCosts']) : []; $couponAmount = $purchaseDetails['couponAmount']; $amount = array_sum($productCosts) + array_sum($servicesCosts); $amount = $amount - $couponAmount; $userId = (int)$row['user_id']; // Step 3: Get referrer ID from user table $refQuery = $this->conn->prepare(' SELECT referred_by FROM user WHERE id = :user_id '); $refQuery->execute([':user_id' => $userId]); $refRow = $refQuery->fetch(PDO::FETCH_ASSOC); if (!$refRow || empty($refRow['referred_by'])) { return 1; // No referral, nothing more to do } $referrerId = (int)$refRow['referred_by']; // Step 4: Calculate 10% of amount $bonus = round($amount * 0.10, 2); // Step 5: Update referral_points $updatePoints = $this->conn->prepare(' UPDATE user SET referral_points = referral_points + :bonus WHERE id = :referrer_id '); $updatePoints->execute([ ':bonus' => $bonus, ':referrer_id' => $referrerId ]); return 1; } function rejectAllotment($post) { $approveStatus = 5; // Rejected $notification_status = 6; //get allotment data $sql = $this->conn->prepare("SELECT * from allotment where id=:id"); $sql->bindParam(':id', $post['allotmentId'], PDO::PARAM_INT); $sql->execute(); $allotment = $sql->fetch(PDO::FETCH_ASSOC); if ($allotment['coupon_id'] != 0) { $couponId = $allotment['coupon_id']; $couponSql = "SELECT * FROM coupons where coupon_id=:couponId and delete_status = 0"; $couponQuery = $this->conn->prepare($couponSql); $couponQuery->bindParam(':couponId', $couponId, PDO::PARAM_INT); $couponQuery->execute(); $couponData = $couponQuery->fetch(PDO::FETCH_ASSOC); if ($couponData) { $couponUsedUsers = $couponData['usedusers'] - 1; $updateCouponQuery = $this->conn->prepare('UPDATE coupons SET usedusers = :usedusers WHERE coupon_id = :coupon_id'); $updateCouponQuery->bindParam(':usedusers', $couponUsedUsers, PDO::PARAM_INT); $updateCouponQuery->bindParam(':coupon_id', $couponId, PDO::PARAM_INT); $updateCouponQuery->execute(); } } if ($allotment['loyalty_points'] > 0) { $query = "UPDATE user SET loyalty_points = loyalty_points + :loyaltyPoints WHERE id = :userId"; $stmt = $this->conn->prepare($query); $stmt->bindParam(':loyaltyPoints', $allotment['loyalty_points'], PDO::PARAM_INT); $stmt->bindParam(':userId', $allotment['user_id'], PDO::PARAM_INT); $stmt->execute(); } if ($allotment['referral_points'] > 0) { $query = "UPDATE user SET referral_points = referral_points + :referralPoints WHERE id = :userId"; $stmt = $this->conn->prepare($query); $stmt->bindParam(':referralPoints', $allotment['referral_points'], PDO::PARAM_INT); $stmt->bindParam(':userId', $allotment['user_id'], PDO::PARAM_INT); $stmt->execute(); } $updateCouponQuery = $this->conn->prepare('UPDATE allotment SET approve_status = :approve_status, notification_status =:notification_status,remarks = :remark WHERE id = :id'); $updateCouponQuery->bindParam(':approve_status', $approveStatus, PDO::PARAM_INT); $updateCouponQuery->bindParam(':notification_status', $notification_status, PDO::PARAM_INT); $updateCouponQuery->bindParam(':remark', $post['reason'], PDO::PARAM_STR); $updateCouponQuery->bindParam(':id', $post['allotmentId'], PDO::PARAM_INT); $updateCouponQuery->execute(); $update = $updateCouponQuery->rowCount(); return $update; } function allotmentDetails($id) { $selectQuery = $this->conn->prepare('SELECT * From allotment WHERE id =:id'); $selectQuery->bindParam(':id', $id, PDO::PARAM_INT); $selectQuery->execute(); $allotmentData = $selectQuery->fetch(PDO::FETCH_ASSOC); return $allotmentData; } function getAllotmentStatus($post) { $id = $post['allotmentId']; $selectQuery = $this->conn->prepare('SELECT * From allotment WHERE id =:id'); $selectQuery->bindParam(':id', $id, PDO::PARAM_INT); $selectQuery->execute(); $allotmentData = $selectQuery->fetch(PDO::FETCH_ASSOC); return $allotmentData; } function deleteApproval($post) { $deleteQuery = $this->conn->prepare('DELETE FROM allotment WHERE id = :id'); $deleteQuery->bindParam(':id', $post['approvalId'], PDO::PARAM_INT); $deleteQuery->execute(); $delete = $deleteQuery->rowCount(); if ($delete) { return $delete; } else { return 0; } } function paymentBySubadmin($id) { $approve_status = 4; $getMaxInvoiceIdSql = "SELECT MAX(invoice_id) as invoiceId FROM allotment"; $selectQuery = $this->conn->prepare($getMaxInvoiceIdSql); $selectQuery->execute(); $data = $selectQuery->fetch(PDO::FETCH_ASSOC); $maxInvoiceId = $data['invoiceId'] + 1; $query = 'UPDATE allotment SET approve_status = :approve_status, invoice_id = :invoice_id where id = :id'; $updateQuery = $this->conn->prepare($query); $updateQuery->bindParam(':id', $id, PDO::PARAM_STR); $updateQuery->bindParam(':approve_status', $approve_status, PDO::PARAM_STR); $updateQuery->bindParam(':invoice_id', $maxInvoiceId, PDO::PARAM_STR); $updateQuery->execute(); if ($updateQuery) { return 1; } else { return 2; } } function getHomeData() { $query = $this->conn->prepare('SELECT * FROM home WHERE id = 1'); $query->execute(); $result = $query->fetch(PDO::FETCH_ASSOC); return $result; } function getCouponDetails($id) { $query = $this->conn->prepare('SELECT * FROM coupons WHERE coupon_id = :id'); $query->bindParam(':id', $id, PDO::PARAM_INT); $query->execute(); $result = $query->fetch(PDO::FETCH_ASSOC); return $result; } function updateHome($post) { $baseUrl = $_ENV['base_url']; $query = $this->conn->prepare("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'home'"); $query->execute(); $result = $query->fetchall(PDO::FETCH_ASSOC); foreach ($result as $column) { $name = $column['COLUMN_NAME']; if (!empty($_FILES[$name]['name'])) { $fileName = $_FILES[$name]['name']; $uniqueFileName = uniqid() . '_' . $fileName; $targetDir = '../../images/'; $targetFile = $targetDir . $uniqueFileName; if (move_uploaded_file($_FILES[$name]["tmp_name"], $targetFile)) { $updateQuery = $this->conn->prepare('UPDATE home SET ' . $name . '=:image_name WHERE id= 1'); $updateQuery->bindParam(':image_name', $uniqueFileName, PDO::PARAM_STR); $updateQuery->execute(); } } } $sql = $this->conn->prepare('UPDATE home SET slider_text=:slider_text, fc_title1=:fc_title1, fc_title2=:fc_title2, fc_title3=:fc_title3, fc_description1=:fc_description1, fc_description2=:fc_description2, fc_description3=:fc_description3, service_title1=:service_title1, service_title2=:service_title2, service_title3=:service_title3, service_description1=:service_description1, service_description2=:service_description2, service_description3=:service_description3, fc1_status=:fc1_status, fc2_status=:fc2_status, fc3_status=:fc3_status, services1_status=:services1_status, services2_status=:services2_status, services3_status=:services3_status WHERE id = 1'); $sql->bindParam(':slider_text', $post['slider_text']); $sql->bindParam(':fc_title1', $post['fctitle1']); $sql->bindParam(':fc_title2', $post['fctitle2']); $sql->bindParam(':fc_title3', $post['fctitle3']); $sql->bindParam(':fc_description1', $post['fcta1']); $sql->bindParam(':fc_description2', $post['fcta2']); $sql->bindParam(':fc_description3', $post['fcta3']); $sql->bindParam(':service_title1', $post['sctitle1']); $sql->bindParam(':service_title2', $post['sctitle2']); $sql->bindParam(':service_title3', $post['sctitle3']); $sql->bindParam(':service_description1', $post['scta1']); $sql->bindParam(':service_description2', $post['scta2']); $sql->bindParam(':service_description3', $post['scta3']); $sql->bindParam(':fc1_status', $post['FCard1']); $sql->bindParam(':fc2_status', $post['FCard2']); $sql->bindParam(':fc3_status', $post['FCard3']); $sql->bindParam(':services1_status', $post['SCard1']); $sql->bindParam(':services2_status', $post['SCard2']); $sql->bindParam(':services3_status', $post['SCard3']); $sql->execute(); if ($sql) { return 1; } else { return 2; } } //get branch ,car & plan based details with care club function getBranchCarPlanPrice($post) { $query = $this->conn->prepare('SELECT ccb.*, cc.* FROM care_club_brach as ccb LEFT JOIN care_club as cc ON ccb.care_club_id = cc.care_club_id WHERE ccb.branch_id = :branchId AND ccb.care_club_id = :careclubId and ccb.delete_status=0'); $query->bindParam(':branchId', $post['branchId'], PDO::PARAM_INT); $query->bindParam(':careclubId', $post['careClubId'], PDO::PARAM_INT); $query->execute(); $result = $query->fetch(PDO::FETCH_ASSOC); return $result; } //get service details based on id function getServiceById($serviceId) { $query = $this->conn->prepare('SELECT service_id,sedan_amount,muv_amount,suv_amount,hb_amount FROM services WHERE service_id = :service_id'); $query->bindParam(':service_id', $serviceId, PDO::PARAM_INT); $query->execute(); $queryData = $query->fetch(PDO::FETCH_ASSOC); return $queryData; } //get secret coupon function getSecretCoupon($couponName) { $delete_status = 0; $query = 'SELECT * From coupons WHERE name =:name AND delete_status =:delete_status and cpn_type = 2'; $selectQuery = $this->conn->prepare($query); $selectQuery->bindParam(':name', $couponName, PDO::PARAM_STR); $selectQuery->bindParam(':delete_status', $delete_status, PDO::PARAM_STR); $selectQuery->execute(); $count = $selectQuery->rowCount(); $couponData = array(); if ($count > 0) { $couponData = $selectQuery->fetch(PDO::FETCH_ASSOC); } else { $couponData['status'] = 0; } return $couponData; } //add as loyal user function addAsLoyal($userId) { $sql = $this->conn->prepare('UPDATE user SET loyal_user = 1 WHERE id = :user_id'); $sql->bindParam(':user_id', $userId, PDO::PARAM_INT); $sql->execute(); return 1; } //remove as loyal user function removeAsLoyal($userId) { $sql = $this->conn->prepare('UPDATE user SET loyal_user = 0 WHERE id = :user_id'); $sql->bindParam(':user_id', $userId, PDO::PARAM_INT); $sql->execute(); return 1; } //add loyalty points function addLoyaltyPoints($userId, $points) { $sql = $this->conn->prepare('UPDATE user SET loyalty_points = loyalty_points + :points WHERE id = :user_id'); $sql->bindParam(':user_id', $userId, PDO::PARAM_INT); $sql->bindParam(':points', $points, PDO::PARAM_INT); $sql->execute(); return 1; } }