get(); $hotSale = Products::where('type', 'sale')->get(); return view('index', compact('allProducts', 'hotSale', 'newArrival')); } public function about() { return view('about'); } public function register() { return view('register'); } public function registerUser(Request $data) { // Validate the input data $data->validate([ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:8|confirmed', 'file' => 'required|file|mimes:jpg,png,jpeg|max:2048', ]); // Create a new user try { $newUser = new User(); $newUser->name = $data->input('name'); $newUser->email = $data->input('email'); $newUser->password = Hash::make($data->input('password')); // Hashing the password $newUser->picture = $data->file('file')->getClientOriginalName(); $data->file('file')->move('uploads/profiles/', $newUser->picture); $newUser->type = "Customer"; if ($newUser->save()) { return redirect('login')->with('success', 'Account created successfully!'); } return redirect('register')->with('error', 'Account creation failed. Please try again.'); } catch (\Exception $e) { return redirect('register')->with('error', 'An error occurred: ' . $e->getMessage()); } } public function login() { return view('login'); } public function loginUser(Request $data) { $user = User::where('email', $data->input('email'))->first(); if ($user && Hash::check($data->input('password'), $user->password)) { // Verifying the hashed password session()->put('id', $user->id); session()->put('type', $user->type); if ($user->type == 'Customer') { return redirect('/'); } } else { return redirect('login')->with('error', 'Invalid email or password!'); } } public function logout() { session()->forget('id'); session()->forget('type'); return redirect('/login'); } public function singleProduct($id) { $products = Products::find($id); if (!$products) { abort(404); } return view('singleProduct', compact('products')); } public function blogDetails() { return view('blogDetails'); } // public function cart() // { // $cartItems = DB::table('products') // ->join('carts', 'carts.productsId', 'product.id') // ->select('products.name', 'products.price', 'products.picture', 'products.quantity as pQuantity', 'carts.*') // ->where('carts.customerId', session()->get('id')) // ->get(); // dd($cartItems); // return view('cart', compact('cartItems')); // } public function cart() { $cartItems = DB::table('products') // ->join('carts', 'carts.productId', '=', 'products.id') ->join('carts', 'carts.productId', 'products.id') ->select('products.name', 'products.price', 'products.picture', 'products.quantity as pQuantity', 'carts.*') ->where('carts.customerId', session()->get('id')) ->get(); //dd($cartItems); return view('cart', compact('cartItems')); } public function addToCart(Request $data) { if (session()->has('id')) { $item = new Cart(); $item->quantity = $data->input('quantity'); $item->productId = $data->input('id'); $item->customerId = session()->get('id'); $item->save(); return redirect()->back()->with('success', 'Item added to cart successfully!'); } else { return redirect('/login')->with('error', 'Please login to add item to cart!'); } } public function deleteCartItem($id) { $item = Cart::find($id); $item->delete(); return redirect()->back()->with('success', 'Item deleted from cart successfully!'); } // public function updateCartItem(Request $data, $id) // { // if (session()->has('id')) { // $item = Cart::find($data->input('id')); // $item->quantity = $data->input('quantity'); // $item->save(); // return redirect()->back()->with('success', 'Item updated successfully!'); // } else { // return redirect('/login')->with('error', 'Please login to update item!'); // } // } public function updateCartItem(Request $request, $id) { // dd($request->all()); if (session()->has('id')) { $item = Cart::find($id); if ($item) { $item->quantity = $request->input('quantity'); $item->save(); return redirect()->back()->with('success', 'Item updated successfully!'); } else { return redirect()->back()->with('error', 'Item not found!'); } } else { return redirect('/login')->with('error', 'Please login to update item!'); } } public function checkout() { return view('checkout'); } public function shop() { return view('shop'); } public function shopDetails() { return view('shopDetails'); } }