<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Http\Requests;
use App\Http\Requests\StoreGroup;
use App\Group;

class GroupController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth');
    }

    public function showGroup(Group $group)
    {
        $this->authorize('view', $group);

        return view('groups.show', compact('group'));
    }

    public function showGroups()
    {
        $this->authorize('viewall', Group::class);

        $groups = Group::all();
        return view('groups.showall', compact('groups'));
    }

    public function newGroup()
    {
        $this->authorize('create', Group::class);

        return view('groups.new');
    }

    public function addGroup(StoreGroup $request)
    {
        $this->authorize('create', Group::class);

        $group = new Group;
        $group->addGroup($request->all());
        $request->session()->flash('status', 'New group added successfully!');
        return redirect("/" . Auth::user()->getAdminPath() . "/groups");
    }

    public function editGroup(Group $group)
    {
        $this->authorize('update', $group);

        return view('groups.edit', compact('group'));
    }

    public function updateGroup(Group $group, StoreGroup $request)
    {
        $this->authorize('update', $group);

        $group->updateGroup($request->all());
        $request->session()->flash('status', 'The group has been updated');
        return redirect("/" . Auth::user()->getAdminPath() . "/groups/$group->id");
    }

    public function deleteGroup(Group $group, Request $request)
    {
        $this->authorize('delete', $group);

        $group->deleteGroup();
        $request->session()->flash('status', 'The group has been deleted');
        return redirect("/" . Auth::user()->getAdminPath() . "/groups");
    }
}