StaffModel = new StaffModel(); $this->ManagerIncentiveFileModel = new ManagerIncentiveFileModel(); } // List of all Staffs public function staffList() { try{ $id = $this->request->getGet('manager_id'); $data = $this->StaffModel->select('partner_staff.* , R.role') ->join('partner_role_master R', 'R.id = partner_staff.role_id', 'left') ->where('partner_staff.manager_id' , $id ) ->findAll(); return $this->respond(['status' => 'success', 'code' => 200, 'data' => $data], 200); } catch (\Exception $e) { return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500); } } // Find a Staff public function findStaff() { try{ $id = $this->request->getGet('id'); $record = $this->StaffModel->find($id); if (!$record) { return $this->respond(['status' => 'failed', 'code' => 404, 'data' => []], 200); } return $this->respond(['status' => 'success', 'code' => 200, 'data' => $record], 200); } catch (\Exception $e) { return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500); } } // CREATE Staff public function createStaff() { try{ $data = $this->request->getJSON(true); $insertData = [ 'name' => $data['name'], 'email' => $data['email'], 'mobile' => $data['mobile'], 'role_id' => $data['role_id'], 'manager_id' => $data['manager_id'], 'emp_id' => $data['emp_id'], 'created_by' => $data['created_by'] ]; $this->StaffModel->insert($insertData); return $this->respond(['status' => 'success', 'code' => 200, 'data' => []], 200); } catch (\Exception $e) { return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500); } } // UPDATE Staff public function updateStaff() { try{ $data = $this->request->getJSON(true); print_r($data); if (!isset($data['id'])) { return $this->respond(['status' => 'failed', 'code' => 200, 'data' => 'ID Required'], 200); } $id = $data['id']; // check if Staff exists $Staff = $this->StaffModel->find($id); if (!$Staff) { return $this->respond(['status' => 'failed', 'code' => 200, 'data' => 'Date Not Found'], 200); } $updateData = [ 'name' => $data['name'], 'email' => $data['email'], 'mobile' => $data['mobile'], 'role_id' => $data['role_id'] ?? null, 'emp_id' => $data['emp_id'] ?? null, 'updated_by' => $data['updated_by'] ?? null, ]; $this->StaffModel->update($id, $updateData); return $this->respond(['status' => 'success', 'code' => 200, 'data' => []], 200); } catch (\Exception $e) { return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500); } } // ACTIVATE / DEACTIVATE Staff public function changeStaffStatus() { try { $data = $this->request->getJSON(true); // validate inputs if (!isset($data['id']) || !isset($data['is_active'])) { return $this->respond(['status' => 'failed', 'code' => 200,'data' => 'ID and Status are required'], 200); } $id = $data['id']; $is_active = (int) $data['is_active']; // 0 or 1 $status = ($is_active == 1) ? 0 : 1; // check if Staff exists $Staff = $this->StaffModel->find($id); if (!$Staff) { return $this->respond(['status' => 'failed','code' => 200, 'data' => 'Staff not found'], 200); } // update status $this->StaffModel->update($id, ['is_active' => $status]); return $this->respond([ 'status' => 'success', 'code' => 200,'data' => "Staff status updated"], 200); } catch (\Exception $e) { return $this->respond(['status' => 'failed','code' => 500,'data' => $e->getMessage()], 500); } } // List of all manager incentive files public function managerIncentiveFileList() { try{ $manager_id = $this->request->getGet('manager_id'); $data = $this->ManagerIncentiveFileModel->where('manager_id',$manager_id)->where('is_active',1)->findAll(); return $this->respond(['status' => 'success', 'code' => 200, 'data' => $data], 200); } catch (\Exception $e) { return $this->respond(['status' => 'failed', 'code' => 500, 'data' => $e->getMessage()], 500); } } // Download manager incentive file (proxy to external app) public function downloadManagerIncentiveFile() { try { $id = $this->request->getGet('id'); // External API URL $url = "https://venbait.in/nhance/dev/user/download-incentive-file/" . urlencode($id); // Use CURL request to fetch the file $client = \Config\Services::curlrequest(); $response = $client->get($url); if ($response->getStatusCode() === 200) { // Pass the file contents back as download return $this->response ->setHeader('Content-Type', $response->getHeaderLine('Content-Type')) ->setHeader('Content-Disposition', 'attachment; id="' . basename($id) . '"') ->setBody($response->getBody()); } else { return $this->respond([ 'status' => 'failed', 'code' => $response->getStatusCode(), 'message' => 'Unable to fetch file from source' ], $response->getStatusCode()); } } catch (\Exception $e) { return $this->respond(['status' => 'failed', 'code' => 500,'data' => $e->getMessage()], 500); } } }