middleware('api')->except('create'); } public function get(Request $request) { $tracking = new Tracking; // Order by $this->orderByRequest($tracking, $request); // Filter $this->filterRequest( builder: $tracking, request: $request, filterKeys: [ 'created_at' => self::F_IN_DATETIME, 'time_string' => self::F_TEXT, 'name' => self::F_TEXT, 'status' => self::F_TEXT ] ); $this->searchRequest( builder: $tracking, value: $request->get('search'), fields: [ 'name', 'time_string', 'status' ] ); $responseData = array_merge( $tracking->paginate($request->get('per_page'))->toArray(), ['status' => true] ); return response()->json($responseData); } public function create(Request $request) { try { $validatedData = $request->validate([ 'name' => 'required', 'time_string' => 'required', 'status' => 'required', ]); $payload = $request->only(['name', 'time_string', 'status']); $user = Admin::where('name', $payload['name'])->first(); if ($user) { $payload['user_id'] = $user->id; $latest = Tracking::where('name', $payload['name'])->latest()->first(); if($latest){ if($payload['status'] == $this->CHECK_IN || $payload['status'] == $this->CHECK_OUT){ if ($latest->status == $this->CHECK_IN) { $payload['status'] = $this->CHECK_OUT; } if ($latest->status == $this->CHECK_OUT) { $payload['status'] = $this->CHECK_IN; } $tracking = Tracking::create($payload); return response()->json([ 'data' => $tracking, 'check_status' => $payload['status'], 'status' => true ]); }else{ return response()->json([ 'data' => "STATUS INVALID", 'status' => false ]); } }else{ $tracking = Tracking::create($payload); return response()->json([ 'data' => $tracking, 'check_status' => $payload['status'], 'status' => true ]); } } return response()->json([ 'data' => "USER NOT EXIST", 'status' => false ]); } catch (\Illuminate\Validation\ValidationException $e) { return response()->json([ 'data' => "IMPORT DATA FAIL", 'status' => false ], 422); } } public function update(DiscountRequest $request) { $id = $request->get('id'); $discount = Discount::find($id); $payload = $request->all(); if ($discount) { $discount->update($payload); } return response()->json([ 'data' => $discount, 'status' => true ]); } public function delete(DiscountRequest $request) { $id = $request->get('id'); Discount::destroy($id); return response()->json([ 'status' => true ]); } // Delete multiple discounts public function deletes(DiscountRequest $request) { $discounts = $request->get('discounts'); $ids = collect($discounts)->pluck('id'); Discount::whereIn('id', $ids)->delete(); return response()->json([ 'data' => $ids, 'status' => true ]); } // Update multiple discounts public function updates(DiscountRequest $request) { $discounts = $request->get('discounts'); $ids = collect($discounts)->pluck('id'); foreach ($discounts as $discountRequest) { // convert to object|array to array $discountRequest = collect($discountRequest)->toArray(); // handle array $discount = Discount::find($discountRequest['id']); if ($discount) { // exclude id field unset($discount['id']); $discount->update($discountRequest); } } return response()->json([ 'data' => Discount::whereIn('id', $ids)->get(), 'status' => true ]); } }