<?php

namespace App\PackagesAdmin\CapsuleReport\Controllers;

use App\Http\Controllers\Controller;
use App\Packages\Capsule\Models\Capsule;
use App\Packages\Capsule\Models\CapsuleReport;
use App\PackagesAdmin\CapsuleReport\DataTables\CapsuleReportDataTable;
use App\PackagesAdmin\Services\CapsuleService;
use Illuminate\Http\Request;

/**
 * Class CapsuleReportController
 * @package App\PackagesAdmin\CapsuleReport\Controllers
 */
class CapsuleReportController extends Controller {

    /**
     * @param Request $request
     * @param CapsuleReportDataTable $dataTable
     *
     * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
     * @throws \Exception
     */
    public function index(Request $request,  CapsuleReportDataTable $dataTable)
    {
        if ( $request->ajax() ) {
            return $dataTable->getDataTable();
        }

        return view('admin.report_capsule.list');
    }

    /**
     * @param Request $request
     * @param $capsule_id
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function toggle(Request $request, $capsule_id)
    {
        $capsule = Capsule::query()->find($capsule_id);
        /** @var Capsule $capsule */

        if ( $capsule->blocked ) {
            CapsuleService::unblockCapsule($capsule);
        } else {
            CapsuleService::blockCapsule($capsule, $request->description);
        }

        return response()->json([
            'status' => 'success'
        ]);
    }

    /**
     * @param $capsule_id
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function destroy($capsule_id)
    {
        CapsuleReport::query()->where('capsule_id', $capsule_id)->forceDelete();

        return response()->json([
            'status' => 'success'
        ]);
    }
}