/home/mip/mip/app/Modules/Client/Repositories/JobOpening/JobOpeningRepository.php
<?php
namespace QxCMS\Modules\Client\Repositories\JobOpening;
use Illuminate\Support\Str;
use Carbon\Carbon;
use Illuminate\Http\Request;
use QxCMS\Modules\AbstractRepository;
use QxCMS\Modules\Client\Models\JobOpening\JobOpening;
use QxCMS\Modules\Client\Models\Settings\UserLogs\UserLogs as Log;
class JobOpeningRepository extends AbstractRepository implements JobOpeningRepositoryInterface
{
protected $model;
protected $log;
function __construct(JobOpening $model, Log $log)
{
$this->model = $model;
$this->log = $log;
}
public function create(Request $request)
{
$user = auth()->user();
$model = $this->model->fill($request->all());
$model->slug = Str::slug($request->position);
$model->save();
$this->log->saveLog(['action' => 'Create', 'module_id' => $this->getModuleId(), 'user_id' => $user->id, 'data_id' => $model->id]);
return $model;
}
public function update($id, Request $request)
{
$model = $this->findById($id);
$user = auth()->user();
$model->fill($request->all());
$model->slug = Str::slug($request->position);
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)
{
$model = $this->findById($id);
$user = auth()->user();
$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 getAllJob($limit = 10)
{
$job = $this->model;
return $this->getActiveJob($job)->latest()->paginate($limit);
}
public function getLatestJob($limit = 10)
{
$job = $this->model;
return $this->getActiveJob($job)->latest()->take($limit)->get();
}
protected function getActiveJob($model)
{
$date_today = Carbon::now();
return $model
->where('opening_date', '<=', $date_today)
->where('status', 'Open')
->where(function($query) use ($date_today){
$query->orWhere('closing_date', '>', $date_today);
$query->orWhere('closing_date', '=', '0000-00-00');
});
}
public function findBySlug($slug)
{
return $this->model->where('slug', '=', $slug)->get();
}
public function apiGetJobOpening(array $request)
{
// $job = $this->model->with(['country'])->where('status', 'Open')->orderBy('opening_date', 'desc')->get();
return $this->model->with(['country'])->where('status', 'Open')->get();
}
}