Skip to content

Commit 2677085

Browse files
committed
move create service to laravel
1 parent 29cb9d3 commit 2677085

4 files changed

Lines changed: 148 additions & 128 deletions

File tree

app/Http/Controllers/ServiceController.php

Lines changed: 119 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -13,42 +13,63 @@ class ServiceController extends Controller
1313
* Store a newly created resource in storage.
1414
*
1515
* @param Request $request
16-
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\Response|\Illuminate\View\View
1716
*/
1817
public function store(Request $request, ToastInterface $toast)
1918
{
2019
$this->authorize('create', Service::class);
2120

22-
$this->validate($request, [
23-
'service_name' => 'required|string|unique:service',
24-
'device_id' => 'integer',
25-
'service_type' => 'string',
26-
'service_param' => 'nullable|string',
27-
'service_ip' => 'nullable|string',
28-
'service_desc' => 'nullable|string',
29-
'service_changed' => 'integer',
30-
'service_disabled' => 'integer',
31-
'service_ignore' => 'integer',
32-
]);
21+
$rules = [
22+
'device_id' => 'required|integer|exists:devices,device_id',
23+
'service_changed' => 'nullable|integer',
24+
'service_template_id' => 'nullable|integer',
25+
];
26+
27+
if ($request->has('service_name')) {
28+
$rules['service_name'] = 'required|string|unique:services,service_name';
29+
$rules['service_type'] = 'required|string';
30+
$rules['service_param'] = 'nullable|string';
31+
$rules['service_ip'] = 'nullable|string';
32+
$rules['service_desc'] = 'nullable|string';
33+
$rules['service_disabled'] = 'nullable|integer';
34+
$rules['service_ignore'] = 'nullable|integer';
35+
} else {
36+
$rules['name'] = 'required|string|unique:services,service_name';
37+
$rules['stype'] = 'required|string';
38+
$rules['param'] = 'nullable|string';
39+
$rules['ip'] = 'nullable|string';
40+
$rules['desc'] = 'nullable|string';
41+
$rules['disabled'] = 'nullable|integer';
42+
$rules['ignore'] = 'nullable|integer';
43+
}
3344

34-
$service = new Service(
35-
$request->only(
36-
[
37-
'service_name',
38-
'device_id',
39-
'service_type',
40-
'service_param',
41-
'service_ip',
42-
'service_desc',
43-
'service_changed',
44-
'service_disabled',
45-
'service_ignore',
46-
]
47-
)
48-
);
49-
$service->save();
50-
51-
$toast->success(__('Service :name created', ['name' => $service->service_name]));
45+
$this->validate($request, $rules);
46+
47+
$name = strip_tags((string) $request->input('service_name', $request->input('name')));
48+
$type = strip_tags((string) $request->input('service_type', $request->input('stype')));
49+
$desc = strip_tags((string) $request->input('service_desc', $request->input('desc', '')));
50+
$ip = $request->input('service_ip', $request->input('ip', ''));
51+
$param = $request->input('service_param', $request->input('param', ''));
52+
$ignore = (int) $request->input('service_ignore', $request->input('ignore', 0));
53+
$disabled = (int) $request->input('service_disabled', $request->input('disabled', 0));
54+
$templateId = $request->input('service_template_id', $request->input('template_id', 0));
55+
$deviceId = $request->input('device_id');
56+
57+
$service = \LibreNMS\Services::addService($deviceId, $type, $desc, $ip, $param, $ignore, $disabled, $templateId, $name);
58+
59+
if ($request->expectsJson() || $request->wantsJson()) {
60+
if ($service) {
61+
return response()->json([
62+
'status' => 0,
63+
'message' => 'Added Service: <i>' . $service->service_id . ': ' . e($type) . '</i>',
64+
]);
65+
}
66+
return response()->json([
67+
'status' => 1,
68+
'message' => 'ERROR: Failed to add Service: <i>' . e($type) . '</i>',
69+
]);
70+
}
71+
72+
$toast->success(e(__('Service :name created', ['name' => $name])));
5273

5374
return redirect()->route('services.templates.index');
5475
}
@@ -75,6 +96,72 @@ public function show(Service $service): JsonResponse
7596
]);
7697
}
7798

99+
/**
100+
* Update the specified service in storage.
101+
*/
102+
public function update(Request $request, Service $service): JsonResponse
103+
{
104+
$this->authorize('update', $service);
105+
106+
$rules = [
107+
'service_changed' => 'nullable|integer',
108+
'service_template_id' => 'nullable|integer',
109+
'service_name' => 'sometimes|required|string|unique:services,service_name,' . $service->service_id . ',service_id',
110+
'service_type' => 'sometimes|required|string',
111+
'service_param' => 'nullable|string',
112+
'service_ip' => 'nullable|string',
113+
'service_desc' => 'nullable|string',
114+
'service_disabled' => 'nullable|integer',
115+
'service_ignore' => 'nullable|integer',
116+
'name' => 'sometimes|required|string|unique:services,service_name,' . $service->service_id . ',service_id',
117+
'stype' => 'sometimes|required|string',
118+
'param' => 'nullable|string',
119+
'ip' => 'nullable|string',
120+
'desc' => 'nullable|string',
121+
'disabled' => 'nullable|integer',
122+
'ignore' => 'nullable|integer',
123+
];
124+
125+
$this->validate($request, $rules);
126+
127+
if ($request->has('service_name') || $request->has('name')) {
128+
$service->service_name = strip_tags((string) $request->input('service_name', $request->input('name')));
129+
}
130+
if ($request->has('service_type') || $request->has('stype')) {
131+
$service->service_type = strip_tags((string) $request->input('service_type', $request->input('stype')));
132+
}
133+
if ($request->has('service_desc') || $request->has('desc')) {
134+
$service->service_desc = strip_tags((string) $request->input('service_desc', $request->input('desc', '')));
135+
}
136+
if ($request->has('service_ip') || $request->has('ip')) {
137+
$service->service_ip = $request->input('service_ip', $request->input('ip'));
138+
}
139+
if ($request->has('service_param') || $request->has('param')) {
140+
$service->service_param = $request->input('service_param', $request->input('param'));
141+
}
142+
if ($request->has('service_ignore') || $request->has('ignore')) {
143+
$service->service_ignore = (int) $request->input('service_ignore', $request->input('ignore'));
144+
}
145+
if ($request->has('service_disabled') || $request->has('disabled')) {
146+
$service->service_disabled = (int) $request->input('service_disabled', $request->input('disabled'));
147+
}
148+
if ($request->has('service_template_id') || $request->has('template_id')) {
149+
$service->service_template_id = $request->input('service_template_id', $request->input('template_id')) ?: null;
150+
}
151+
152+
if ($service->save()) {
153+
return response()->json([
154+
'status' => 0,
155+
'message' => 'Modified Service: <i>' . e($service->service_id) . ': ' . e($service->service_type) . '</i>',
156+
]);
157+
}
158+
159+
return response()->json([
160+
'status' => 1,
161+
'message' => 'ERROR: Failed to modify service: <i>' . e($service->service_id) . '</i>',
162+
]);
163+
}
164+
78165
/**
79166
* Remove the specified service from storage.
80167
*
@@ -90,13 +177,13 @@ public function destroy(Service $service): JsonResponse
90177
if ($service->delete()) {
91178
return response()->json([
92179
'status' => 0,
93-
'message' => "Service: <i>$id, has been deleted.</i>",
180+
'message' => 'Service: <i>' . e($id) . ', has been deleted.</i>',
94181
]);
95182
}
96183

97184
return response()->json([
98185
'status' => 1,
99-
'message' => "Service: <i>$id, has NOT been deleted.</i>",
186+
'message' => 'Service: <i>' . e($id) . ', has NOT been deleted.</i>',
100187
]);
101188
}
102189
}

includes/html/forms/create-service.inc.php

Lines changed: 0 additions & 69 deletions
This file was deleted.

includes/html/pages/services.inc.php

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -253,35 +253,36 @@
253253
var orig_state = $(this).data("orig_state");
254254
var orig_colour = $(this).data("orig_colour");
255255
$.ajax({
256-
type: 'POST',
257-
url: 'ajax_form.php',
258-
data: { type: "create-service", service_id: service_id, disabled: (1 - state) },
259-
dataType: "html",
260-
success: function(msg) {
261-
if(msg.indexOf("ERROR:") <= -1) {
262-
if(state) {
263-
$('#service_status-'+service_id).removeClass('fa-pause');
264-
$('#service_status-'+service_id).addClass('fa-'+orig_state);
265-
$('#service_status-'+service_id).removeClass('text-default');
266-
$('#service_status-'+service_id).removeClass('text-danger');
267-
$('#service_status-'+service_id).removeClass('text-success');
268-
$('#service_status-'+service_id).addClass('text-'+orig_colour);
269-
} else {
270-
$('#service_status-'+service_id).removeClass('fa-check');
271-
$('#service_status-'+service_id).addClass('fa-pause');
272-
$('#service_status-'+service_id).removeClass('text-success');
273-
$('#service_status-'+service_id).removeClass('text-danger');
274-
$('#service_status-'+service_id).addClass('text-default');
275-
}
256+
type: 'PUT',
257+
url: '<?php echo route("service.update", ["service" => ":service"]) ?>'.replace(':service', service_id),
258+
data: { disabled: (1 - state) },
259+
dataType: "json",
260+
success: function(data) {
261+
if (data.status == 0) {
262+
if (state) {
263+
$('#service_status-'+service_id).removeClass('fa-pause');
264+
$('#service_status-'+service_id).addClass('fa-'+orig_state);
265+
$('#service_status-'+service_id).removeClass('text-default');
266+
$('#service_status-'+service_id).removeClass('text-danger');
267+
$('#service_status-'+service_id).removeClass('text-success');
268+
$('#service_status-'+service_id).addClass('text-'+orig_colour);
276269
} else {
277-
$("#message").html('<div class="alert alert-info">'+msg+'</div>');
278-
$('#'+service_id).bootstrapSwitch('toggleState',true );
279-
}
280-
},
281-
error: function() {
282-
$("#message").html('<div class="alert alert-info">This service could not be updated.</div>');
283-
$('#'+service_id).bootstrapSwitch('toggleState',true );
270+
$('#service_status-'+service_id).removeClass('fa-check');
271+
$('#service_status-'+service_id).addClass('fa-pause');
272+
$('#service_status-'+service_id).removeClass('text-success');
273+
$('#service_status-'+service_id).removeClass('text-danger');
274+
$('#service_status-'+service_id).addClass('text-default');
284275
}
276+
} else {
277+
$("#message").html('<div class="alert alert-info">'+data.message+'</div>');
278+
$('#'+service_id).bootstrapSwitch('toggleState',true );
279+
}
280+
},
281+
error: function(xhr) {
282+
var msg = (xhr.responseJSON && xhr.responseJSON.message) ? xhr.responseJSON.message : 'This service could not be updated.';
283+
$("#message").html('<div class="alert alert-info">' + msg + '</div>');
284+
$('#'+service_id).bootstrapSwitch('toggleState',true );
285+
}
285286
});
286287
});
287288

routes/web.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@
129129
});
130130
Route::resource('service', ServiceController::class)->only(['show', 'destroy']);
131131
Route::get('locations', [LocationController::class, 'index']);
132+
Route::resource('service', ServiceController::class)->only(['show', 'store', 'update', 'destroy']);
132133
Route::resource('ssl-certificates', SslCertificateController::class)->except(['edit']);
133134
Route::resource('preferences', UserPreferencesController::class)->only('index', 'store', 'update');
134135
Route::middleware('can:api.access')->group(function (): void {

0 commit comments

Comments
 (0)