orderByRequest($discount, $request); // Filter $this->filterRequest( builder: $discount, request: $request, filterKeys: [ 'active_date' => self::F_THAN_EQ_DATETIME, 'expiry' => self::F_LESS_EQ_DATETIME, 'date_used' => self::F_IN_DATETIME, 'code' => self::F_TEXT, 'value' => self::F_TEXT, 'email' => self::F_TEXT, 'discount_type_id' => self::F_NOT_CONTAIN, 'status' => self::F_BOOLEAN, ] ); $this->searchRequest( builder: $discount, value: $request->get('search'), fields: [ 'code', 'email', 'value' ] ); $responseData = array_merge( $discount->paginate($request->get('per_page'))->toArray(), ['status' => true] ); return response()->json($responseData); } public function create(DiscountRequest $request) { $payload = $request->all(); $discount = Discount::createWithDefault($payload); return response()->json([ 'data' => $discount, 'status' => true ]); } 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 ]); } }