File: /home/posscale/.trash/1app.2/Http/Controllers/SourceController.php
<?php
namespace App\Http\Controllers;
use App\Actions\SmtpAction;
use App\Http\Requests\Settings\AddSettings;
use App\Models\connectionSettings;
use App\Models\Printer;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
use Illuminate\View\View;
class SourceController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index(Request $request): View
{
$search = $request->input('search');
$connections = connectionSettings::paginate(15);
return view('tenant.settings.list', ['connections' => $connections, 'search' => $search]);
}
/**
* Show the form for creating a new resource.
*/
public function create(Request $request): View
{
return view('tenant.settings.connection');
}
/**
* Store a newly created resource in storage.
*/
public function store(AddSettings $request)
{
$connection_details = $request->validated();
$connection_settings = new connectionSettings();
$connection_settings->type = $connection_details['type'];
$data = array();
$connection_settings->connection_status = 0;
if ($connection_details['type'] == 'SMTP') {
$data['type_for_monitoring'] = $connection_details['type_for_monitoring'];
$data['host'] = $connection_details['host'];
$data['port'] = $connection_details['port'];
$data['user_name'] = $connection_details['user_name'];
$data['user_password'] = $connection_details['user_password'];
$data['from'] = $connection_details['from'];
$data['from_name'] = $connection_details['from_name'];
$smtp_details['client'] = [
'host' => $data['host'],
'port' => $data['port'],
'encryption' => 'ssl',
'username' => $data['user_name'],
'password' => $data['user_password'],
'protocol' => $data['type_for_monitoring']
];
$connection_settings->connection_status = $this->validate_smtp($smtp_details);
}
$connection_settings->data = json_encode($data);
$connection_settings->last_connection_date = date('Y-m-d h:i:s');
$connection_settings->last_sync_date = date('Y-m-d h:i:s');
$connection_settings->save();
// Add code here to test connection.
return Redirect::route('settings.index')->with('status', 'record-inserted');
}
/**
* Display the specified resource.
*/
public function show(string $id)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(int $id): View
{
$row = connectionSettings::find($id);
return view('tenant.settings.edit-connection', ['connection' => $row]);
}
/**
* Update the specified resource in storage.
*/
public function update(AddSettings $request, string $id)
{
$connection_settings = connectionSettings::find($id);
$connection_details = $request->validated();
$connection_settings->type = $connection_details['type'];
$data = array();
$connection_settings->connection_status = 0;
if ($connection_details['type'] == 'SMTP') {
$data['type_for_monitoring'] = $connection_details['type_for_monitoring'];
$data['host'] = $connection_details['host'];
$data['port'] = $connection_details['port'];
$data['user_name'] = $connection_details['user_name'];
$data['user_password'] = $connection_details['user_password'];
$data['from'] = $connection_details['from'];
$data['from_name'] = $connection_details['from_name'];
$smtp_details['client'] = [
'host' => $data['host'],
'port' => $data['port'],
'encryption' => 'ssl',
'username' => $data['user_name'],
'password' => $data['user_password'],
'protocol' => $data['type_for_monitoring']
];
$connection_settings->connection_status = $this->validate_smtp($smtp_details);
}
$connection_settings->data = json_encode($data);
$connection_settings->last_connection_date = date('Y-m-d h:i:s');
$connection_settings->last_sync_date = date('Y-m-d h:i:s');
$connection_settings->save();
// Add code here to test connection.
return Redirect::route('settings.index')->with('status', 'record-inserted');
}
/**
* Remove the specified resource from storage.
*/
public function destroy(int $id)
{
$connection_settings = connectionSettings::find($id);
$connection_settings->delete();
return Redirect::route('settings.index')->with('message', 'User delete successfully.');
}
/**
* Validate SMTP details and set status according to it
*/
public function validate_smtp(array $smtp_details): Int
{
$smtp_connection = new SmtpAction($smtp_details);
$connection_info = $smtp_connection->testConnection();
if ($connection_info['status']) {
return 1;
}
return 0;
}
}