<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Http\Requests\ParticipationRequest;
use App\Models\Commune;
use App\Models\Forum;
use App\Models\Participation;
use Illuminate\Http\Request;

class ParticipationsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        if (auth()->user()->commune) {
            $participations = auth()->user()->commune->participations;
        } else {
            $participations = Participation::all();
        }

        return view('admin.participations.index', [ 
            'participations' => $participations,
            'departments' => config('odd.departments')
        ]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        if (auth()->user()->commune) {
            $communes = [auth()->user()->commune];
        } else {
            $communes = Commune::all();
        }

        return view('admin.participations.create', [
            'communes' => $communes,
            'forums' => Forum::all(),
        ]);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \App\Http\Requests\ParticipationRequest  $request
     * @return \Illuminate\Http\Response
     */
    public function store(ParticipationRequest $request)
    {
        Participation::create($request->getParticipationPayload());

        return redirect()->route('participations.index');
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Model\Participation  $participation
     * @return \Illuminate\Http\Response
     */
    public function show(Participation $participation)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Model\Participation  $participation
     * @return \Illuminate\Http\Response
     */
    public function edit(Participation $participation)
    {
        if (auth()->user()->commune) {
            $communes = [auth()->user()->commune];
        } else {
            $communes = Commune::all();
        }

        return view('admin.participations.edit', [
            'participation' => $participation,
            'communes' => $communes,
            'forums' => Forum::all()
        ]);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \App\Http\Requests\ParticipationRequest  $request
     * @param  \App\Model\Participation  $participation
     * @return \Illuminate\Http\Response
     */
    public function update(ParticipationRequest $request, Participation $participation)
    {//dd($request->getParticipationPayload());
        $participation->update($request->getParticipationPayload());

        return redirect()->route('participations.index');
    }

    public function confirmed(Participation $participation)
    {//dd($participation->id);
        $participation->update(['confirmed' => !$participation->confirmed]);

        return back();
    }


    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Model\Participation  $participation
     * @return \Illuminate\Http\Response
     */
    public function destroy(Participation $participation)
    {
        //
    }
}
