EVOLUTION-NINJA
Edit File: Repayment.php
<?php namespace App\Controllers; class Repayment extends BaseController{ public function __construct() { date_default_timezone_set('Asia/Kolkata'); $this->db = \Config\Database::connect(); } public function my_repayment_pins_request(){ $promoterId = session()->get('id'); // $stockist = $this->request->getPost('pin_stockist'); $no_of_pins = $this->request->getPost('no_of_pin'); $scheme = $this->request->getPost('scheme'); $payment_status = $this->request->getPost('payment_status'); $remarks = $this->request->getPost('remarks'); $requestId = "RI" . str_pad(rand(10000000, 99999999), 8, '0', STR_PAD_LEFT); $builder=$this->db->table('promoter_repayment_requests'); $data=[ // "stockist"=>$stockist, "scheme"=>$scheme, "promoter_id"=>$promoterId, "request_id"=>$requestId, "total_slots"=>$no_of_pins, "payment_status"=>$payment_status, "remarks"=>$remarks, "created_at" => date('Y-m-d H:i:s'), 'status' => 'Pending' ]; if( $builder->insert($data)){ return $this->response->setJSON(['result' => 1, 'message' => 'insert successfully']); } else{ return $this->response->setJSON(['result' => 1, 'message' => 'Failed to add']); } } public function repayment_pin_request_list(){ $promoterId = session()->get('id'); try { $builder = $this->db->table('promoter_repayment_requests'); $builder->select('promoter_repayment_requests.*,schemes.id,schemes.scheme'); $builder->join('schemes','schemes.id =promoter_repayment_requests.scheme','left'); $builder->where('promoter_repayment_requests.promoter_id',$promoterId ); $query = $builder->get(); $data = $query->getResult(); // print_r($data);die(); if ($data) { return $this->response->setJSON($data); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No data available']); } } catch (\Exception $e) { return $this->response->setJSON(['result' => 0, 'message' => 'Error: ' . $e->getMessage()]); } } public function Repayment_Pending_Pins() { $request = $this->request; $builder = $this->db->table('promoter_repayment_requests'); $builder->select('promoter_repayment_requests.*,user.id as user_id ,user.promoter_id,user.name as name'); $builder->join('user','user.id = promoter_repayment_requests.promoter_id','left'); $builder->where('status', 'pending'); $totalUsers = $builder->countAllResults(false); $users = $builder->get()->getResultArray(); $data = [ 'draw' => $request->getVar('draw'), 'recordsTotal' => $totalUsers, 'recordsFiltered' => $totalUsers, 'data' => $users ]; return $this->response->setJSON($data); } public function Repaymentapprove() { $id = $this->request->getPost('id'); if (!$id) { return $this->response->setJSON(['result' => 0, 'message' => 'Invalid input provided.']); } $data = [ 'status' => 'approved', ]; $builder = $this->db->table('promoter_repayment_requests'); $builder->where('id', $id); $builder->update($data); return $this->response->setJSON(['result' => 1, 'message' => 'approved successfully!']); } public function delete_repayment_request(){ $id = $this->request->getPost('id'); if($id){ $builder = $this->db->table('promoter_repayment_requests'); $builder->where('id', $id); $builder->delete(); return $this->response->setJSON(['result' => 1, 'message' =>'deleted successfully']); } else{ return $this->response->setJSON(['result' => 0, 'message' =>'Failed to Delete']); } } public function fetch_users(){ $builder = $this->db->table('Customers'); $builder->select('id ,user_id'); $query = $builder->get(); $users= $query->getResultArray(); if ($users) { return $this->response->setJSON($users); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No customers found']); } } public function payment() { $promoterId = session()->get('id'); $scheme = $this->request->getPost('scheme'); $user_id = $this->request->getPost('user_id'); // print_r($user_id);die(); $amount = $this->request->getPost('amount'); $date = $this->request->getPost('date'); $remarks = $this->request->getPost('remarks'); // Fetch the repayment request for the promoter (slots) $request = $this->db->table('promoter_repayment_requests') ->where('promoter_id', $promoterId) ->where('status', 'Approved') ->where('used_slots < total_slots') // Ensure slots are still available ->orderBy('created_at', 'ASC') ->get() ->getRow(); if (!$request) { return $this->response->setJSON(['result' => 0, 'message' => 'No available slot. Please contact the admin.']); } $requestId = $request->request_id; $payments = $this->db->table('payments') ->where('user_id', $user_id) ->orderBy('payment_date', 'ASC') ->get() ->getResult(); $totalInstallments = 12; $monthsPaid = count($payments); $remainingMonths = $totalInstallments - $monthsPaid; $startDate = new \DateTime($request->created_at); $nextDueMonth = $startDate->modify('+' . $monthsPaid . ' months')->format('Y-m-d'); $builder = $this->db->table('payments'); $data = [ 'promoter_id' => $promoterId, 'scheme' => $scheme, 'amount' => $amount, 'payment_date' => $date, 'remarks' => $remarks, 'user_id' => $user_id, 'created_at' => date('Y-m-d H:i:s'), ]; if ($builder->insert($data)) { $this->db->table('promoter_repayment_requests') ->where('id', $request->id) ->update(['used_slots' => $request->used_slots + 1]); return $this->response->setJSON([ 'result' => 1, 'message' => "Paid successfully", 'slots_remaining' => $request->total_slots - ($request->used_slots + 1), 'months_paid' => $monthsPaid + 1, 'remaining_months' => $remainingMonths - 1, 'next_due_month' => $nextDueMonth ]); } else { return $this->response->setJSON([ 'result' => 0, 'message' => 'Failed to add payment' ]); } } public function payment_details() { $promoterId = session()->get('id'); // print_r($promoterId);die(); try { $userId = $this->request->getVar('user_id'); if (!$userId) { return $this->response->setJSON(['result' => 0, 'message' => 'User ID is required']); } $customerBuilder = $this->db->table('Customers'); $customerBuilder->select('id'); $customerBuilder->where('user_id', $userId); $customerQuery = $customerBuilder->get(); $customerResult = $customerQuery->getRow(); // print_r($promoterId);die(); // print_r($customerResult);die(); if (!$customerResult) { return $this->response->setJSON(['result' => 0, 'message' => 'No customer found with the given user ID']); } $customerId = $customerResult->id; $paymentBuilder = $this->db->table('payments'); $paymentBuilder->select(' payments.*, schemes.id as scheme_id, Customers.id as customer_id, Customers.name as customer_name, Customers.user_id, schemes.scheme as scheme_name '); $paymentBuilder->join('schemes', 'schemes.id = payments.scheme', 'left'); $paymentBuilder->join('Customers', 'Customers.user_id = payments.user_id', 'left'); $paymentBuilder->where('payments.user_id', $userId); $paymentQuery = $paymentBuilder->get(); $paymentData = $paymentQuery->getResult(); if ($paymentData) { return $this->response->setJSON(['data'=>$paymentData]); } else { return $this->response->setJSON(['result' => 0, 'message' => 'No payment data available']); } } catch (\Exception $e) { log_message('error', 'Error in payment_details: ' . $e->getMessage()); return $this->response->setJSON(['result' => 0, 'message' => 'Error: ' . $e->getMessage()]); } } public function getPromoters() { $query = $this->request->getGet('query'); $users = $this->db->table('user') ->select('id,name,') ->like('name', $query) ->get() ->getResultArray(); return $this->response->setContentType('application/json')->setJSON($users); } public function getUsers() { $query = $this->request->getGet('query'); $users = $this->db->table('Customers') ->select('id,name,user_id') ->like('name', $query) ->get() ->getResultArray(); return $this->response->setContentType('application/json')->setJSON($users); } public function view_customer_payment_details($id){ try{ $paymentBuilder = $this->db->table('payments'); $paymentBuilder->select(' payments.*, schemes.id as scheme_id, Customers.id as customer_id, Customers.name as customer_name, Customers.user_id, schemes.scheme as scheme_name '); $paymentBuilder->join('schemes', 'schemes.id = payments.scheme', 'left'); $paymentBuilder->join('Customers', 'Customers.id = payments.user_id', 'left'); $paymentBuilder->where('payments.user_id', $id); $paymentQuery = $paymentBuilder->get(); $paymentData = $paymentQuery->getResult(); if ($paymentData) { return view('customer/view_customer_payment_details'); } else { // return $this->response->setJSON(['result' => 0, 'message' => 'No payment data available']); } } catch (\Exception $e) { log_message('error', 'Error in payment_details: ' . $e->getMessage()); return $this->response->setJSON(['result' => 0, 'message' => 'Error: ' . $e->getMessage()]); } } }?>