diff --git a/packages/Sarga/API/Http/Controllers/Customers.php b/packages/Sarga/API/Http/Controllers/Customers.php new file mode 100644 index 000000000..39547ed87 --- /dev/null +++ b/packages/Sarga/API/Http/Controllers/Customers.php @@ -0,0 +1,125 @@ +validate([ + 'first_name' => 'required|string', + 'last_name' => 'required|string', + 'phone' => 'required|digits:8|unique:customers,phone', + 'password' => 'required|min:6', + 'gender' => 'in:Male,Female' + ]); + + $data = [ + 'first_name' => $request->get('first_name'), + 'last_name' => $request->get('last_name'), + 'phone' => $request->get('phone'), + 'password' => bcrypt($request->get('password')), + 'channel_id' => core()->getCurrentChannel()->id, + 'is_verified' => 1, + 'gender' => $request->get('gender'), + 'customer_group_id' => $this->customerGroupRepository->findOneWhere(['code' => 'general'])->id + ]; + + Event::dispatch('customer.registration.before'); + + $customer = $this->customerRepository->create($data); + + Event::dispatch('customer.registration.after', $customer); + + if (! $jwtToken = auth()->guard($this->guard)->attempt($request->only(['phone', 'password']))) { + return response()->json([ + 'error' => 'Invalid Email or Password', + ], 401); + } + + Event::dispatch('customer.after.login', $request->get('phone')); + + return response()->json([ + 'token' => $jwtToken, + 'message' => 'Logged in successfully.', + 'data' => new CustomerResource($customer), + ]); + } + + /** + * Method to store user's sign up form data to DB. + * + * @return \Illuminate\Http\Response + */ + public function login(Request $request) + { + $request->validate([ + 'phone' => 'required|digits:8', + 'password' => 'required|min:6', + ]); + + $jwtToken = null; + + if (! $jwtToken = auth()->guard($this->guard)->attempt($request->only(['phone', 'password']))) { + return response()->json([ + 'error' => 'Invalid Email or Password', + ], 401); + } + + Event::dispatch('customer.after.login', $request->get('phone')); + + $customer = auth($this->guard)->user(); + + return response()->json([ + 'token' => $jwtToken, + 'message' => 'Logged in successfully.', + 'data' => new CustomerResource($customer), + ]); + } + + /** + * Update the specified resource in storage. + * + * @return \Illuminate\Http\Response + */ + public function update() + { + $customer = auth($this->guard)->user(); + + $this->validate(request(), [ + 'first_name' => 'required', + 'last_name' => 'required', + 'gender' => 'in:Male,Female', + 'date_of_birth' => 'nullable|date|before:today', + 'email' => 'email|unique:customers,email,' . $customer->id, + 'phone' => 'digits:8|unique:customers,phone,' . $customer->id, + 'password' => 'min:6', + ]); + + $data = request()->only('first_name', 'last_name', 'gender', 'date_of_birth', 'email', 'password','phone'); + + if (! isset($data['password']) || ! $data['password']) { + unset($data['password']); + } else { + $data['password'] = bcrypt($data['password']); + } + + $updatedCustomer = $this->customerRepository->update($data, $customer->id); + + return response()->json([ + 'message' => 'Your account has been updated successfully.', + 'data' => new CustomerResource($updatedCustomer), + ]); + } +} \ No newline at end of file diff --git a/packages/Sarga/API/Http/Controllers/Vendors.php b/packages/Sarga/API/Http/Controllers/Vendors.php index a2339464d..1e8f927d5 100644 --- a/packages/Sarga/API/Http/Controllers/Vendors.php +++ b/packages/Sarga/API/Http/Controllers/Vendors.php @@ -8,6 +8,7 @@ use Sarga\API\Repositories\ProductRepository; use Sarga\Shop\Repositories\CategoryRepository; use Webkul\API\Http\Controllers\Shop\Controller; use Webkul\Marketplace\Repositories\SellerRepository; +use Webkul\Product\Repositories\ProductFlatRepository; class Vendors extends Controller { @@ -45,6 +46,11 @@ class Vendors extends Controller }]) ->orderBy('position','asc') ->get(); + if($vendor->main_categories->count()){ + foreach($vendor->main_categories as $category){ + $category->filters = app(ProductFlatRepository::class)->getProductsRelatedFilterableAttributes($category); + } + } } } diff --git a/packages/Sarga/API/Http/routes.php b/packages/Sarga/API/Http/routes.php index a9c17ebb5..23d0defe1 100644 --- a/packages/Sarga/API/Http/routes.php +++ b/packages/Sarga/API/Http/routes.php @@ -1,6 +1,7 @@ 'api'], function ($router) { Route::put('upload',[IntegrationController::class,'bulk_upload']); Route::put('create',[IntegrationController::class,'create']); }); + + Route::post('customer/register', [Customers::class, 'register']); + Route::post('customer/login', [Customers::class, 'login']); + Route::put('customer/profile', [Customers::class, 'update']); });