<?php

namespace App\Repositories\Staking;

use App\Models\Staking\Staking;
use App\Models\Staking\StakingUser;
use Auth;

class StakingUserRepository
{
    /**
     * @var Staking
     */
    protected $staking;

    /**
     * StakingUserRepository constructor.
     *
     */
    public function __construct()
    {
        $this->staking = new StakingUser();
    }

    public function get($isAdmin = true, $user = false) {

        $stakings = StakingUser::query();

        $stakings->filter(request()->only(['referrer']));

        if($user) {
            $stakings->where('user_id', $user->id);
        }

        if($isAdmin) {
            $stakings->with('user')->with('currency');
        }

        $stakings->has('currency')->has('user');

        $stakings->orderBy('id', 'desc');

        return $stakings->paginate(50)->withQueryString();
    }

    public function getStakingById($id) {
        return StakingUser::find($id);
    }

    public function store($data) {

        $staking = $this->staking->create($data);

        return $staking->fresh();
    }

    public function update($id, $data) {
        $staking = StakingUser::find($id);
        $staking->update($data);
        return $staking->fresh();
    }

    public function delete($id) {

        $staking = StakingUser::find($id);
        $staking->delete();

        return true;
    }
}
