<?php

namespace App\Http\Controllers\Api\v1;

use App\Http\Controllers\Controller;
use App\Http\Requests\Web\Staking\StakingPurchaseRequest;
use App\Http\Requests\Web\Staking\StakingRedeemRequest;
use App\Http\Resources\Staking\Staking as StakingResource;
use App\Http\Resources\Staking\StakingCollection;
use App\Http\Resources\Staking\StakingUserCollection;
use App\Models\Staking\Staking;
use App\Models\Staking\StakingUser;
use App\Repositories\Staking\StakingRepository;
use App\Repositories\Staking\StakingUserRepository;
use App\Repositories\Wallet\WalletRepository;
use App\Services\Wallet\WalletService;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Http\Request;
use Inertia\Inertia;

class StakingController extends Controller
{

    public function index(Request $request)
    {
        $sort = $request->get('sort');

        $stakings = new StakingCollection((new StakingRepository())->get(false));

        return response()->json([
            'stakings' => $stakings,
            'sort' => $sort
        ]);
    }

    public function my(Request $request)
    {
        $sort = $request->get('sort');

        $stakings = new StakingUserCollection((new StakingUserRepository())->get(false, auth()->user()));

        return response()->json([
            'stakings' => $stakings,
            'sort' => $sort
        ]);
    }


    public function show(Request $request)
    {
        $staking = (new StakingRepository())->getStakingById($request->get('id'));

        if(!$staking) {
            return response()->json(['success' => false])->setStatusCode(STATUS_NOT_FOUND);
        }

        return response()->json([
            'staking' => new StakingResource($staking),
        ]);
    }
}
