File: /home/posscale/.trash/1app/Http/Controllers/Tenant/ManagePrinter.php
<?php
namespace App\Http\Controllers\Tenant;
use App\Actions\SmtpAction;
use App\Http\Controllers\Controller;
use App\Http\Requests\PrinterRequest;
use App\Models\Make;
use App\Models\Models;
use App\Models\Printer;
use App\Models\PrinterSmtp;
use App\Models\PrinterType as ModelsPrinterType;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
class ManagePrinter extends Controller
{
/**
* Display a listing of the resource.
*/
public function index(Request $request)
{
$search = $request->input('search');
$printers = Printer::whereAny([
'equipment_id',
'model_name',
'serial_number',
], 'LIKE', '%' . $search . '%')->paginate(15);
return view('tenant.printer.list', ['printers' => $printers, 'search' => $search]);
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
$printer_type = ModelsPrinterType::all();
$printer_type_main = tenancy()->central(function ($tenant) {
return ModelsPrinterType::all();
});
return view('tenant.printer.form', ['printer' => [], 'smtp' => [], 'customers' => [],'reception' => [], 'action' => 'Add Printer','printer_type'=>$printer_type,'printer_type_main'=>$printer_type_main]);
}
/**
* Store a newly created resource in storage.
*/
public function store(PrinterRequest $request)
{
$validated = $request->validated();
$printer = new Printer([
'model_name' => $validated['model_name'],
'serial_number' => $validated['serial_number'],
'equipment_id' => $validated['equipment_id'],
'type_title' => $validated['type_title'],
'toner_type' => $validated['toner_type'],
'drum_unit' => $validated['drum_unit'],
'fuser_unit' => $validated['fuser_unit'],
'paper_tray' => $validated['paper_tray'],
'paper_feed_rollers' => $request->paper_feed_rollers,
'duplex_unit' => $request->duplex_unit,
'transfer_belt' => $request->transfer_belt,
'toner_discreptions' => $request->toner_discreptions,
'make' => $request->make,
'model' => $request->model,
'address' => $request->address,
'city' => $request->city,
'zip' => $request->zip,
'state' => $request->state,
'country' => $request->country
]);
$printer->smtp_active = $validated['connect_to_smpt'] ?? 0;
if (isset($validated['connect_to_smpt'])) {
$printer->smtp_active = $validated['connect_to_smpt'];
}
$printer->smtp_status = false;
$printer->smtp_error = '';
$printer->smtp_sync_date = date('Y-m-d h:i:s');
$printer->save();
if (isset($validated['connect_to_smpt'])) {
if (!$printer->smtp) {
$printer->smtp()->create([
'host' => $validated['host'],
'auth' => $validated['auth'],
'user_name' => $validated['user_name'],
'user_password' => $validated['user_password'],
'port' => $validated['port'],
'from' => $validated['from'],
'from_name' => $validated['from_name']
]);
} else {
$printer->smtp->host = $validated['host'];
$printer->smtp->auth = $validated['auth'];
$printer->smtp->user_name = $validated['user_name'];
$printer->smtp->user_password = $validated['user_password'];
$printer->smtp->port = $validated['port'];
$printer->smtp->from = $validated['from'];
$printer->smtp->from_name = $validated['from_name'];
$printer->smtp->save();
}
}
if (!$printer->customers) {
$printer->customers()->create([
'name' => $request->cus_name,
'email' => $request->cus_email,
'phone' => $request->cus_phone,
]);
} else {
$printer->customers->name = $request->cus_name;
$printer->customers->email = $request->cus_email;
$printer->customers->phone = $request->cus_phone;
$printer->customers->save();
}
if (!$printer->reception) {
$printer->reception()->create([
'name' => $request->rec_name,
'email' => $request->rec_email,
'phone' => $request->rec_phone,
]);
} else {
$printer->reception->name = $request->rec_name;
$printer->reception->email = $request->rec_email;
$printer->reception->phone = $request->rec_phone;
$printer->reception->save();
}
return Redirect::route('printers.index')->with('message', 'Printer added successfully.');
}
/**
* Display the specified resource.
*/
public function show(Printer $printer)
{
$jobs = $printer->jobs()->orderBy('created_at', 'desc')->simplePaginate(15);
return view('tenant.printer.show', ['printer' => $printer, 'jobs' => $jobs]);
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Printer $printer)
{
$printer_type = ModelsPrinterType::all();
$printer_type_main = tenancy()->central(function ($tenant) {
return ModelsPrinterType::all();
});
$smtp = [];
if ($printer->smtp) {
$smtp = $printer->smtp->toArray();
}
$customers = [];
if ($printer->customers) {
$customers = $printer->customers->toArray();
}
$reception = [];
if ($printer->reception) {
$reception = $printer->reception->toArray();
}
return view('tenant.printer.form', ['printer' => $printer->toArray(), 'smtp' => $smtp,'reception' => $reception,'customers' => $customers, 'action' => 'Edit Printer','printer_type'=>$printer_type,'printer_type_main'=>$printer_type_main]);
}
/**
* Update the specified resource in storage.
*/
public function update(PrinterRequest $request, Printer $printer)
{
$validated = $request->validated();
$printer->model_name = $validated['model_name'];
$printer->equipment_id = $validated['equipment_id'];
$printer->serial_number = $validated['serial_number'];
$printer->smtp_active = $validated['connect_to_smpt'] ?? 0;
$printer->type_title = $validated['type_title'];
$printer->toner_type = $validated['toner_type'];
$printer->drum_unit = $validated['drum_unit'];
$printer->fuser_unit = $validated['fuser_unit'];
$printer->paper_tray = $validated['paper_tray'];
$printer->paper_feed_rollers = $request->paper_feed_rollers;
$printer->duplex_unit = $request->duplex_unit;
$printer->transfer_belt = $request->transfer_belt;
$printer->toner_discreptions = $request->toner_discreptions;
$printer->make = $request->make;
$printer->model = $request->model;
$printer->address = $request->address;
$printer->city = $request->city;
$printer->zip = $request->zip;
$printer->state = $request->state;
$printer->country = $request->country;
$printer->save();
if (isset($validated['connect_to_smpt'])) {
if (!$printer->smtp) {
$printer->smtp()->create([
'host' => $validated['host'],
'auth' => $validated['auth'],
'user_name' => $validated['user_name'],
'user_password' => $validated['user_password'],
'port' => $validated['port'],
'from' => $validated['from'],
'from_name' => $validated['from_name']
]);
} else {
$printer->smtp->host = $validated['host'];
$printer->smtp->auth = $validated['auth'];
$printer->smtp->user_name = $validated['user_name'];
$printer->smtp->user_password = $validated['user_password'];
$printer->smtp->port = $validated['port'];
$printer->smtp->from = $validated['from'];
$printer->smtp->from_name = $validated['from_name'];
$printer->smtp->save();
}
if ($printer->smtp) {
$smtp_details = array();
$smtp_details['client'] = [
'host' => $printer->smtp->host,
'port' => $printer->smtp->port,
'encryption' => 'ssl',
'username' => $printer->smtp->user_name,
'password' => $printer->smtp->user_password,
'protocol' => 'imap'
];
$smtp_connection = new SmtpAction($smtp_details);
$connection_info = $smtp_connection->testConnection();
if ($connection_info['status']) {
$printer->smtp_status = $connection_info['status'];
} else {
$printer->smtp_status = $connection_info['status'];
$printer->smtp_error = $connection_info['message'];
}
$printer->save();
}
}
if (!$printer->customers) {
$printer->customers()->create([
'name' => $request->cus_name,
'email' => $request->cus_email,
'phone' => $request->cus_phone,
]);
} else {
$printer->customers->name = $request->cus_name;
$printer->customers->email = $request->cus_email;
$printer->customers->phone = $request->cus_phone;
$printer->customers->save();
}
if (!$printer->reception) {
$printer->reception()->create([
'name' => $request->rec_name,
'email' => $request->rec_email,
'phone' => $request->rec_phone,
]);
} else {
$printer->reception->name = $request->rec_name;
$printer->reception->email = $request->rec_email;
$printer->reception->phone = $request->rec_phone;
$printer->reception->save();
}
return Redirect::route('printers.index')->with('message', 'Printer updated successfully.');
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Printer $printer)
{
$printer->delete();
return Redirect::route('printers.index')->with('message', 'Printer delete successfully.');
}
}