moduleUtil = $moduleUtil; $this->essentialsUtil = $essentialsUtil; } /** * Display a listing of the resource. * * @return Response */ public function index() { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module'))) { abort(403, 'Unauthorized action.'); } if (! auth()->user()->can('essentials.add_allowance_and_deduction') && ! auth()->user()->can('essentials.view_allowance_and_deduction')) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { $allowances = EssentialsAllowanceAndDeduction::where('business_id', $business_id) ->with('employees'); return Datatables::of($allowances) ->addColumn( 'action', function ($row) { $html = ''; if (auth()->user()->can('essentials.add_allowance_and_deduction')) { $html .= ''; $html .= '  '; } return $html; } ) ->editColumn('applicable_date', function ($row) { return $this->essentialsUtil->format_date($row->applicable_date); }) ->editColumn('type', '{{__("essentials::lang." . $type)}}') ->editColumn('amount', '{{$amount}} @if($amount_type =="percent") % @endif') ->editColumn('employees', function ($row) { $employees = []; foreach ($row->employees as $employee) { $employees[] = $employee->user_full_name; } return implode(', ', $employees); }) ->rawColumns(['action', 'amount']) ->make(true); } } /** * Show the form for creating a new resource. * * @return Response */ public function create() { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module')) || ! auth()->user()->can('essentials.add_allowance_and_deduction')) { abort(403, 'Unauthorized action.'); } $users = User::forDropdown($business_id, false); return view('essentials::allowance_deduction.create')->with(compact('users')); } /** * Store a newly created resource in storage. * * @param Request $request * @return Response */ public function store(Request $request) { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module')) || ! auth()->user()->can('essentials.add_allowance_and_deduction')) { abort(403, 'Unauthorized action.'); } try { $input = $request->only(['description', 'type', 'amount', 'amount_type', 'applicable_date']); $input['business_id'] = $business_id; $input['amount'] = $this->moduleUtil->num_uf($input['amount']); $input['applicable_date'] = ! empty($input['applicable_date']) ? $this->essentialsUtil->uf_date($input['applicable_date']) : null; $allowance = EssentialsAllowanceAndDeduction::create($input); $allowance->employees()->sync($request->input('employees')); $output = ['success' => true, 'msg' => __('lang_v1.added_success'), ]; } catch (\Exception $e) { \Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage()); $output = ['success' => false, 'msg' => 'File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage(), ]; } return $output; } /** * Show the specified resource. * * @return Response */ public function show() { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module')) || ! auth()->user()->can('essentials.add_allowance_and_deduction')) { abort(403, 'Unauthorized action.'); } return view('essentials::show'); } /** * Show the form for editing the specified resource. * * @return Response */ public function edit($id) { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module')) || ! auth()->user()->can('essentials.add_allowance_and_deduction')) { abort(403, 'Unauthorized action.'); } $allowance = EssentialsAllowanceAndDeduction::where('business_id', $business_id) ->with('employees') ->findOrFail($id); $users = User::forDropdown($business_id, false); $selected_users = []; foreach ($allowance->employees as $employee) { $selected_users[] = $employee->id; } $applicable_date = ! empty($allowance->applicable_date) ? $this->essentialsUtil->format_date($allowance->applicable_date) : null; return view('essentials::allowance_deduction.edit') ->with(compact('allowance', 'users', 'selected_users', 'applicable_date')); } /** * Update the specified resource in storage. * * @param Request $request * @return Response */ public function update(Request $request, $id) { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module')) || ! auth()->user()->can('essentials.add_allowance_and_deduction')) { abort(403, 'Unauthorized action.'); } try { $input = $request->only(['description', 'type', 'amount', 'amount_type', 'applicable_date']); $input['amount'] = $this->moduleUtil->num_uf($input['amount']); $input['applicable_date'] = ! empty($input['applicable_date']) ? $this->essentialsUtil->uf_date($input['applicable_date']) : null; $allowance = EssentialsAllowanceAndDeduction::findOrFail($id); $allowance->update($input); $allowance->employees()->sync($request->input('employees')); $output = ['success' => true, 'msg' => __('lang_v1.updated_success'), ]; } catch (\Exception $e) { \Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage()); $output = ['success' => false, 'msg' => 'File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage(), ]; } return $output; } /** * Remove the specified resource from storage. * * @return Response */ public function destroy($id) { $business_id = request()->session()->get('user.business_id'); if (! (auth()->user()->can('superadmin') || $this->moduleUtil->hasThePermissionInSubscription($business_id, 'essentials_module')) || ! auth()->user()->can('essentials.add_allowance_and_deduction')) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { try { EssentialsAllowanceAndDeduction::where('business_id', $business_id) ->where('id', $id) ->delete(); $output = ['success' => true, 'msg' => __('lang_v1.deleted_success'), ]; } catch (\Exception $e) { \Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage()); $output = ['success' => false, 'msg' => __('messages.something_went_wrong'), ]; } return $output; } } }