134 lines
3.5 KiB
PHP
Executable File
134 lines
3.5 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Modules\Admin\app\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Traits\HasFilterRequest;
|
|
use App\Traits\HasOrderByRequest;
|
|
use App\Traits\HasSearchRequest;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Response;
|
|
use Modules\Admin\app\Http\Requests\DiscountRequest;
|
|
use Modules\Admin\app\Models\Discount;
|
|
|
|
class DiscountController extends Controller
|
|
{
|
|
use HasOrderByRequest;
|
|
use HasFilterRequest;
|
|
use HasSearchRequest;
|
|
|
|
public function get(DiscountRequest $request)
|
|
{
|
|
$discount = new Discount;
|
|
|
|
// Order by
|
|
$this->orderByRequest($discount, $request);
|
|
|
|
// Filter
|
|
$this->filterRequest(
|
|
builder: $discount,
|
|
request: $request,
|
|
filterKeys: [
|
|
'active_date' => self::F_THAN_EQ_DATETIME,
|
|
'expiry' => self::F_LESS_EQ_DATETIME,
|
|
'date_used' => self::F_IN_DATETIME,
|
|
'code' => self::F_TEXT,
|
|
'value' => self::F_TEXT,
|
|
'email' => self::F_TEXT,
|
|
'discount_type_id' => self::F_NOT_CONTAIN,
|
|
'status' => self::F_BOOLEAN,
|
|
]
|
|
);
|
|
|
|
$this->searchRequest(
|
|
builder: $discount,
|
|
value: $request->get('search'),
|
|
fields: [
|
|
'code',
|
|
'email',
|
|
'value'
|
|
]
|
|
);
|
|
|
|
$responseData = array_merge(
|
|
$discount->paginate($request->get('per_page'))->toArray(),
|
|
['status' => true]
|
|
);
|
|
|
|
return response()->json($responseData);
|
|
}
|
|
|
|
public function create(DiscountRequest $request)
|
|
{
|
|
$payload = $request->all();
|
|
|
|
$discount = Discount::createWithDefault($payload);
|
|
return response()->json([
|
|
'data' => $discount,
|
|
'status' => true
|
|
]);
|
|
}
|
|
|
|
public function update(DiscountRequest $request)
|
|
{
|
|
$id = $request->get('id');
|
|
|
|
$discount = Discount::find($id);
|
|
$payload = $request->all();
|
|
|
|
if ($discount) {
|
|
$discount->update($payload);
|
|
}
|
|
return response()->json([
|
|
'data' => $discount,
|
|
'status' => true
|
|
]);
|
|
}
|
|
|
|
public function delete(DiscountRequest $request)
|
|
{
|
|
$id = $request->get('id');
|
|
|
|
Discount::destroy($id);
|
|
return response()->json([
|
|
'status' => true
|
|
]);
|
|
}
|
|
|
|
// Delete multiple discounts
|
|
public function deletes(DiscountRequest $request)
|
|
{
|
|
$discounts = $request->get('discounts');
|
|
$ids = collect($discounts)->pluck('id');
|
|
Discount::whereIn('id', $ids)->delete();
|
|
return response()->json([
|
|
'data' => $ids,
|
|
'status' => true
|
|
]);
|
|
}
|
|
|
|
// Update multiple discounts
|
|
public function updates(DiscountRequest $request)
|
|
{
|
|
$discounts = $request->get('discounts');
|
|
$ids = collect($discounts)->pluck('id');
|
|
|
|
foreach ($discounts as $discountRequest) {
|
|
// convert to object|array to array
|
|
$discountRequest = collect($discountRequest)->toArray();
|
|
// handle array
|
|
$discount = Discount::find($discountRequest['id']);
|
|
if ($discount) {
|
|
// exclude id field
|
|
unset($discount['id']);
|
|
|
|
$discount->update($discountRequest);
|
|
}
|
|
}
|
|
return response()->json([
|
|
'data' => Discount::whereIn('id', $ids)->get(),
|
|
'status' => true
|
|
]);
|
|
}
|
|
}
|