/home/mip/mip/app/Modules/Client/Repositories/Subject/SubjectRepository.php
<?php
namespace QxCMS\Modules\Client\Repositories\Subject;
use QxCMS\Modules\AbstractRepository;
use QxCMS\Modules\Client\Models\Subject\Subject;
use QxCMS\Modules\Client\Models\Settings\UserLogs\UserLogs as Log;
class SubjectRepository extends AbstractRepository implements SubjectRepositoryInterface
{
protected $model;
protected $log;
function __construct(Subject $model, Log $log)
{
$this->model = $model;
$this->log = $log;
}
public function create(array $request)
{
$user = auth()->user();
$model = $this->model->fill($this->_serialize($request));
$model->save();
$this->log->saveLog(['action' => 'Create', 'module_id' => $this->getModuleId(), 'user_id' => $user->id, 'data_id' => $model->id]);
return $model;
}
public function _serialize(array $request)
{
return $request;
}
public function update($id, array $request)
{
$user = auth()->user();
$model = $this->findById($id);
$model->fill($this->_serialize($request));
if(count($model->getDirty()) > 0) {
$model->save();
session()->flash('success', 'Successfully updated.');
$this->log->saveLog(['action' => 'Update', 'module_id' => $this->getModuleId(), 'user_id' => $user->id, 'data_id' => $model->id]);
}
return $model;
}
public function delete($id)
{
$user = auth()->user();
$model = $this->findById($id);
$model->delete();
$this->log->saveLog(['action' => 'Delete', 'module_id' => $this->getModuleId(), 'user_id' => $user->id, 'data_id' => $model->id]);
return $this->getAjaxResponse('success', 'Successfully deleted.');
}
public function datatablesIndex()
{
return $this->model->with(['principal', 'template', 'fieldOfficer', 'editor'])->select(['*']);
}
/*
API REQUEST
*/
public function apiGetSubject(array $request)
{
if(!isset($request['user_id'])) return array();
return $this->model->with(['principal', 'template', 'template.questions', 'template.questions.answers'])->where('field_officer_assigned', $request['user_id'])->get();
}
}