serverRepository->getAll()->map(function ($server) {
return [
'id' => $server->id,
'name' => $server->name,
'ip' => $server->ip_address,
'status' => $server->getStatus(),
'checkbox' => '',
'created_at' => Carbon::parse($server->created_at)->format('Y-m-d H:i:s'),
'action' => $this->serverActionButtons($server),
];
});
return response()->json(['data' => $servers]);
}
public function create()
{
$title = 'Add New Server Hosting';
return view('Backend.servers.create', compact('title'));
}
public function connect(ServerRequest $request)
{
$request->validated();
if (!$request->ajax()) {
return response()->json(['success' => false, 'message' => 'Method not support']);
}
$status = $this->serverService->checkConnection($request->all());
if ($status) {
return response()->json(['success' => true, 'message' => 'Connection established successfully.']);
}
return response()->json([
'success' => false,
'message' => 'Connection attempt failed. Please check your credentials or server settings.',
]);
}
public function store(ServerRequest $request)
{
$request->validated();
DB::beginTransaction();
try {
$data = $request->all();
$data['password'] = Crypt::encryptString($request->password);
$this->serverRepository->create($data);
DB::commit();
} catch (Exception $error) {
DB::rollBack();
return response()->json(['success' => false, 'message' => $error->getMessage()]);
}
return response()->json([
'success' => true,
'message' => 'Created successfully!',
'url' => route('admin.server.index'),
]);
}
public function edit(int $id)
{
$server = $this->serverRepository->find($id);
if (!$server) {
return back()->withErrors('Invalid Request');
}
$title = 'Update Server Hosting';
return view('Backend.servers.edit', compact('title', 'server'));
}
public function update(ServerRequest $request, int $id)
{
$request->validated();
DB::beginTransaction();
try {
$data = $request->all();
$data['password'] = Crypt::encryptString($request->password);
$this->serverRepository->update($id, $data);
DB::commit();
} catch (Exception $error) {
DB::rollBack();
return response()->json(['success' => false, 'message' => $error->getMessage()]);
}
return response()->json([
'success' => true,
'message' => 'Updated successfully!',
'url' => route('admin.server.index'),
]);
}
public function destroy(int $id)
{
$server = $this->serverRepository->find($id);
if (!$server) {
return response()->json(['success' => false, 'message' => 'Invalid Request']);
}
$this->serverRepository->delete($id);
return response()->json([
'success' => true,
'message' => 'Deleted successfully!',
'url' => route('admin.server.index'),
]);
}
public function destroyCustom(ServerRemoveRequest $request)
{
$request->validated();
$servers = $this->serverRepository->findWhereIn('id', $request->get('ids'));
if (!$servers) {
return response()->json(['success' => false, 'message' => 'Invalid Request']);
}
foreach ($servers->all() as $server) {
$this->serverRepository->delete($server->id);
}
return response()->json([
'success' => true,
'message' => 'Deleted successfully!',
'url' => route('admin.server.index'),
]);
}
private function serverActionButtons($server): string
{
$editUrl = route('admin.server.edit', ['id' => $server->id]);
$deleteUrl = route('admin.server.destroy', ['id' => $server->id]);
return <<
Edit
Delete
HTML;
}
}