ok
Direktori : /home2/selectio/www/fms-worksuite/app/Http/Controllers/ |
Current File : /home2/selectio/www/fms-worksuite/app/Http/Controllers/AwardController.php |
<?php namespace App\Http\Controllers; use App\DataTables\AwardDataTable; use App\Helper\Reply; use App\Http\Requests\Appreciation\AppreciationType\StoreRequest; use App\Http\Requests\Appreciation\AppreciationType\UpdateRequest; use App\Models\Award; use App\Models\AwardIcon; use App\Models\BaseModel; use App\Models\Appreciation; use App\Scopes\ActiveScope; use Illuminate\Http\Request; class AwardController extends AccountBaseController { public function __construct() { parent::__construct(); $this->pageTitle = 'app.menu.award'; } public function index(AwardDataTable $dataTable) { $viewPermission = user()->permission('view_appreciation'); abort_403(!in_array($viewPermission, ['all', 'added', 'owned', 'both'])); return $dataTable->render('awards.index', $this->data); } public function create() { $this->manageAppreciationPermission = user()->permission('manage_award'); abort_403(!($this->manageAppreciationPermission == 'all')); $this->icons = AwardIcon::all(); $this->pageTitle = __('modules.appreciations.addAppreciationType'); if (request()->ajax()) { $html = view('awards.ajax.create', $this->data)->render(); return Reply::dataOnly(['status' => 'success', 'html' => $html, 'title' => $this->pageTitle]); } $this->view = 'awards.ajax.create'; return view('awards.create', $this->data); } public function quickCreate() { $this->manageAppreciationPermission = user()->permission('manage_award'); abort_403(!($this->manageAppreciationPermission == 'all')); $this->icons = AwardIcon::all(); $this->pageTitle = __('modules.appreciations.addAppreciationType'); return view('appreciations.ajax.create_appreciation_type', $this->data); } public function quickStore(StoreRequest $request) { $this->manageAppreciationPermission = user()->permission('manage_award'); abort_403(!($this->manageAppreciationPermission == 'all')); $award = new Award(); $award->title = $request->title; $award->award_icon_id = $request->icon; $award->color_code = $request->color_code; $award->summary = $request->summery; $award->save(); $awards = Award::with('awardIcon')->where('status', 'active')->get(); $options = $this->options($awards, $award); return Reply::successWithData(__('messages.recordSaved'), ['data' => $options]); } public static function options($items, $group = null): string { $options = '<option value="">--</option>'; foreach ($items as $item) { $name = $item->title; $selected = (!is_null($group) && ($item->id == $group->id)) ? 'selected' : ''; $icon = "<i class='bi bi-". $item->awardIcon->icon."' style='color:".$item->color_code ."'></i> "; $options .= '<option ' . $selected . ' data-content="'.$icon .' '. $name .'" value="'.$item->id.'"> '.mb_ucwords($name).' </option>'; } return $options; } public function store(StoreRequest $request) { $this->manageAppreciationPermission = user()->permission('manage_award'); abort_403(!($this->manageAppreciationPermission == 'all')); $appreciation = new Award(); $appreciation->title = $request->title; $appreciation->award_icon_id = $request->icon; $appreciation->color_code = $request->color_code; $appreciation->summary = $request->summery; $appreciation->save(); return Reply::successWithData(__('messages.recordSaved'), ['redirectUrl' => route('awards.index')]); } public function show($id) { $this->appreciationType = Award::findOrFail($id); $this->manageAppreciationPermission = user()->permission('view_appreciation'); abort_403(!($this->manageAppreciationPermission != 'none')); $this->pageTitle = $this->appreciationType->title; if (request()->ajax()) { $html = view('awards.ajax.show', $this->data)->render(); return Reply::dataOnly(['status' => 'success', 'html' => $html, 'title' => $this->pageTitle]); } $this->view = 'awards.ajax.show'; return view('awards.create', $this->data); } public function edit($id) { $this->manageAppreciationPermission = user()->permission('manage_award'); abort_403(!($this->manageAppreciationPermission == 'all')); $this->appreciationType = Award::findOrFail($id); $this->icons = AwardIcon::all(); $this->pageTitle = __('modules.awards.appreciationType'); if (request()->ajax()) { $html = view('awards.ajax.edit', $this->data)->render(); return Reply::dataOnly(['status' => 'success', 'html' => $html, 'title' => $this->pageTitle]); } $this->view = 'awards.ajax.edit'; return view('awards.create', $this->data); } public function update(UpdateRequest $request, $id) { $this->manageAppreciationPermission = user()->permission('manage_award'); abort_403(!($this->manageAppreciationPermission == 'all')); $appreciation = Award::findOrFail($id); $appreciation->title = $request->title; $appreciation->award_icon_id = $request->icon; $appreciation->summary = $request->summery; $appreciation->color_code = $request->color_code; $appreciation->status = $request->status; $appreciation->save(); return Reply::successWithData(__('messages.updateSuccess'), ['redirectUrl' => route('awards.index')]); } public function destroy($id) { $this->manageAppreciationPermission = user()->permission('manage_award'); abort_403(!($this->manageAppreciationPermission == 'all')); Award::destroy($id); return Reply::successWithData(__('messages.deleteSuccess'), ['redirectUrl' => route('awards.index')]); } public function changeStatus(Request $request) { abort_403(user()->permission('manage_award') != 'all'); $appreciationId = $request->appreciationId; $status = $request->status; $award = Award::findOrFail($appreciationId); $award->status = $status; $award->save(); return Reply::success(__('messages.updateSuccess')); } public function applyQuickAction(Request $request) { switch ($request->action_type) { case 'delete': $this->deleteRecords($request); return Reply::success(__('messages.deleteSuccess')); case 'change-leave-status': $this->changeBulkStatus($request); return Reply::success(__('messages.updateSuccess')); default: return Reply::error(__('messages.selectAction')); } } protected function deleteRecords($request) { abort_403(user()->permission('manage_award') != 'all'); $item = explode(',', $request->row_ids); if (($key = array_search('on', $item)) !== false) { unset($item[$key]); } Award::whereIn('id', $item)->delete(); } protected function changeBulkStatus($request) { abort_403(user()->permission('manage_award') != 'all'); $item = explode(',', $request->row_ids); if (($key = array_search('on', $item)) !== false) { unset($item[$key]); } Award::whereIn('id', $item)->update(['status' => $request->status]); } }