EVOLUTION-NINJA
Edit File: Lead.php
<?php namespace App\Controllers; use App\Models\LeadsModel; use App\Models\FollowUpModel; use App\Models\ConvertModel; use CodeIgniter\API\ResponseTrait; use CodeIgniter\HTTP\ResponseInterface; class Lead extends BaseController { use ResponseTrait; public function leads(){ return view('dashboard/lead'); } public function lead_form(){ return view('dashboard/lead_form'); } public function fetchLeads() { $leadsModel = new LeadsModel(); $leads = $leadsModel->findAll(); $leads = $leadsModel->getLeads(); $modifiedLeads = []; foreach ($leads as $lead) { $dob = isset($lead['DOB']) ? $lead['DOB'] : null; $date = isset($lead['Date']) ? $lead['Date'] : null; $phone = isset($lead['mobile_no']) ? $lead['mobile_no'] : null; $modifiedLeads[] = [ 'id' => $lead['id'], 'first_name' => $lead['first_name'], 'last_name' => $lead['last_name'], 'email' => $lead['email'], 'dob' => $dob, 'date' => $date, 'phone' => $phone, 'address' => $lead['address'], 'city' => $lead['city'], 'country' => $lead['country'], 'course_offered' => $lead['course_offered'], 'qualification' => $lead['qualification'], 'counselor_name' => $lead['counselor_name'], 'gender' => $lead['gender'], 'source' => $lead['source'], 'profession' => $lead['profession'], 'status' => $lead['status'], 'company_name' => $lead['company_name'], 'remarks' => $lead['remarks'], 'converted' => isset($lead['converted']) ? $lead['converted'] : null, ]; } $data = ['rows' => $modifiedLeads]; return $this->response->setJSON($data); } // public function fetchGtracLeads() // { // $db = \Config\Database::connect('gtracDB'); // 👈 use secondary connection // $builder = $db->table('contact_form'); // or 'leads' table // $leads = $builder->get()->getResult(); // fetch all // return $this->response->setJSON($leads); // } public function submit() { $model = new LeadsModel(); $file = $this->request->getFile('file'); // Check if a file was uploaded if ($file && $file->isValid() && !$file->hasMoved()) { $newName = $file->getRandomName(); $file->move('public/assets/lead_profileImg', $newName); } $data = [ 'first_name' => $this->request->getPost('first_name'), 'last_name' => $this->request->getPost('last_name'), 'email' => $this->request->getPost('email'), 'DOB' => $this->request->getPost('DOB'), 'Date' => $this->request->getPost('Date'), 'mobile_no' => $this->request->getPost('mobile_no'), 'address' => $this->request->getPost('address'), 'city' => $this->request->getPost('city'), 'course_offered' => $this->request->getPost('course_offered'), 'qualification' => $this->request->getPost('qualification'), 'country' => $this->request->getPost('country'), 'counselor_name' => $this->request->getPost('counselor_name'), 'gender' => $this->request->getPost('gender'), 'source' => $this->request->getPost('source'), 'profession' => $this->request->getPost('profession'), 'status' => $this->request->getPost('status'), 'company_name' => $this->request->getPost('company_name'), 'remarks' => $this->request->getPost('remarks'), 'profile_img' => isset($newName) ? $newName : null // Store the file name in the database ]; if ($model->insert($data)) { return $this->response->setJSON(['status' => 'success', 'message' => 'Data inserted successfully!']); } else { return $this->response->setJSON(['status' => 'error', 'message' => 'Error inserting data']); } } public function Lead_edit($leadId) { $leadModel = new LeadsModel(); $lead = $leadModel->find($leadId); return $this->response->setJSON($lead); } public function Edit_Form() { $leadId = $this->request->getVar('leadId'); $leadModel = new LeadsModel(); $leadData = $leadModel->find($leadId); $profileImgPath = !empty($leadData['profile_img']) ? $leadData['profile_img'] : ''; return view('dashboard/edit_form', ['leadData' => $leadData, 'profileImgPath' => $profileImgPath]); } public function get_lead_details() { $request = service('request'); $leadId = $request->getVar('leadId'); $leadModel = new LeadsModel(); $leadDetails = $leadModel->find($leadId); if ($leadDetails) { return $this->response->setJSON($leadDetails); } else { return $this->response->setStatusCode(404)->setBody('Lead details not found'); } } // public function updateLead() // { // $leadId = $this->request->getPost('leadId'); // $data = [ // 'first_name' => $this->request->getPost('first_name'), // 'last_name' => $this->request->getPost('last_name'), // 'Date' => $this->request->getPost('Date'), // 'DOB' => $this->request->getPost('DOB'), // 'email' => $this->request->getPost('email'), // 'gender' => $this->request->getPost('gender'), // 'mobile_no' => $this->request->getPost('mobile_no'), // 'qualification' => $this->request->getPost('qualification'), // 'source' => $this->request->getPost('source'), // 'address' => $this->request->getPost('address'), // 'profession' => $this->request->getPost('profession'), // 'city' => $this->request->getPost('city'), // 'country' => $this->request->getPost('country'), // 'status' => $this->request->getPost('status'), // 'course_offered' => $this->request->getPost('course_offered'), // 'counselor_name' => $this->request->getPost('counselor_name'), // 'company_name' => $this->request->getPost('company_name'), // 'remarks' => $this->request->getPost('remarks') // ]; // $leadModel = new LeadsModel(); // $update_status = $leadModel->update_student($leadId, $data); // if ($update_status) { // return $this->respond(['status' => 'success', 'message' => 'Student data updated successfully']); // } else { // return $this->fail('Failed to update student data'); // } // } public function updateLead() { $leadId = $this->request->getPost('leadId'); $model = new LeadsModel(); $file = $this->request->getFile('file'); if ($file && $file->isValid() && !$file->hasMoved()) { $newName = $file->getRandomName(); $file->move('public/assets/lead_profileImg', $newName); } $data = [ 'first_name' => $this->request->getPost('first_name'), 'last_name' => $this->request->getPost('last_name'), 'Date' => $this->request->getPost('Date'), 'DOB' => $this->request->getPost('DOB'), 'email' => $this->request->getPost('email'), 'gender' => $this->request->getPost('gender'), 'mobile_no' => $this->request->getPost('mobile_no'), 'qualification' => $this->request->getPost('qualification'), 'source' => $this->request->getPost('source'), 'address' => $this->request->getPost('address'), 'profession' => $this->request->getPost('profession'), 'city' => $this->request->getPost('city'), 'country' => $this->request->getPost('country'), 'status' => $this->request->getPost('status'), 'course_offered' => $this->request->getPost('course_offered'), 'counselor_name' => $this->request->getPost('counselor_name'), 'company_name' => $this->request->getPost('company_name'), 'remarks' => $this->request->getPost('remarks') ]; if (isset($newName)) { $data['profile_img'] = $newName; } $update_status = $model->update_student($leadId, $data); if ($update_status) { return $this->respond(['status' => 'success', 'message' => 'Lead data updated successfully']); } else { return $this->fail('Failed to update lead data'); } } public function delete_lead($leadId) { $leadModel = new LeadsModel(); $deleted = $leadModel->delete($leadId); if ($deleted) { return $this->response->setJSON(['success' => true, 'message' => 'Lead deleted successfully.']); } else { return $this->response->setJSON(['success' => false, 'message' => 'Failed to delete lead.'])->setStatusCode(500); } } public function convert_students() { $request = \Config\Services::request(); $leadId = $request->getPost('leadId'); $firstName = $request->getPost('first_name'); $lastName = $request->getPost('last_name'); $email = $request->getPost('email'); $dob = $request->getPost('DOB'); $date = $request->getPost('Date'); $mobileNo = $request->getPost('mobile_no'); $address = $request->getPost('address'); $city = $request->getPost('city'); $courseOffered = $request->getPost('course_offered'); $qualification = $request->getPost('qualification'); $country = $request->getPost('country'); $counselorName = $request->getPost('counselor_name'); $gender = $request->getPost('gender'); $source = $request->getPost('source'); $profession = $request->getPost('profession'); $status = $request->getPost('status'); $companyName = $request->getPost('company_name'); $remarks = $request->getPost('remarks'); $feeAmount = $request->getPost('fee_amount'); // $discountPercentage = $request->getPost('discountPercentage'); $discountedAmount = $request->getPost('total_fees'); $convertedBy = $request->getPost('converted_by'); $profileImg=$request->getPost('profile_img'); $model = new ConvertModel(); $admissionNo = 'GTR'; $lastAdmissionNo = $model->getLastAdmissionNumber(); $admissionNo .= str_pad(($lastAdmissionNo + 1), 3, '0', STR_PAD_LEFT); $convertedDate = date('Y-m-d'); $data = [ 'admission_no' => $admissionNo, 'leads_id' => $leadId, 'first_name' => $firstName, 'last_name' => $lastName, 'email' => $email, 'DOB' => $dob, 'Date' => $date, 'mobile_no' => $mobileNo, 'address' => $address, 'city' => $city, 'course_offered' => $courseOffered, 'qualification' => $qualification, 'country' => $country, 'counselor_name' => $counselorName, 'gender' => $gender, 'source' => $source, 'profession' => $profession, 'status' => $status, 'company_name' => $companyName, 'remarks' => $remarks, // 'paid_fees' => $feeAmount, // 'discount_percentage' => $discountPercentage, 'total_fees' => $discountedAmount, 'converted_by' => $convertedBy, 'converted_date' => $convertedDate, 'profile_img'=>$profileImg ]; // $model->insert($data); $leadModel = new LeadsModel(); $leadModel->update([$leadModel->primaryKey => $leadId], ['converted' => 1]); return $this->respond(['success' => true, 'message' => 'Form submitted successfully']); } public function followUp_form() { $id=$this->request->getVar('id'); $data['id'] = $id; return view('dashboard/followUp_form', $data); } public function getFollowUp() { $id = $this->request->getVar('id'); $followUpModel = new FollowUpModel(); $data = $followUpModel->getFollowUpData($id); $gridData = []; foreach ($data as $row) { $gridData[] = [ 'id' => $row['id'] ?? null, 'follow_up_remarks' => $row['follow_up_remarks'] ?? '', 'follow_by' => $row['follow_by'] ?? '', 'today_date' => $row['today_date'] ?? '', 'today_time' => $row['today_time'] ?? '', 'next_date' => $row['next_date'] ?? '', ]; } return $this->response->setJSON($gridData); } public function getFollowUpData($id) { $builder = $this->db->table($this->table); $builder->where('leads_id', $id); $data = $builder->get()->getResultArray(); return $data; } public function followup_submit() { $model = new FollowUpModel(); $leadsId = $this->request->getPost('leads_id'); $followUpRemarks = $this->request->getPost('follow_up_remarks'); $followBy = $this->request->getPost('follow_by'); $todayDate = $this->request->getPost('date'); $todayTime = $this->request->getPost('time'); $nextDate = $this ->request ->getPost('nextdate'); if (is_null($leadsId)) { return $this->response->setJSON([ 'status' => 'error', 'message' => 'Leads ID cannot be null.', 'closeForm' => false, ]); } $data = [ 'leads_id' => $leadsId, 'follow_up_remarks' => $followUpRemarks, 'follow_by' => $followBy, 'today_date' => $todayDate, 'today_time' => $todayTime, 'next_date' => $nextDate , ]; $result = $model->insert($data); if ($result !== false) { $response = [ 'status' => 'success', 'message' => 'Follow-up added successfully.', 'closeForm' => true, ]; } else { $response = [ 'status' => 'error', 'message' => 'Failed to add follow-up.', 'closeForm' => false, ]; } return $this->response->setJSON($response); } public function delete_followup() { $id = $this->request->getPost('id'); // echo $id;die(); $followupModel = new FollowupModel(); if ($followupModel->delete($id)) { return $this->response->setJSON(['success' => true]); } else { return $this->response->setJSON(['success' => false]); } } public function fetchFollowUpData() { $id = $this->request->getGet('id'); // var_dump($id); $model = new FollowUpModel(); $data = $model->getFollowUpDatafollow($id); // $db = \Config\Database::connect(); // $lastQuery = $db->getLastQuery(); // echo $lastQuery; if(!empty($data)){ return $this->response->setJSON($data[0]); }else{ echo 'no data'; } } public function updateFollowup() { if ($this->request->isAJAX()) { $followupModel = new FollowUpModel(); $updateFollowUpId = $this->request->getPost('updateFollowUpId'); $followUpRemarks = $this->request->getPost('follow_up_remarks'); $followedBy = $this->request->getPost('follow_by'); $todayDate = $this->request->getPost('tdate'); $todayTime = $this->request->getPost('timepm'); $nextDate = $this->request->getPost('ffnextdate'); // Set default values for date and time if empty if (empty($todayDate)) { $todayDate = date('Y-m-d'); } if (empty($todayTime)) { $todayTime = date('H:i:s'); } $data = [ 'follow_up_remarks' => $followUpRemarks, 'follow_by' => $followedBy, 'today_date' => $todayDate, 'today_time' => $todayTime, 'next_date' => $nextDate, ]; if ($followupModel->updateFollowup($updateFollowUpId, $data)) { $response = [ 'status' => 'success', 'message' => 'Follow-up details updated successfully!' ]; } else { $response = [ 'status' => 'error', 'message' => 'Failed to update follow-up details.' ]; } return $this->response->setJSON($response); } else { return $this->response->setStatusCode(ResponseInterface::HTTP_NOT_FOUND); } } public function getFollowUpReport() { $db = \Config\Database::connect(); $query = $db->table('follow_up') ->select('id, follow_up_remarks, follow_by, today_date, today_time, next_date') ->get(); $data = $query->getResultArray(); return $this->response->setJSON($data); } public function getConvertDetails() { $request = $this->request; $method = $request->getMethod(); if ($method == 'GET') { $leadId = $request->getGet('id'); if (!isset($leadId) || empty($leadId)) { return $this->response->setJSON(['error' => 'Lead ID is missing or empty'], 400); } $leadModel = new LeadsModel(); $lead = $leadModel->find($leadId); if ($lead) { return $this->response->setJSON($lead); } else { return $this->response->setJSON(['error' => 'Lead not found'], 404); } } else { return $this->response->setJSON(['error' => 'Invalid request method: ' . $method], 405); } } }