<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Services\ProfessionalService;
use App\Services\TransactionService;

class DisbursementController extends Controller
{
    protected $professionalService;
    protected $transactionService;
    protected $route;
    protected $view;

    public function __construct(ProfessionalService $professionalService, TransactionService $transactionService)
    {
        $this->professionalService = $professionalService;
        $this->transactionService = $transactionService;
        $this->route = 'disbursements';
        $this->view = 'disbursements';
    }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $disbursements = $this->transactionService->getAllDisbursements();
        return view($this->view.'.index', compact('disbursements'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(Request $request)
    {
        $transactions = $this->transactionService->getTransactionsForDisbursement($request);
        $professionals = $this->professionalService->getList();
        $selectedProfessional = $request->get('professional_id');
        $dateLastMonday = Date('m/d/Y', strtotime("last Monday"));
        $dateToday = Date('m/d/Y');
        $dateFilter = $request->get('date') ? $request->get('date') : $dateLastMonday.' - '.$dateToday;
        return view($this->view.'.create',compact('professionals','transactions','selectedProfessional','dateFilter'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $payoutRef = $this->transactionService->disbursePayment($request);

        return redirect()->route('disbursementsDetails', $payoutRef);
    }

    /**
     * Display the specified resource.
     *
     * @param  $payoutRef id
     * @return \Illuminate\Http\Response
     */
    public function show($payoutRef)
    {
        $disbursements = $this->transactionService->getDisbursementDetails($payoutRef);

       return view($this->view.'.disburse', compact('disbursements'));
    }
}
