orderBy('id', 'ASC'); if ($request->filled('lote')) { $packages->where('lot', 'LIKE', '%' . $request->lote . '%'); } if ($request->filled('caja')) { $packages->where('box_number', 'LIKE', '%' . $request->caja . '%'); } return ApiResponse::OK->response([ 'packages' => $packages->paginate(config('app.pagination')) ]); } catch (\Exception $e) { return ApiResponse::INTERNAL_ERROR->response([ 'message' => 'Error al obtener los paquetes', 'error' => $e->getMessage(), ]); } } public function store(PackageStoreRequest $request) { try { DB::beginTransaction(); $package = Package::create([ 'lot' => $request->input('lot'), 'box_number' => $request->input('box_number'), 'starting_page' => $request->input('starting_page'), 'ending_page' => $request->input('ending_page'), 'module_id' => $request->input('module_id'), ]); DB::commit(); return ApiResponse::CREATED->response([ 'message' => 'Paquete creado exitosamente', 'package' => [ 'id' => $package->id, 'lot' => $package->lot, 'box_number' => $package->box_number, 'starting_page' => $package->starting_page, 'ending_page' => $package->ending_page, 'module_id' => $package->module_id, 'created_at' => $package->created_at->format('Y-m-d H:i:s'), ], ]); } catch (\Exception $e) { DB::rollBack(); return ApiResponse::INTERNAL_ERROR->response([ 'message' => 'Error al crear el paquete', 'error' => $e->getMessage(), ]); } } public function update(PackageUpdateRequest $request, $id) { try { $package = Package::findOrFail($id); DB::beginTransaction(); $package->update($request->validated()); DB::commit(); return ApiResponse::OK->response([ 'message' => 'Paquete actualizado exitosamente', 'package' => [ 'id' => $package->id, 'lot' => $package->lot, 'box_number' => $package->box_number, 'starting_page' => $package->starting_page, 'ending_page' => $package->ending_page, 'module_id' => $package->module_id, 'updated_at' => $package->updated_at->format('Y-m-d H:i:s'), ], ]); } catch (\Exception $e) { DB::rollBack(); return ApiResponse::INTERNAL_ERROR->response([ 'message' => 'Error al actualizar el paquete', 'error' => $e->getMessage(), ]); } } public function destroy($id) { try { DB::beginTransaction(); $package = Package::findOrFail($id); $package->delete(); DB::commit(); return ApiResponse::OK->response([ 'message' => 'Paquete eliminado exitosamente.', ]); } catch (\Exception $e) { DB::rollBack(); return ApiResponse::INTERNAL_ERROR->response([ 'message' => 'Error al eliminar el paquete.', 'error' => $e->getMessage(), ]); } } }