get('type') == 'Customer') { $allProducts = Products::all(); //dd($allProducts); $newArrival = Products::where('type', 'new-arrival')->get(); $hotSale = Products::where('type', 'sale')->get(); return view('index', compact('allProducts', 'hotSale', 'newArrival')); } return redirect()->back(); } public function about() { return view('about'); } public function register() { return view('register'); } public function registerUser(Request $data) { // dd($data->all()); // 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 if($user->type == 'Admin'){ // return redirect('/admin)} // } else { // return redirect('login')->with('error', 'Invalid email or password!'); // } // } //old loginUser // public function loginUser(Request $data) // { // $user = User::where('email', $data->input('email'))->first(); // //if ($user && Hash::check($data->input('password'), $user->password)) { // if ($user && Hash::check($data->input('password'), $user->password) && $user->status == 'Active') { // session()->put('id', $user->id); // session()->put('type', $user->type); // if ($user->type == 'Customer') { // return redirect('/'); // } else if ($user->type == 'Admin') { // return redirect('/admin'); // } // } // return redirect('login')->with('error', 'Invalid email or password!'); // } //new loginUser public function loginUser(Request $data) { $user = User::where('email', $data->input('email'))->first(); if ($user && Hash::check($data->input('password'), $user->password)) { if ($user->status == 'Active') { session()->put('id', $user->id); session()->put('type', $user->type); if ($user->type == 'Customer') { return redirect('/'); } elseif ($user->type == 'Admin') { return redirect('/admin'); } } elseif ($user->status == 'Blocked') { return redirect('login')->with('error', 'Your account is blocked. Please contact support.'); } } 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() { if (session()->get('type') == 'Customer') { $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')); } return redirect()->back(); } 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) { // dd($request->all()); if (session()->has('id')) { $item = Cart::find($id); if ($item) { $item->quantity = $data->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!'); } } //old myOrders // public function myOrders() // { // if (session()->has('id')) { // $orders = Order::where('customerId', session()->get('id'))->get(); // $items = DB::table('products') // ->join('order_items', 'order_items.productId', '=', 'products.id') // ->select('products.name', 'products.picture', 'products.*', 'order_items.orderId') // ->get(); // return view('orders', compact('orders', 'items')); // } // return view('login'); // } //new myOrders public function myOrders() { if (session()->get('type') == 'Customer') { if (session()->has('id')) { $orders = Order::where('customerId', session()->get('id'))->get(); $items = DB::table('products') ->join('order_items', 'order_items.productId', '=', 'products.id') ->select('products.name', 'products.picture', 'order_items.*') ->get(); return view('orders', compact('orders', 'items')); } return view('login'); } return redirect()->back(); } public function profile() { if (session()->get('type') == 'Customer') { if (session()->has('id')) { $user = User::find(session()->get('id')); return view('profile', compact('user')); } return redirect('login'); } return redirect()->back(); } public function updateUser(Request $data) { $user = User::find(session()->get('id')); $user->name = $data->input('name'); $user->email = $data->input('email'); $user->password = $data->input('password'); if ($data->file('file') != null) { $user->picture = $data->file('file')->getClientOriginalName(); $data->file('file')->move('uploads/profiles/', $user->picture); } if ($user->save()) { return redirect()->back()->with('success', 'User updated successfully!'); } } public function checkout(Request $data) { if (session()->has('id')) { $order = new Order(); $order->status = "Pending"; $order->customerId = session()->get('id'); $order->name = $data->input('name'); $order->phone = $data->input('phone'); $order->address = $data->input('address'); $order->bill = $data->input('bill'); if ($order->save()) { $cartItems = Cart::where('customerId', session()->get('id'))->get(); foreach ($cartItems as $item) { $product = Products::find($item->productId); $orderItem = new OrderItem(); $orderItem->orderId = $order->id; $orderItem->productId = $item->productId; $orderItem->quantity = $item->quantity; $orderItem->price = $product->price; $orderItem->save(); $item->delete(); } return redirect()->back()->with('success', 'Order placed successfully!'); } else { return redirect('login')->back()->with('error', 'Order not placed!'); } } return view('checkout'); } public function testMail() { if (session()->get('type') == 'Customer') { $details = [ 'title' => 'Mail from Uron Shrestha', 'message' => 'This is for testing mail using smtp in Laravel!' ]; Mail::to("yuron.stha57@gmail.com")->send(new Testing($details)); return redirect('/'); } return redirect()->back(); } public function shop() { if (session()->get('type') == 'Customer') { return view('shop'); } return redirect()->back(); } }