customerService = $customerService; $this->settingService = new JobRequestSettingsService; $this->categoryService = new JobRequestCategoriesService(); $this->paymentCodeRepository = new PaymentCodeRepository(); } public function data($id){ $data['customer'] = $this->customerService->find($id); $data['job_requests'] = \Modules\WTIJobBoard\Entities\JobRequest::with(['category', 'video', 'product', 'tracks.status', 'tracks.metas', 'shipment'])->latest('id')->where('client_id', $id)->whereNull('deleted_at')->get(); return response()->json($data); } public function credits($id){ try { $credits = $this->customerService->credits($id); $categories = $this->categoryService->all(['active' => 1]); return response()->json([ 'credits' => $credits, 'categories' => $categories ]); } catch(Exception $e){ return response()->json([ 'message' => $e->getMessage() ], 500); } } public function updateCustomerProfile($id, Request $request) { $request->validate([ 'first_name' => 'required|max:255', 'last_name' => 'nullable|max:255', 'email' => ['required', 'string', 'max:255', 'unique:users,email,'.$id], 'phone' => 'required|max:255', 'password' => 'sometimes|nullable|confirmed|min:8', 'is_active' => 'required', 'storefront' => 'required', 'company_name' => 'required', 'brand_name' => 'required', 'company_address' => 'required' ]); try { $user = $this->customerService->update($request, $id); if($user){ return response()->json([ 'customer' => $user->with('wallet_balances', 'orders', 'customerAddresses', 'creditPoints', 'subscriptions')->first(), 'message' => 'Customer Profile Updated Successfully.' ]); } } catch(Exception $e){ return response()->json([ 'message' => $e->getMessage() ], 500); } } public function settings($id){ try { $settings = $this->settingService->settings($id); return response()->json([ 'settings' => $settings ]); } catch(Exception $e){ return response()->json([ 'message' => $e->getMessage() ], 500); } } public function saveSettings($id, Request $request){ $request->validate([ 'settings' => 'array', 'settings.*.email' => 'nullable|email' ]); $this->settingService->save($request,$id); return response()->json([ 'message' => 'Settings successfully saved.' ]); } public function validatePaymentCode($id, Request $request) { $request->validate([ 'code' => 'required' ]); try { return $this->paymentCodeRepository->validate($request->code); } catch (\Exception $e) { return response()->json([ 'message' => $e->getMessage() ], 500); } } public function applyPaymentCode($id, Request $request) { try { return $this->paymentCodeRepository->apply($request->code,$id); } catch(Exception $e){ return response()->json([ 'message' => $e->getMessage() ], 500); } } }