248 lines
8.4 KiB
PHP
248 lines
8.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
use App\Models\User;
|
|
use App\Models\Order;
|
|
use App\Models\OrderItem;
|
|
|
|
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Product;
|
|
|
|
|
|
class AdminController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
if (session()->get('type') == 'Admin') {
|
|
return view('Dashboard.index');
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
|
|
public function products()
|
|
{
|
|
if (session()->get('type') == 'Admin') {
|
|
$products = Product::all();
|
|
return view('Dashboard.products', compact('products'));
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
// public function addNewProduct()
|
|
// {
|
|
// $validated = request()->validate([
|
|
// 'name' => 'required',
|
|
// 'price' => 'required',
|
|
// 'description' => 'required',
|
|
// 'image' => 'required|image|mimes:jpeg,png,jpg,gif,
|
|
// svg|max:2048',
|
|
// 'quantity' => 'required',
|
|
|
|
|
|
// ]);
|
|
|
|
// if (request()->hasFile('file')) {
|
|
// $file = request()->file('file');
|
|
// $fileName = $file->getClientOriginalName();
|
|
// $file->move('uploads/products/', $fileName);
|
|
// request()->merge([
|
|
// 'picture' => $fileName,
|
|
// ]);
|
|
// }
|
|
// Product::create(request()->all());
|
|
// // $product = new Product();
|
|
// // $product->name = $data->input('name');
|
|
// // $product->picture = $data->file('file')->getClientOriginalName();
|
|
// // $data->file('file')->move('uploads/products/', $product->picture);
|
|
// // $product->description = $data->input('description');
|
|
// // $product->price = $data->input('price');
|
|
// // $product->quantity = $data->input('quantity');
|
|
// // $product->category = $data->input('category');
|
|
// // $product->type = $data->input('type');
|
|
|
|
// // $abc = $product->save();
|
|
// // dd($abc);
|
|
// return redirect()->back()->with('success', 'Product Added Successfully');
|
|
// // return view('Dashboard.addNewProduct');
|
|
// }
|
|
|
|
//mass assignment for adding new product
|
|
public function addNewProduct(Request $request)
|
|
{
|
|
if (session()->get('type') == 'Admin') {
|
|
$validated = $request->validate([
|
|
'name' => 'required',
|
|
'price' => 'required|numeric',
|
|
'description' => 'required',
|
|
'file' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:10240',
|
|
'quantity' => 'required|numeric',
|
|
'category' => 'required',
|
|
'type' => 'required',
|
|
]);
|
|
|
|
if ($request->hasFile('file')) {
|
|
$file = $request->file('file');
|
|
$fileName = time() . '_' . $file->getClientOriginalName();
|
|
$file->move(public_path('uploads/products'), $fileName);
|
|
$validated['picture'] = $fileName;
|
|
}
|
|
|
|
Product::create($validated);
|
|
|
|
return redirect()->back()->with('success', 'Product Added Successfully');
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
|
|
|
|
//normal assignment for update
|
|
// public function updateProduct(Request $request)
|
|
// {
|
|
// $validated = $request->validate([
|
|
// 'name' => 'required',
|
|
// 'price' => 'required|numeric',
|
|
// 'description' => 'required',
|
|
// 'file' => 'image|mimes:jpeg,png,jpg,gif,svg|max
|
|
// :2048',
|
|
// 'quantity' => 'required|numeric',
|
|
// 'category' => 'required',
|
|
// 'type' => 'required',
|
|
// ]);
|
|
// if ($request->hasFile('file')) {
|
|
// $file = $request->file('file');
|
|
// $fileName = time() . '_' . $file->getClientOriginalName();
|
|
// $file->move(public_path('uploads/products'), $fileName);
|
|
// $validated['picture'] = $fileName;
|
|
// }
|
|
// $product = Product::find($request->id);
|
|
// $product->name = $validated['name'];
|
|
// $product->price = $validated['price'];
|
|
// $product->description = $validated['description'];
|
|
// $product->quantity = $validated['quantity'];
|
|
// $product->category = $validated['category'];
|
|
// $product->type = $validated['type'];
|
|
// $product->save();
|
|
// return redirect()->back()->with('success', 'Product Updated Successfully');
|
|
// }
|
|
|
|
//mass assignment for update
|
|
public function updateProduct(Request $request)
|
|
{
|
|
if (session()->get('type') == 'Admin') {
|
|
$validated = $request->validate([
|
|
'name' => 'required',
|
|
'price' => 'required|numeric',
|
|
'description' => 'required',
|
|
'quantity' => 'required|numeric',
|
|
'category' => 'required',
|
|
'type' => 'required',
|
|
'file' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
|
|
]);
|
|
|
|
$product = Product::find($request->input('id'));
|
|
|
|
if ($request->hasFile('file')) {
|
|
$file = $request->file('file');
|
|
$fileName = time() . '_' . $file->getClientOriginalName();
|
|
$file->move(public_path('uploads/products'), $fileName);
|
|
$validated['picture'] = $fileName;
|
|
}
|
|
$product->update($validated);
|
|
return redirect()->back()->with('success', 'Product Updated Successfully');
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
|
|
public function deleteProduct($id)
|
|
{
|
|
if (session()->get('type') == 'Admin') {
|
|
$product = Product::find($id);
|
|
$product->delete();
|
|
return redirect()->back()->with('success', 'Product Deleted Successfully');
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
|
|
public function profile()
|
|
{
|
|
if (session()->get('type') == 'Admin') {
|
|
$user = User::find(session()->get('id'));
|
|
return view('Dashboard.profile', compact('user'));
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
|
|
public function customers()
|
|
{
|
|
if (session()->get('type') == 'Admin') {
|
|
$customers = User::where('type', 'customer')->get();
|
|
return view('Dashboard.customers', compact('customers'));
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
|
|
public function changeUserStatus($status, $id)
|
|
{
|
|
if (session()->get('type') == 'Admin') {
|
|
$user = User::find($id);
|
|
$user->status = $status;
|
|
$user->save();
|
|
return redirect()->back()->with('success', 'User Status Changed Successfully');
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
|
|
//old orders
|
|
public function orders()
|
|
{
|
|
if (session()->get('type') == 'Admin') {
|
|
$orderItems = DB::table('order_items')
|
|
->join('products', 'order_items.productId', 'products.id')
|
|
->select('products.name', 'products.picture', 'order_items.*')
|
|
->get();
|
|
|
|
$orders = DB::table('users')
|
|
->join('orders', 'orders.customerId', 'users.id')
|
|
->select('orders.*', 'users.name', 'users.email', 'users.status as userStatus')
|
|
->get();
|
|
return view('Dashboard.orders', compact('orders', 'orderItems'));
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
|
|
//new orders
|
|
// public function orders()
|
|
// {
|
|
// if (session()->get('type') == 'Admin') {
|
|
// $orderItems = DB::table('order_items')
|
|
// ->join('products', 'order_items.productId', 'products.id')
|
|
// ->select('products.name as productName', 'products.picture', 'order_items.*')
|
|
// ->get();
|
|
|
|
// $orders = DB::table('users')
|
|
// ->join('orders', 'orders.customerId', 'users.id')
|
|
// ->select('orders.*', 'users.name as userName', 'users.email', 'users.status as userStatus')
|
|
// ->get();
|
|
|
|
// return view('Dashboard.orders', compact('orders', 'orderItems'));
|
|
// }
|
|
// return redirect()->back();
|
|
// }
|
|
|
|
|
|
|
|
public function changeOrderStatus($status, $id)
|
|
{
|
|
if (session()->get('type') == 'Admin') {
|
|
$order = Order::find($id);
|
|
$order->status = $status;
|
|
$order->save();
|
|
return redirect()->back()->with('success', 'Order Status Changed Successfully');
|
|
}
|
|
return redirect()->back();
|
|
}
|
|
}
|