Files
wticreatorstudio/Modules/WTIJobBoard/Repositories/JobRequestBadgesRepository.php
T

102 lines
2.7 KiB
PHP

<?php
namespace Modules\WTIJobBoard\Repositories;
use Modules\WTIJobBoard\Entities\JobRequestBadge;
use Modules\WTIJobBoard\Entities\JobRequestCategory;
use Modules\Staff\Entities\Staff;
use Illuminate\Support\Facades\Cache;
use DB;
class JobRequestBadgesRepository
{
public function all($data)
{
$badges = JobRequestBadge::orderByRaw('-`order` DESC')->get();
return $badges;
}
public function store($request)
{
$data = $request->except('_token');
$data['image'] = $request->file('image')->store('badges','public');
$data['categories'] = $request->categories != null ? array_map('intval', $request->categories) : null;
$data['video_types'] = $request->video_types != null ? array_map('intval', $request->video_types) : null;
$badge = new JobRequestBadge();
$badge->fill($data);
$badge->order = JobRequestBadge::count() + 1;
$badge->save();
return true;
}
public function update($request)
{
$data = $request->except('_token');
$badge = JobRequestBadge::find($data['id']);
if ($badge) {
if($request->has('image')){
$data['image'] = $request->file('image')->store('badges','public');
}
$data['categories'] = $request->categories != null ? array_map('intval', $request->categories) : null;
$data['video_types'] = $request->video_types != null ? array_map('intval', $request->video_types) : null;
$badge->fill($data);
$badge->update();
return true;
}
return false;
}
public function setActiveState($data)
{
$badge = JobRequestBadge::find($data['id']);
if ($badge) {
$badge->active = $data['active'];
$badge->update();
return true;
}
return false;
}
public function destroy($id)
{
$badge = JobRequestBadge::find($id);
if ($badge) {
//lets remove first the badge on the category
JobRequestCategory::where('badge_id', $badge->id)
->update([
'badge_id' => null
]);
//lets remove the badge on all staffs
$staffs = Staff::whereJsonContains('badges', [$badge->id])->get();
foreach ($staffs as $key => $staff) {
$badges = $staff->badges;
if (($key = array_search($badge->id, $badges)) !== false) {
unset($badges[$key]);
}
$staff->badges = array_values($badges);
$staff->save();
}
$badge->delete();
return true;
}
return false;
}
}