AMS_Backend/app/Controllers/Backend/StoreDiscountController.php
2025-11-06 13:41:06 +08:00

148 lines
5.0 KiB
PHP

<?php
namespace App\Controllers\Backend;
use CodeIgniter\RESTful\ResourceController;
use App\Models\StoreDiscount;
class StoreDiscountController extends ResourceController
{
public function index()
{
$storeDiscountModel = new StoreDiscount();
$data = $storeDiscountModel->findAll();
return $this->respond([
'status' => 'success',
'message' => 'Store discounts fetched successfully',
'data' => $data
], 200);
}
public function show($id = null)
{
$storeDiscountModel = new StoreDiscount();
$data = $storeDiscountModel->find($id);
return $this->respond([
'status' => 'success',
'message' => 'Store discount fetched successfully',
'data' => $data
], 200);
}
public function create()
{
$rules = [
'discount_name' => 'required|string',
'discount_type' => 'required|string',
'discount_value' => 'required|numeric',
'outlet_list' => 'required|is_array',
'menu_item_list' => 'required|is_array',
'status' => 'required|string',
];
if (!$this->validate($rules)) {
return $this->failValidationErrors($this->validator->getErrors());
}
$storeDiscountModel = new StoreDiscount();
// Insert data to database outlet_list is array and store it in JSON
$discount_name = $this->request->getVar('discount_name');
$discount_type = $this->request->getVar('discount_type');
$discount_value = $this->request->getVar('discount_value');
$outlet_list = $this->request->getVar('outlet_list');
$menu_item_list = $this->request->getVar('menu_item_list');
$status = $this->request->getVar('status');
$implode_outlet_list = implode(',', $outlet_list);
$implode_menu_item_list = implode(',', $menu_item_list);
$data = [
'discount_name' => $discount_name,
'discount_type' => $discount_type,
'discount_value' => $discount_value,
'outlet_list' => $implode_outlet_list,
'menu_item_list' => $implode_menu_item_list,
'status' => $status,
'created_at' => date('Y-m-d H:i:s'),
'updated_at' => date('Y-m-d H:i:s'),
];
$storeDiscountModel->insert($data);
return $this->respond([
'status' => 'success',
'message' => 'Store discount created successfully',
'data' => $data
], 200);
}
public function update($id = null)
{
$storeDiscountModel = new StoreDiscount();
$storeDiscount = $storeDiscountModel->find($id);
if(!$storeDiscount) {
return $this->respond([
'status' => 'error',
'message' => 'Store discount not found',
'data' => null
], 404);
}
$rules = [
'discount_name' => 'required|string',
'discount_type' => 'required|string',
'discount_value' => 'required|numeric',
'outlet_list' => 'required|is_array',
'menu_item_list' => 'required|is_array',
'status' => 'required|string',
];
if (!$this->validate($rules)) {
return $this->failValidationErrors($this->validator->getErrors());
}
$discount_name = $this->request->getVar('discount_name');
$discount_type = $this->request->getVar('discount_type');
$discount_value = $this->request->getVar('discount_value');
$outlet_list = $this->request->getVar('outlet_list');
$menu_item_list = $this->request->getVar('menu_item_list');
$status = $this->request->getVar('status');
$implode_outlet_list = implode(',', $outlet_list);
$implode_menu_item_list = implode(',', $menu_item_list);
$data = [
'discount_name' => $discount_name,
'discount_type' => $discount_type,
'discount_value' => $discount_value,
'outlet_list' => $implode_outlet_list,
'menu_item_list' => $implode_menu_item_list,
'status' => $status,
'updated_at' => date('Y-m-d H:i:s'),
];
$storeDiscountModel->update($id, $data);
return $this->respond([
'status' => 'success',
'message' => 'Store discount updated successfully',
'data' => $data
], 200);
}
public function delete($id = null){
$storeDiscountModel = new StoreDiscount();
$storeDiscount = $storeDiscountModel->find($id);
if(!$storeDiscount) {
return $this->respond([
'status' => 'error',
'message' => 'Store discount not found',
'data' => null
], 404);
}
$storeDiscountModel->delete($id);
return $this->respond([
'status' => 'success',
'message' => 'Store discount deleted successfully',
'data' => null
], 200);
}
}