/home/mip/mip/app/Modules/Client/Controllers/Questionnaire/TemplateController.php
<?php
namespace QxCMS\Modules\Client\Controllers\Questionnaire;
use DB;
use Auth;
use Datatables;
use Illuminate\Http\Request;
use QxCMS\Http\Controllers\Controller;
use QxCMS\Modules\Client\Requests\Questionnaire\TemplateRequest;
use QxCMS\Modules\Client\Repositories\Questionnaire\TemplateRepositoryInterface as Template;
//use QxCMS\Modules\Client\Repositories\Participants\ParticipantRepositoryInterface as Participant;
use QxCMS\Modules\Client\Repositories\Settings\Roles\PermissionRepositoryInterface as Permission;
class TemplateController extends Controller
{
protected $template;
//protected $
protected $permission;
protected $auth;
protected $prefix_name = '';
public function __construct(Template $template, Permission $permission)
{
$this->template = $template;
$this->permission = $permission;
$this->auth = Auth::guard('client');
$this->prefix_name = config('modules.client');
config(['jsvalidation.view' => 'jsvalidation::bootstrap-modal']);
$this->getDetails($this->template->getModuleId());
}
public function permissions()
{
return $this->permission->getPermission($this->template->getModuleId());
}
public function index()
{
$this->authorize('activated', $this->permissions());
$data['permissions'] = $this->permissions();
$data['userLogs'] = $this->template->getUserLogs($this->template->getModuleId());
return view('Client::questionnaire.template.index', $data);
}
public function create()
{
$this->authorize('create', $this->permissions());
$data['permissions'] = $this->permissions();
$data['roles'] = $this->user->getRolelists();
return view('Client::settings.users.create', $data);
}
public function store(TemplateRequest $request)
{
$this->authorize('create', $this->permissions());
$input = $request->all();
$input['user_id'] = auth('client')->user()->id;
$template = $this->template->create($input);
session()->flash('success', 'Questionnaire template successfully added.');
return redirect($this->prefix_name.'/questionnaire/'.$template->hashid.'/question');
}
public function show($id)
{
$this->authorize('activated', $this->permissions());
return $id;
}
public function edit($hashid)
{
$this->authorize('update', $this->permissions());
$id = decode($hashid);
$data['template'] = $this->template->findById($id);
$data['permissions'] = $this->permissions();
$data['userLogs'] = $this->template->getUserLogs($this->template->getModuleId(), $id);
return view('Client::questionnaire.template.edit', $data);
}
public function update(TemplateRequest $request, $hashid)
{
$this->authorize('update', $this->permissions());
$id = decode($hashid);
$template = $this->template->update($id, $request->all());
return redirect($this->prefix_name.'/questionnaire');
}
public function destroy($hashid)
{
$this->authorize('delete', $this->permissions());
$id = decode($hashid);
return $this->template->delete($id);
}
public function copyTemplate($hashid)
{
$this->authorize('update', $this->permissions());
$id = decode($hashid);
return $this->template->copyTemplate($id);
}
public function select2(Request $request)
{
return $this->template->select2($request->all());
}
public function preview(Request $request, $hashid)
{
$id = decode($hashid);
$data['template'] = $this->template->findById($id);
return view('Client::questionnaire.template.preview', $data);
}
public function result(Request $request, $hashid)
{
$id = decode($hashid);
$data['template'] = $this->template->findTemplateById($id, ['questions']);
return view('Client::questionnaire.results.index', $data);
}
/*
* Datatables
*/
public function getTemplateData()
{
$templates = $this->template->all();
$permissions = $this->permissions();
return Datatables::of($templates)
->editColumn('status', function($template){
if($template->status == 'Close') return '<span class="label label-danger">Close</span>';
return '<span class="label label-success">Open</span>';
})
->editColumn('created_at', function($template){
return $template->created_at->format('M d, Y');
})
->addColumn('description', function($template){
$html_out = "";
$html_out .= "<a href=\"".url($this->prefix_name.'/questionnaire/'.$template->hashid.'/question')."\">".$template->title."</a>";
// $html_out .= "<br/>".$template->description;
return $html_out;
})
->addColumn('action', function ($template) use ($permissions) {
$html_out = '';
return view('Client::questionnaire.template.action', compact('template', 'permissions'))->render();
})
->make(true);
}
}