File: /home/posscale/public_html/printmanager/app/Http/Controllers/Tenant/DashboardController.php
<?php
namespace App\Http\Controllers\Tenant;
use App\Http\Controllers\Controller;
use App\Http\Requests\CustomerRequest;
use App\Models\Address;
use App\Models\Customer;
use App\Models\Order;
use App\Models\Printer;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Validator;
use Carbon\Carbon;
class DashboardController extends Controller
{
/**
* Show the form for creating the resource.
*/
public function view()
{
$customers_list = Customer::all();
$printers = Printer::whereNotNull('customer_id')->get();
$unassined_printers = Printer::whereNull('customer_id')->get();
$totalPrinters = Printer::count();
$totalLowTonner = Printer::where('toner_status', 1)->count();
$printerErrorCount = Printer::whereNotNull('detected_error')->count();
// Get current tenant ID
$currentTenantId = tenant()->id;
// Query orders from central database for current month
$ordersThisMonth = Order::on('mysql')->where('tenant_id', $currentTenantId)
->whereMonth('order_date', Carbon::now()->month)
->whereYear('order_date', Carbon::now()->year)->count();
return view('tenant.dashboard', [
'totalLowTonner' => $totalLowTonner,
'totalPrinters' => $totalPrinters,
'printers' => $printers,
'customers_list' => $customers_list,
'unassined_printers' => $unassined_printers,
'printerErrorCount' => $printerErrorCount,
'ordersThisMonth' => $ordersThisMonth
]);
}
/**
* Show the form for creating the resource.
*/
public function update_printer(Request $request)
{
abort_unless(auth()->user()?->can('manage_printers'), 403);
$validated = $request->validate([
'printer_id' => 'required|numeric',
'customer_id' => 'required|numeric',
'address_id' => 'required|numeric',
]);
$printer = Printer::find($validated['printer_id']);
$printer->customer_id = $validated['customer_id'];
$printer->address_id = $validated['address_id'];
$printer->equipment_id = $request->equipment_id;
$printer->serial_number = $request->serial_number;
$printer->model = $request->model;
if (!$printer->reception) {
$printer->reception()->create([
'name' => $request->rec_name,
'email' => $request->rec_email
]);
} else {
$printer->reception->name = $request->rec_name;
$printer->reception->email = $request->rec_email;
$printer->reception->save();
}
$printer->save();
//return Redirect::route('dashboard')->with('message', 'Customer assigned successfully.');
return redirect()->back()->with('message', 'Customer assigned successfully.');
}
/**
* Store a newly created resource in storage.
*/
public function storeCustomerAndAddressValidate(Request $request)
{
abort_unless(auth()->user()?->can('manage_customers'), 403);
$rules = [
'name' => 'required|string|max:255',
'email' => 'required|email',
'phone' => 'required|string',
'address' => 'required|string',
'city' => 'required|string',
'state' => 'required|string',
'zip' => 'required|string',
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return response()->json(['status' => false, 'errors' => $validator->errors()], 403);
}
return response()->json(['status' => false, 'message' => 'Validation passed.']);
}
/**
* Store a newly created resource in storage.
*/
public function storeCustomerAndAddress(Request $request)
{
abort_unless(auth()->user()?->can('manage_customers'), 403);
$fields = $request->all();
$customer = new Customer();
$customer->name = $fields['name'];
$customer->email = $fields['email'];
$customer->phone = $fields['phone'];
$customer->save();
$address = new Address();
$address->address = $fields['address'];
$address->city = $fields['city'];
$address->state = $fields['state'];
$address->zip = $fields['zip'];
$customer->addresses()->save($address);
return response()->json(['status' => false, 'customer' => $customer->toArray()]);
}
/**
* Store a newly created resource in storage.
*/
public function validateAddress(Request $request)
{
abort_unless(auth()->user()?->can('manage_customers'), 403);
$rules = [
'address' => 'required|string',
'city' => 'required|string',
'state' => 'required|string',
'zip' => 'required|string',
];
$validator = Validator::make($request->all(), $rules);
if ($validator->fails()) {
return response()->json(['status' => false, 'errors' => $validator->errors()], 403);
}
return response()->json(['status' => false, 'message' => 'Validation passed.']);
}
public function storeCustomerNewAddress(Request $request)
{
abort_unless(auth()->user()?->can('manage_customers'), 403);
$fields = $request->all();
$customer = Customer::find($fields['customer_id']);
$address = new Address();
$address->address = $fields['address'];
$address->city = $fields['city'];
$address->state = $fields['state'];
$address->zip = $fields['zip'];
$customer->addresses()->save($address);
return response()->json(['status' => false, 'address' => $address->toArray()]);
}
}