commonUtil = $commonUtil; } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { if (! auth()->user()->can('unit.view') && ! auth()->user()->can('unit.create')) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { $business_id = request()->session()->get('user.business_id'); $unit = Unit::where('business_id', $business_id) ->with(['base_unit']) ->select(['actual_name', 'short_name', 'allow_decimal', 'id', 'base_unit_id', 'base_unit_multiplier', ]); return Datatables::of($unit) ->addColumn( 'action', '@can("unit.update")   @endcan @can("unit.delete") @endcan' ) ->editColumn('allow_decimal', function ($row) { if ($row->allow_decimal) { return __('messages.yes'); } else { return __('messages.no'); } }) ->editColumn('actual_name', function ($row) { if (! empty($row->base_unit_id)) { return $row->actual_name.' ('.(float) $row->base_unit_multiplier.$row->base_unit->short_name.')'; } return $row->actual_name; }) ->removeColumn('id') ->rawColumns(['action']) ->make(true); } return view('unit.index'); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { if (! auth()->user()->can('unit.create')) { abort(403, 'Unauthorized action.'); } $business_id = request()->session()->get('user.business_id'); $quick_add = false; if (! empty(request()->input('quick_add'))) { $quick_add = true; } $units = Unit::forDropdown($business_id); return view('unit.create') ->with(compact('quick_add', 'units')); } /** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { if (! auth()->user()->can('unit.create')) { abort(403, 'Unauthorized action.'); } try { $input = $request->only(['actual_name', 'short_name', 'allow_decimal']); $input['business_id'] = $request->session()->get('user.business_id'); $input['created_by'] = $request->session()->get('user.id'); if ($request->has('define_base_unit')) { if (! empty($request->input('base_unit_id')) && ! empty($request->input('base_unit_multiplier'))) { $base_unit_multiplier = $this->commonUtil->num_uf($request->input('base_unit_multiplier')); if ($base_unit_multiplier != 0) { $input['base_unit_id'] = $request->input('base_unit_id'); $input['base_unit_multiplier'] = $base_unit_multiplier; } } } $unit = Unit::create($input); $output = ['success' => true, 'data' => $unit, 'msg' => __('unit.added_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; } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { // } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { if (! auth()->user()->can('unit.update')) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { $business_id = request()->session()->get('user.business_id'); $unit = Unit::where('business_id', $business_id)->find($id); $units = Unit::forDropdown($business_id); return view('unit.edit') ->with(compact('unit', 'units')); } } /** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { if (! auth()->user()->can('unit.update')) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { try { $input = $request->only(['actual_name', 'short_name', 'allow_decimal']); $business_id = $request->session()->get('user.business_id'); $unit = Unit::where('business_id', $business_id)->findOrFail($id); $unit->actual_name = $input['actual_name']; $unit->short_name = $input['short_name']; $unit->allow_decimal = $input['allow_decimal']; if ($request->has('define_base_unit')) { if (! empty($request->input('base_unit_id')) && ! empty($request->input('base_unit_multiplier'))) { $base_unit_multiplier = $this->commonUtil->num_uf($request->input('base_unit_multiplier')); if ($base_unit_multiplier != 0) { $unit->base_unit_id = $request->input('base_unit_id'); $unit->base_unit_multiplier = $base_unit_multiplier; } } } else { $unit->base_unit_id = null; $unit->base_unit_multiplier = null; } $unit->save(); $output = ['success' => true, 'msg' => __('unit.updated_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; } } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { if (! auth()->user()->can('unit.delete')) { abort(403, 'Unauthorized action.'); } if (request()->ajax()) { try { $business_id = request()->user()->business_id; $unit = Unit::where('business_id', $business_id)->findOrFail($id); //check if any product associated with the unit $exists = Product::where('unit_id', $unit->id) ->exists(); if (! $exists) { $unit->delete(); $output = ['success' => true, 'msg' => __('unit.deleted_success'), ]; } else { $output = ['success' => false, 'msg' => __('lang_v1.unit_cannot_be_deleted'), ]; } } catch (\Exception $e) { \Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage()); $output = ['success' => false, 'msg' => '__("messages.something_went_wrong")', ]; } return $output; } } }