<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Http\Repositories\Eloquent\Admin\$NAMERepository;
use App\Http\Requests\Admin\$NAMERequests\$NAMEStoreRequest;
use App\Http\Requests\Admin\$NAMERequests\$NAMEUpdateRequest;

class $NAMEController extends Controller
{

    public $$NORMALNAME;

    public function __construct($NAMERepository $$NORMALNAME)
    {
        $this->$NORMALNAME = $$NORMALNAME;
    }

    public function index($offset, $limit)
    {
        try{
            $$NORMALNAME = $this->$NORMALNAME->index($offset, $limit);
            return view('admin.$NORMALNAME.index', compact('$NORMALNAME'));
        }catch(\Exception $e){
            flash()->error('There is something wrong , please contact technical support');
            return back();
        }
    }

    public function create()
    {
        return view('admin.$NORMALNAME.create');
    }

    public function store($NAMEStoreRequest $request)
    {
        try{
            $this->$NORMALNAME->store($request);
            flash()->success('Success');
            return back();
        }catch(\Exception $e){
            flash()->error('There is something wrong , please contact technical support');
            return back();
        }
    }

    public function edit($id)
    {
        $$FILEVARSINQULAR = $this->$NORMALNAME->findOne($id);
        return view('admin.$NORMALNAME.update', compact('$FILEVARSINQULAR'));
    }

    public function update($NAMEUpdateRequest $request, $id)
    {
        try{
            $this->$NORMALNAME->update($request, $id);
            flash()->success('Success');
            return back();
        }catch(\Exception $e){
            flash()->error('There is something wrong , please contact technical support');
            return back();
        }
    }

    public function activate(Request $request)
    {
        try{
            $this->$NORMALNAME->activate($request->record_id);
            flash()->success('Success');
            return back();
        }catch(\Exception $e){
            flash()->error('There is something wrong , please contact technical support');
            return back();
        }
    }

    public function delete(Request $request)
    {
        try{
            $this->$NORMALNAME->delete($request->record_id);
            flash()->success('Success');
            return back();
        }catch(\Exception $e){
            flash()->error('There is something wrong , please contact technical support');
            return back();
        }
    }

    public function search(Request $request)
    {
        return $this->$NORMALNAME->search($request);
    }

    public function searchByColumn(Request $request)
    {
        return $this->$NORMALNAME->searchByColumn($request);
    }

    public function pagination($offset, $limit)
    {
        return $this->$NORMALNAME->pagination($offset, $limit);
    }

    public function archives($offset, $limit)
    {
        $$NORMALNAME = $this->$NORMALNAME->archives($offset, $limit);
        return view('admin.$NORMALNAME.archives', compact('$NORMALNAME'));
    }

    public function archivesPagination($offset, $limit)
    {
        return $this->$NORMALNAME->archives($offset, $limit);
    }

    public function archivesSearch(Request $request)
    {
        return $this->$NORMALNAME->archivesSearch($request);
    }

    public function archivesSearchByColumn(Request $request)
    {
        return $this->$NORMALNAME->archivesSearchByColumn($request);
    }


    public function back(Request $request)
    {
        try{
            $this->$NORMALNAME->back($request->record_id);
            flash()->success('Success');
            return back();
        }catch(\Exception $e){
            flash()->error('There is something wrong , please contact technical support');
            return back();
        }
    }

}