HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
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.');
    }
}