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
 | 
						|
        ]);
 | 
						|
    }
 | 
						|
}
 |