datacenterRepository->filter( [ 'page' => $request->get('page') ?? 1 ], ['vCenter'] ); $title = 'List all datacenter'; return view('admin.package.datacenter.index', compact('datacenter', 'title')); } public function create() { $title = 'Add datacenter'; return view('admin.package.datacenter.add', compact('title')); } public function store(DatacenterRequest $request) { $request->validated(); $vcenter = $this->vCenterRepository->find($request->get('vcenter_id')); if (!$vcenter) { return back()->withErrors('Invalid request.'); } $isCreated = $this->datacenterRepository->findBy('datacenter_id', $request->get('datacenter_id')); if ($isCreated) { return back()->withErrors('The Datacenter ID already exists.'); } DB::beginTransaction(); try { $this->datacenterRepository->create($request->all()); DB::commit(); } catch (Exception $error) { DB::rollBack(); return back()->withErrors($error->getMessage()); } return redirect()->route('package.datacenter.index')->with('success', 'Add new datacenter successfully!'); } public function edit(int $id = 0) { $datacenter = $this->datacenterRepository->find($id); if (!$datacenter) { return back()->withErrors('Invalid request.'); } $title = 'Edit Datacenter'; return view('admin.package.datacenter.edit', compact('title', 'datacenter')); } public function update(int $id = 0, DatacenterRequest $request) { $datacenter = $this->datacenterRepository->find($id); if (!$datacenter) { return back()->withErrors('Invalid request.'); } $request->validated(); if ($request->get('datacenter_id') !== $datacenter->datacenter_id) { $isCreated = $this->datacenterRepository->findBy('datacenter_id', $request->get('datacenter_id')); if ($isCreated) { return back()->withErrors('The Datacenter ID already exists.'); } } DB::beginTransaction(); try { $this->datacenterRepository->update($id, $request->all()); DB::commit(); } catch (Exception $error) { DB::rollBack(); return back()->withErrors($error->getMessage()); } return redirect()->route('package.datacenter.index')->with('success', 'Update datacenter successfully!'); } public function destroy(int $id = 0) { $datacenter = $this->datacenterRepository->find($id); if (!$datacenter) { return back()->withErrors('Invalid request.'); } DB::beginTransaction(); try { $this->datacenterRepository->delete($id); DB::commit(); } catch (Exception $error) { DB::rollBack(); return back()->withErrors($error->getMessage()); } return redirect()->route('package.datacenter.index')->with('success', 'Deleted datacenter successfully!'); } public function sync(SyncDatacenter $syncDatacenter) { dispatch($syncDatacenter)->delay(now()->addSeconds(5)); return back()->with('success', 'The process is being established, please wait'); } public function datatable(Request $request) { $query = $this->datacenterRepository->filter( $request->all(), ['vCenter'], [], ['*'], true ); return DataTables::eloquent($query) ->addColumn( 'action', fn($d) => 'Edit' ) ->make(true); } }