<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use App\Http\Resources\UserPaymentHistoryResource;
use App\UserPaymentHistory;
use App\User;
use Validator;

class PaymentController extends Controller
{
    const ITEM_PER_PAGE = 20;
    private $_user;

    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);
        $list = UserPaymentHistory::where('user_id', $this->_user->id)->orderBy('id', 'DESC');

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

    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'bank_name'           => [ 'required' ],
            'bank_code'           => [ 'required' ],
            'bank_branch_name'    => [ 'required' ],
            'bank_branch_code'    => [ 'required' ],
            'bank_account_type'   => [ 'required' ],
            'bank_account_number' => [ 'required' ],
            'bank_holder_name'    => [ 'required' ],
        ]);
        if ($validator->fails()) return response()->json([ 'errors' => $validator->errors() ], 403);

        $params = $request->all();
        User::where('id', $this->_user->id)->update([
            'bank_name'           => $params['bank_name'],
            'bank_code'           => $params['bank_code'],
            'bank_branch_name'    => $params['bank_branch_name'],
            'bank_branch_code'    => $params['bank_branch_code'],
            'bank_account_type'   => ($params['bank_account_type'] == 1) ? 1 : 0,
            'bank_account_number' => $params['bank_account_number'],
            'bank_holder_name'    => $params['bank_holder_name'],
        ]);

        return response()->json(null, 204);
    }
}
