<?php


namespace App\Http\Controllers;


use App\Http\Filters\IntegralBillFilter;
use App\Models\IntegralBill;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

/**
 * 用户红包获取流水
 * Class IntegralBillsController
 * @package App\Http\Controllers
 */
class IntegralBillsController extends Controller
{
    /**
     * @param Request $request
     * @param IntegralBillFilter $filter
     * @return array
     */
    public function index(Request $request, IntegralBillFilter $filter)
    {
        $page = $request->has('page') ? $request->page : 1;
        $page_size = $request->has('page_size') ? $request->page_size : 10;
        $bills = IntegralBill::with('integral')->filter($filter)->page($page, $page_size)
            ->orderBy('id', 'desc')
            ->get()->toArray();
        $count = IntegralBill::filter($filter)->count();

        return $this->Export(0, 'ok', ['data' => $bills, 'count' => $count]);

    }

    /**
     * 创建红包账单
     * @param Request $request
     * @return array
     */
    public function create(Request $request)
    {
        $res = DB::table('integral_bills')->insert([
            'user_id'     => $request->user_id,
            'amount'      => $request->amount,
            'integral_id' => $request->integral_id,
            'status'      => 1,
            'add_time'    => time(),
        ]);

        if ($res) {
            return $this->Export(0, 'ok');
        } else {
            return $this->Export(ErrorCode(021, 5), '新增红包账单失败');
        }
    }

    /**
     * 更新红包账单
     * @param Request $request
     * @return array
     */
    public function update(Request $request)
    {
        $id = $request->id;
        $res = DB::table('integral_bills')->where('id', $id)
            ->update([
                'user_id'     => $request->user_id,
                'amount'      => $request->amount,
                'integral_id' => $request->integral_id,
                'status'      => 1,
                'update_time' => time(),
            ]);
        if ($res) {
            return $this->Export(0, 'ok');
        } else {
            return $this->Export(ErrorCode(022, 5), '更新红包账单失败');
        }
    }

    /**
     * 删除红包账单
     * @param Request $request
     * @return array
     */
    public function destroy(Request $request)
    {
        $ids = $request->ids;
        $ids = explode(',', trim($ids));
        $res = DB::table('integral_bills')->whereIn('id', $ids)->delete();
        if ($res) {
            return $this->Export(0, 'ok');
        } else {
            return $this->Export(ErrorCode(023, 5), '删除红包账单失败');
        }
    }
}