table = 't_driver'; $this->primaryKey = 'driver_id'; $this->allowedFields = ['driver_id', 'driver_name', 'driver_mobile','created_on','created_by','updated_on','updated_by','isactive']; return $this; } public function useDriverAttendanceTable() { $this->table = 't_driver_attendance'; $this->primaryKey = 'driver_attendance_id'; $this->allowedFields = ['driver_attendance_id','date','driver_id','invoice_number','vehicle_number','load_type','salary_amount','food_amount','created_on','created_by','updated_on','updated_by','isactive']; return $this; } public function getDriverList() { if (empty($this->allowedFields)) { return []; } $fields = implode(', ', array_map(function($field) { return $this->table . '.' . $field; }, $this->allowedFields)); $selectFields = "CONCAT_WS(' ', t_employee_details.FirstName, t_employee_details.LastName) AS FullName, t_employee_details.IsActive as employee_isactive, " . $fields; return $this->select($selectFields) ->join('tbl_users', 'tbl_users.userId = ' . $this->table . '.created_by', 'left') ->join('t_employee_details', 'tbl_users.EmpID = t_employee_details.EmpID', 'left') ->findAll(); } public function getDriverAttendanceList($driver_id,$from,$to){ if (empty($this->allowedFields)) { return []; } $fields = implode(', ', array_map(function($field) { return $this->table . '.' . $field; }, $this->allowedFields)); $selectFields = "CONCAT_WS(' ', t_employee_details.FirstName, t_employee_details.LastName) AS FullName, t_employee_details.IsActive as employee_isactive, t_driver.driver_name,ip_clients.client_name as customer,ip_invoices.received_qty as quantity," . $fields; return $this->select($selectFields) ->join('t_driver', 't_driver.driver_id = ' . $this->table . '.driver_id', 'left') ->join('tbl_users', 'tbl_users.userId = ' . $this->table . '.created_by', 'left') ->join('t_employee_details', 'tbl_users.EmpID = t_employee_details.EmpID', 'left') ->join('ip_invoices', 'ip_invoices.invoice_number = ' . $this->table . '.invoice_number', 'left') ->join('ip_clients', 'ip_clients.client_id = ip_invoices.client_id', 'left') ->where($this->table.'.date BETWEEN "'.$from.'" AND "'.$to.'"') ->where($this->table . '.driver_id', $driver_id) ->findAll(); } function getInvoiceInfo() { $builder = $this->db->table('ip_invoices') ->select('invoice_number,invoice_id'); $query = $builder->get(); return $query->getResult(); } function getDriverName($id) { $builder = $this->db->table('t_driver') ->select('driver_name') ->where('driver_id', $id); $query = $builder->get()->getRow(); $driver_name = $query ? $query->driver_name : null; return $driver_name; } function gatheredCustAndQty($invoice){ $builder = $this->db->table('ip_invoices') ->select('invoice_number,received_qty as quantity,ip_clients.client_name as customer') ->join('ip_clients', 'ip_clients.client_id = ip_invoices.client_id', 'left') ->where('invoice_number', $invoice); $query = $builder->get(); return $query->getRowArray() ?: []; } } ?>