<?php

namespace App\Http\Controllers\Admin;

use App\Model\CategoriaForo;
use App\Model\Tema;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input;

class ForoController extends Controller
{
    public function index()
    {
        try {
            $categorias = CategoriaForo::all();
            return view('pages.admin.foro.index', compact('categorias'));
        } catch (\Exception $e) {
            Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
            return Redirect('/');
        }
    }

    public function registrarForm()
    {
        try {
            return view('pages.admin.foro._registrar');
        } catch (\Exception $e) {
            Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
            return Redirect('/admin/foro');
        }
    }

    public function registrarSubmit(Request $request)
    {
        $this->validate($request,[
            'nombre' => 'required|max:12',
            'descripcion' => 'required|max:50'
        ]);

        try{
            $categoria = [
                'nombre' => Input::get('nombre'),
                'descripcion' => Input::get('descripcion'),
                'created_at' => Carbon::now(),
            ];

            CategoriaForo::create($categoria);
            Alert()->success(config('constants.ALERT.SUCCESS.MENSAJE'), config('constants.ALERT.SUCCESS.TITULO'))->persistent('Ok');
            return Redirect('/admin/foro');
        } catch (\Exception $e) {
            Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
            return Redirect('/admin/foro');
        }
    }

    public function editarForm($id)
    {
        try {
            $categoria = CategoriaForo::find($id);
            return view('pages.admin.foro._editar', compact('categoria'));
        } catch (\Exception $e) {
            Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
            return Redirect('/admin/foro');
        }
    }

    public function editarSubmit(Request $request)
    {
        try{
            $this->validate($request,[
                'id' => 'required',
                'nombre' => 'required|max:12',
                'descripcion' => 'required|max:50'
            ]);
            $result = CategoriaForo::find($request['id']);
            $result->nombre = Input::get('nombre');
            $result->descripcion = Input::get('descripcion');
            $result->save();

            Alert()->success(config('constants.ALERT.SUCCESS.MENSAJE'), config('constants.ALERT.SUCCESS.TITULO'))->persistent('Ok');
            return Redirect('admin/foro');
        } catch (\Exception $e) {
            Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
            return Redirect('/admin/foro');
        }
    }

    public function eliminarSubmit($id)
    {
        try {
            $temas = Tema::where('id_categoria',$id)->get();
            if (empty($temas) || count($temas) == 0)
            {
                CategoriaForo::destroy($id);
                Alert()->success('Categoría eliminada satisfactoriamente', 'Categoría eliminada')->persistent('Ok');
            }
            else
            {
                Alert()->error('La categoría cuenta con temas activos', 'Denegado')->persistent('Ok');
            }
            return Redirect('/admin/foro');
        } catch (\Exception $e) {
            Alert()->error(config('constants.ALERT.ERROR.MENSAJE'), config('constants.ALERT.ERROR.TITULO'))->persistent('Ok');
            return Redirect('/admin/foro');
        }
    }

    public function estadoSubmit($id)
    {
        try {
            $result = CategoriaForo::find($id);
            if ($result->activo) $result->activo = false;
            else $result->activo = true;
            $result->save();
            return 'true';
        } catch (\Exception $e) {
            return 'false';
        }
    }
}
