service->getGroupedTree(); return view('admin.product.salecode.index', ['tree' => $tree]); } // --- Provider --- public function storeProvider(Request $request) { $data = $request->validate([ 'code' => ['required', 'string', 'max:30'], 'name' => ['required', 'string', 'max:50'], 'transport_type' => ['required', 'in:HTTP_FORM,HTTP_ENCRYPTED,TCP_SOCKET'], 'base_url' => ['nullable', 'string', 'max:255'], 'host' => ['nullable', 'string', 'max:100'], 'port' => ['nullable', 'integer', 'min:1', 'max:65535'], 'timeout_connect_sec' => ['required', 'integer', 'min:1', 'max:120'], 'timeout_read_sec' => ['required', 'integer', 'min:1', 'max:300'], 'charset' => ['required', 'string', 'max:20'], 'response_format_default' => ['nullable', 'string', 'max:10'], 'is_test_mode' => ['required', 'in:0,1'], 'supports_issue' => ['required', 'in:0,1'], 'supports_cancel' => ['required', 'in:0,1'], 'supports_resend' => ['required', 'in:0,1'], 'supports_cancel_check' => ['required', 'in:0,1'], 'supports_network_cancel' => ['required', 'in:0,1'], 'config_json' => ['nullable', 'string'], 'is_active' => ['required', 'in:0,1'], ]); $res = $this->service->storeProvider($data, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? ''); return redirect()->back()->with('toast', [ 'type' => $res['ok'] ? 'success' : 'danger', 'title' => '알림', 'message' => $res['message'], ]); } public function updateProvider(int $id, Request $request) { $data = $request->validate([ 'name' => ['required', 'string', 'max:50'], 'transport_type' => ['required', 'in:HTTP_FORM,HTTP_ENCRYPTED,TCP_SOCKET'], 'base_url' => ['nullable', 'string', 'max:255'], 'host' => ['nullable', 'string', 'max:100'], 'port' => ['nullable', 'integer', 'min:1', 'max:65535'], 'timeout_connect_sec' => ['required', 'integer', 'min:1', 'max:120'], 'timeout_read_sec' => ['required', 'integer', 'min:1', 'max:300'], 'charset' => ['required', 'string', 'max:20'], 'response_format_default' => ['nullable', 'string', 'max:10'], 'is_test_mode' => ['required', 'in:0,1'], 'supports_issue' => ['required', 'in:0,1'], 'supports_cancel' => ['required', 'in:0,1'], 'supports_resend' => ['required', 'in:0,1'], 'supports_cancel_check' => ['required', 'in:0,1'], 'supports_network_cancel' => ['required', 'in:0,1'], 'config_json' => ['nullable', 'string'], 'is_active' => ['required', 'in:0,1'], ]); $res = $this->service->updateProvider($id, $data, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? ''); return redirect()->back()->with('toast', [ 'type' => $res['ok'] ? 'success' : 'danger', 'title' => '알림', 'message' => $res['message'], ]); } public function destroyProvider(int $id, Request $request) { $res = $this->service->deleteProvider($id, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? ''); return redirect()->back()->with('toast', [ 'type' => $res['ok'] ? 'success' : 'danger', 'title' => '알림', 'message' => $res['message'], ]); } // --- Product Code --- public function storeCode(Request $request) { $data = $request->validate([ 'provider_id' => ['required', 'integer'], 'api_code' => ['required', 'string', 'max:50'], 'name' => ['required', 'string', 'max:100'], 'is_active' => ['required', 'in:0,1'], ]); $res = $this->service->storeCode($data, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? ''); return redirect()->back()->with('toast', ['type' => $res['ok'] ? 'success' : 'danger', 'title' => '알림', 'message' => $res['message']]); } public function updateCode(int $id, Request $request) { $data = $request->validate([ 'provider_id' => ['required', 'integer'], 'api_code' => ['required', 'string', 'max:50'], 'name' => ['required', 'string', 'max:100'], 'is_active' => ['required', 'in:0,1'], ]); $res = $this->service->updateCode($id, $data, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? ''); return redirect()->back()->with('toast', ['type' => $res['ok'] ? 'success' : 'danger', 'title' => '알림', 'message' => $res['message']]); } public function updateCodeSort(Request $request) { $data = $request->validate([ 'ids' => ['required', 'array'], 'ids.*' => ['integer'], ]); $res = $this->service->updateCodeSort($data['ids'], (int) auth('admin')->id()); return response()->json($res); } public function destroyCode(int $id, Request $request) { $res = $this->service->deleteCode($id, (int) auth('admin')->id(), $request->ip(), $request->userAgent() ?? ''); return redirect()->back()->with('toast', ['type' => $res['ok'] ? 'success' : 'danger', 'title' => '알림', 'message' => $res['message']]); } }