<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use App\Http\Resources\OrderResource;
use App\Http\Resources\OrderDetailResource;
use App\Order;
use Validator;

class OrderController extends Controller
{
    const ITEM_PER_PAGE = 25;
    private $_user = null;

    public function __construct()
    {
        $this->_user = auth('api')->user();
    }

    public function index(Request $request)
    {
        $searchParams = $request->all();
        $limit = Arr::get($searchParams, 'limit', static::ITEM_PER_PAGE);
        $keyword = Arr::get($searchParams, 'keyword', '');
        $status = Arr::get($searchParams, 'status', '');
        $list = Order::select('*')->where('is_deleted', false)->where('user_id', $this->_user->id);

        if (!empty($keyword)) {
            $list->where('code', 'LIKE', '%' . $keyword . '%');
        }

        if (!empty($status)) {
            $list->where('status', $status);
        }

        $list->orderBy('id', 'DESC');

        return OrderResource::collection($list->paginate($limit));
    }

    public function show($id = 0)
    {
        $order = Order::select('*')
            ->where('is_deleted', false)
            ->where('user_id', $this->_user->id)
            ->where('id', $id)
            ->first();

        if (!isset($order)) return response()->json(['status' => 'error', 'data' => null, 'message' => 'Order is invalid' ], 200);

        return new OrderDetailResource($order);
    }
}
