Compare commits

..
10 Commits
Author SHA1 Message Date
Mark Gregory 449fb0bf91 new deployer command 2026-09-16 10:52:27 +01:00
Mark Gregory ee8bd29bd6 new deployer command 2026-09-16 10:47:03 +01:00
Mark Gregory 01c21d12b9 Add npm package lock 2026-09-16 10:46:38 +01:00
Mark Gregory db4c8cf40f new deployer command 2026-09-16 10:38:25 +01:00
Mark Gregory 54b3187656 new deployer command 2026-09-16 10:35:24 +01:00
Mark Gregory a1222d0178 Config Changes 2026-09-16 09:31:34 +00:00
Mark Gregory 3863210146 login display fix now with scrolling 2026-09-16 09:58:30 +01:00
Mark Gregory ae7e5f75a1 login display fix 2026-09-16 09:55:55 +01:00
Mark Gregory 79f52acaa3 New M3 and OTM intergations 2026-09-15 14:31:13 +01:00
Mark Gregory be28c4feec Repo rebuild 2026-09-15 12:33:28 +01:00
5892 changed files with 2327 additions and 73489 deletions
-16
View File
@@ -1,16 +0,0 @@
APP_URL=http://127.0.0.1:8000
SESSION_DRIVER=file
CACHE_STORE=array
APP_KEY=base64:O0djxuJapvByUFNx5avmY7od6Y6C05JYv3kAFNrlrMX=
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=wms_dusk
DB_USERNAME=wms_user
DB_PASSWORD=987400Kmh
QUEUE_CONNECTION=sync
MAIL_MAILER=array
DEBUGBAR_ENABLED=false
TELESCOPE_ENABLED=false
-1
View File
@@ -39,4 +39,3 @@ composer.lock
/storage/framework/
/storage/debugbar/
/phpunit.dusk.xml
sonarqube-issues.csv
View File
View File
+5
View File
@@ -0,0 +1,5 @@
# Analytics
Display KPIs, warehouse performance trends, executive summaries, and OTTC analysis.
Contains actual sample Blade views and placeholder service provider/routes only.
-1
View File
@@ -64,7 +64,6 @@
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<caption class="sr-only">Data table</caption>
<thead class="table-light">
<tr>
<th>Metric</th>
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
View File
+5
View File
@@ -0,0 +1,5 @@
# Audit
Review activity logs, data changes, interface events, and administrative actions.
Contains actual sample Blade views and placeholder service provider/routes only.
-1
View File
@@ -64,7 +64,6 @@
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<caption class="sr-only">Data table</caption>
<thead class="table-light">
<tr>
<th>When</th>
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
+3 -1
View File
@@ -63,7 +63,9 @@ class AuditTrailServiceProvider extends ServiceProvider
$commandPath = __DIR__ . '/../Console';
$commands = collect(File::allFiles($commandPath))
->map(function ($file) {
return 'Modules\\' . $this->moduleName . '\\Console\\' . $file->getFilenameWithoutExtension();
$class = 'Modules\\' . $this->moduleName . '\\Console\\' . $file->getFilenameWithoutExtension();
return $class;
})
->filter(function ($class) {
return class_exists($class);
+12
View File
@@ -14,6 +14,18 @@ class RouteServiceProvider extends ServiceProvider
*/
protected $moduleNamespace = 'Modules\AuditTrail\Http\Controllers';
/**
* Called before routes are registered.
*
* Register any model bindings or pattern based filters.
*
* @return void
*/
public function boot()
{
parent::boot();
}
/**
* Define the routes for the application.
*
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
View File
View File
+5
View File
@@ -0,0 +1,5 @@
# Carrier Management
Maintain carriers, services, and shipment routing master data.
Contains actual sample Blade views and placeholder service provider/routes only.
-1
View File
@@ -64,7 +64,6 @@
<div class="card-body">
<div class="table-responsive">
<table class="table table-hover align-middle mb-0">
<caption class="sr-only">Data table</caption>
<thead class="table-light">
<tr>
<th>Carrier</th>
View File
View File
View File
View File
Executable → Regular
View File
View File
Executable → Regular
View File
+29 -26
View File
@@ -26,37 +26,40 @@ class DeleteOpenAiFilesCommand extends Command
return self::FAILURE;
}
$service = new OpenAiFileService((string) $setting->api_key);
try {
return $this->executeFor(new OpenAiFileService((string) $setting->api_key));
if ((bool) $this->option('dry-run')) {
$files = $service->listFiles();
$this->info('Found ' . count($files) . ' OpenAI API file(s).');
foreach ($files as $file) {
$this->line(sprintf(
'- %s %s',
(string) ($file['id'] ?? 'unknown'),
(string) ($file['filename'] ?? 'unnamed'),
));
}
return self::SUCCESS;
}
$result = $service->deleteAllFiles();
$this->info("Listed: {$result['listed']}");
$this->info("Deleted: {$result['deleted']}");
$this->info("Failed: {$result['failed']}");
foreach ($result['failures'] as $failure) {
$this->error($failure['file_id'] . ': ' . $failure['error']);
}
return $result['failed'] === 0 ? self::SUCCESS : self::FAILURE;
} catch (Throwable $exception) {
$this->error($exception->getMessage());
return self::FAILURE;
}
}
private function executeFor(OpenAiFileService $service): int
{
if ((bool) $this->option('dry-run')) {
$files = $service->listFiles();
$this->info('Found ' . count($files) . ' OpenAI API file(s).');
foreach ($files as $file) {
$this->line(sprintf('- %s %s', (string) ($file['id'] ?? 'unknown'), (string) ($file['filename'] ?? 'unnamed')));
}
return self::SUCCESS;
}
$result = $service->deleteAllFiles();
$this->info("Listed: {$result['listed']}");
$this->info("Deleted: {$result['deleted']}");
$this->info("Failed: {$result['failed']}");
foreach ($result['failures'] as $failure) {
$this->error($failure['file_id'] . ': ' . $failure['error']);
}
return $result['failed'] === 0 ? self::SUCCESS : self::FAILURE;
}
}
View File
View File
+1
View File
@@ -16,5 +16,6 @@ class ChatGPTDatabaseSeeder extends Seeder
{
Model::unguard();
// $this->call("OthersTableSeeder");
}
}
View File
@@ -1,9 +0,0 @@
<?php
declare(strict_types=1);
namespace Modules\ChatGPT\Exceptions;
use RuntimeException;
final class OpenAiFileException extends RuntimeException {}
Executable → Regular
View File
View File
View File
View File
View File
View File
View File
View File
Executable → Regular
View File
View File
View File
+3 -1
View File
@@ -79,7 +79,9 @@ class ChatGPTServiceProvider extends ServiceProvider
$commandPath = __DIR__ . '/../Console';
$commands = collect(File::allFiles($commandPath))
->map(function ($file) {
return 'Modules\\' . $this->moduleName . '\\Console\\' . $file->getFilenameWithoutExtension();
$class = 'Modules\\' . $this->moduleName . '\\Console\\' . $file->getFilenameWithoutExtension();
return $class;
})
->filter(function ($class) {
return class_exists($class);
+12
View File
@@ -14,6 +14,18 @@ class RouteServiceProvider extends ServiceProvider
*/
protected $moduleNamespace = 'Modules\ChatGPT\Http\Controllers';
/**
* Called before routes are registered.
*
* Register any model bindings or pattern based filters.
*
* @return void
*/
public function boot()
{
parent::boot();
}
/**
* Define the routes for the application.
*
View File
View File
View File
View File
View File
+6 -11
View File
@@ -65,8 +65,7 @@
</div>
<label class="inline-flex items-center gap-2 text-sm text-slate-700">
<label for="sonar-input-a09f3b253f" class="visually-hidden">is active</label>
<input type="checkbox" name="is_active" value="1" checked class="rounded border-slate-300 text-blue-600 focus:ring-blue-500" id="sonar-input-a09f3b253f">
<input type="checkbox" name="is_active" value="1" checked class="rounded border-slate-300 text-blue-600 focus:ring-blue-500">
Make active key
</label>
@@ -83,7 +82,6 @@
<div class="mt-5 overflow-x-auto">
<table class="min-w-full divide-y divide-slate-200 text-sm">
<caption class="sr-only">Data table</caption>
<thead class="bg-slate-50 text-left text-xs font-semibold uppercase tracking-wide text-slate-500">
<tr>
<th class="px-4 py-3">Name</th>
@@ -101,27 +99,24 @@
@csrf
@method('PUT')
<label for="sonar-input-30f47d1294" class="visually-hidden">name</label>
<input
<input
name="name"
type="text"
value="{{ old('name', $setting->name) }}"
class="w-full rounded-lg border-slate-300 text-sm shadow-sm focus:border-blue-500 focus:ring-blue-500"
id="name">
>
<label for="sonar-input-707eb8d2ba" class="visually-hidden">Leave blank to keep existing key</label>
<input
<input
name="api_key"
type="password"
value=""
autocomplete="new-password"
placeholder="Leave blank to keep existing key"
class="w-full rounded-lg border-slate-300 text-sm shadow-sm focus:border-blue-500 focus:ring-blue-500"
id="sonar-input-707eb8d2ba">
>
<label class="inline-flex items-center gap-2 text-xs text-slate-600">
<label for="sonar-input-da782f0360" class="visually-hidden">is active</label>
<input
<input
type="checkbox"
name="is_active"
value="1"
View File
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File
+4 -4
View File
@@ -4,7 +4,7 @@ namespace Modules\ChatGPT\Services;
use Illuminate\Http\Client\PendingRequest;
use Illuminate\Support\Facades\Http;
use Modules\ChatGPT\Exceptions\OpenAiFileException;
use RuntimeException;
class OpenAiFileService
{
@@ -33,7 +33,7 @@ class OpenAiFileService
->get(self::BASE_URL . '/files', $query);
if ($response->failed()) {
throw new OpenAiFileException('OpenAI file list request failed: ' . $response->body());
throw new RuntimeException('OpenAI file list request failed: ' . $response->body());
}
$payload = $response->json();
@@ -63,7 +63,7 @@ class OpenAiFileService
->delete(self::BASE_URL . '/files/' . rawurlencode($fileId));
if ($response->failed()) {
throw new OpenAiFileException("OpenAI file delete request failed for {$fileId}: " . $response->body());
throw new RuntimeException("OpenAI file delete request failed for {$fileId}: " . $response->body());
}
return $response->json() ?? [];
@@ -90,7 +90,7 @@ class OpenAiFileService
try {
$this->deleteFile($fileId);
$deleted++;
} catch (OpenAiFileException $exception) {
} catch (RuntimeException $exception) {
$failures[] = [
'file_id' => $fileId,
'error' => $exception->getMessage(),
Executable → Regular
View File
View File

Some files were not shown because too many files have changed in this diff Show More