devsofttech_hms_ci4/app/Controllers/Setting/Reffer.php

200 lines
5.7 KiB
PHP

<?php
namespace App\Controllers\Setting;
use App\Controllers\BaseController;
use App\Models\RefferModel;
class Reffer extends BaseController
{
public function index(): string
{
$model = new RefferModel();
return view('Setting/Reffer/reffer_index', [
'refer_master' => $model->getAll(),
]);
}
public function create(): string
{
$model = new RefferModel();
return view('Setting/Reffer/reffer_add', [
'refer_type' => $model->getTypes(),
]);
}
public function edit(int $id): string
{
$model = new RefferModel();
return view('Setting/Reffer/reffer_edit', [
'data' => $model->getById($id),
'refer_type' => $model->getTypes(),
]);
}
public function store()
{
if (! $this->request->isAJAX()) {
return $this->response->setJSON(['insertid' => 0, 'error_text' => 'Invalid request']);
}
$rules = [
'input_name' => 'required|min_length[1]|max_length[30]',
];
if (! $this->validate($rules)) {
return $this->response->setJSON([
'insertid' => 0,
'error_text' => implode(' ', $this->validator->getErrors()),
]);
}
$user = auth()->user();
$userLabel = $user ? trim(($user->username ?? '') . '[' . ($user->id ?? '') . ']') : 'System';
$model = new RefferModel();
$data = [
'title' => $this->request->getPost('cbo_title'),
'f_name' => strtoupper((string) $this->request->getPost('input_name')),
'refer_type' => $this->request->getPost('cbo_refer_type'),
'date_of_add' => date('Y-m-d H:i:s'),
'insert_by' => $userLabel,
'phone_number' => $this->request->getPost('input_phone_number'),
'active' => 1,
];
$insertId = $model->insert($data);
return $this->response->setJSON([
'insertid' => $insertId,
'error_text' => $insertId > 0 ? '' : 'Please Check',
]);
}
public function update(int $id)
{
if (! $this->request->isAJAX()) {
return $this->response->setJSON(['update' => 0, 'error_text' => 'Invalid request']);
}
$rules = [
'input_name' => 'required|min_length[1]|max_length[30]',
];
if (! $this->validate($rules)) {
return $this->response->setJSON([
'update' => 0,
'error_text' => implode(' ', $this->validator->getErrors()),
]);
}
$user = auth()->user();
$userLabel = $user ? trim(($user->username ?? '') . '[' . ($user->id ?? '') . ']') : 'System';
$model = new RefferModel();
$data = [
'title' => $this->request->getPost('cbo_title'),
'f_name' => strtoupper((string) $this->request->getPost('input_name')),
'refer_type' => $this->request->getPost('cbo_refer_type'),
'date_of_add' => date('Y-m-d H:i:s'),
'insert_by' => $userLabel,
'phone_number' => $this->request->getPost('input_phone_number'),
'active' => 1,
];
$updated = $model->updateReffer($data, $id);
return $this->response->setJSON([
'update' => $updated ? 1 : 0,
'error_text' => $updated ? '' : 'Please Check',
]);
}
public function activate(int $id, int $active)
{
if (! $this->request->isAJAX()) {
return $this->response->setJSON(['update' => 0, 'error_text' => 'Invalid request']);
}
$model = new RefferModel();
$updated = $model->updateStatus($id, $active ? 1 : 0);
return $this->response->setJSON([
'update' => $updated ? 1 : 0,
'error_text' => $updated ? '' : 'Please Check',
]);
}
public function typeList(): string
{
$model = new RefferModel();
return view('Setting/Reffer/reffer_type_list', [
'types' => $model->getTypes(),
]);
}
public function storeType()
{
$name = trim((string) $this->request->getPost('type_desc'));
if ($name === '') {
return $this->renderTypeListWithErrors(['type_desc' => 'Type is required.']);
}
$model = new RefferModel();
$model->insertType($name);
return $this->renderTypeListWithMessage('Type added successfully.');
}
public function updateType()
{
$id = (int) $this->request->getPost('id');
$name = trim((string) $this->request->getPost('type_desc'));
if ($id <= 0 || $name === '') {
return $this->renderTypeListWithErrors(['type_desc' => 'Type is required.']);
}
$model = new RefferModel();
$model->updateType($id, $name);
return $this->renderTypeListWithMessage('Type updated successfully.');
}
public function deleteType()
{
$id = (int) $this->request->getPost('id');
if ($id <= 0) {
return $this->renderTypeListWithErrors(['type_desc' => 'Invalid type.']);
}
$model = new RefferModel();
$model->deleteType($id);
return $this->renderTypeListWithMessage('Type deleted successfully.');
}
private function renderTypeListWithMessage(string $message)
{
$model = new RefferModel();
return view('Setting/Reffer/reffer_type_list', [
'types' => $model->getTypes(),
'message' => $message,
]);
}
private function renderTypeListWithErrors(array $errors)
{
$model = new RefferModel();
return view('Setting/Reffer/reffer_type_list', [
'types' => $model->getTypes(),
'errors' => $errors,
]);
}
}