/home/mip/mip/app/Modules/Client/Controllers/Applicants/SourceApplicantsController.php
<?php
namespace QxCMS\Modules\Client\Controllers\Applicants;
use Auth;
use Excel;
use Datatables;
use Illuminate\Http\Request;
use QxCMS\Http\Controllers\Controller;
use QxCMS\Modules\Client\Repositories\Applicants\ApplicantRepositoryInterface as Applicant;
use QxCMS\Modules\Client\Repositories\Settings\Roles\PermissionRepositoryInterface as Permission;
class SourceApplicantsController extends Controller
{
protected $applicant;
protected $auth;
protected $permission;
protected $prefix_name = '';
protected $module_id = 21;
public function __construct(Permission $permission, Applicant $applicant)
{
$this->applicant = $applicant;
$this->permission = $permission;
$this->auth = Auth::guard('client');
$this->prefix_name = config('modules.client');
$this->getDetails($this->module_id);
}
public function permissions()
{
return $this->permission->getPermission($this->module_id);
}
public function index()
{
$this->authorize('activated', $this->permissions());
$data['permissions'] = $this->permissions();
return view('Client::applicants.source-applicant.index', $data);
}
public function show(Request $request)
{
$this->authorize('activated', $this->permissions());
$data['permissions'] = $this->permissions();
$data['count'] = $this->applicant->getSourceApplicant($request)->count();
if($data['count'] == 0){
return view('Client::no-data');
}else{
return view('Client::applicants.source-applicant.view', $data);
}
}
public function excel(Request $request)
{
$data['applicants'] = $this->applicant->getSourceApplicant($request)->orderByRaw("last_name ASC, first_name ASC, middle_name ASC")->get();
$data['count'] = $this->applicant->getSourceApplicant($request)->count();
$data['type'] = 'Applicant Source';
Excel::create('Applicant Source Result', function($excel) use ($data){
$excel->setTitle('Applicant Source');
$excel->sheet('sheet1', function($sheet) use ($data) {
$sheet->loadView('Client::applicants.source-applicant.includes.source-applicant-table', $data);
});
})->export('xlsx');
}
public function getSourceApplicantsData(Request $request)
{
$applicant = $this->applicant->getSourceApplicant($request);
return Datatables::of($applicant)
->editColumn('full_name', function($applicant){
return $applicant->last_name.', '.$applicant->first_name.' '.$applicant->middle_name;
})
->orderColumn('full_name', 'last_name $1, first_name $1, middle_name $1')
->make(true);
}
}