diff --git a/.env.example b/.env.example index d6e8d17..e3d6ee7 100644 --- a/.env.example +++ b/.env.example @@ -27,6 +27,12 @@ DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD= +ASTERISK_DB_HOST= +ASTERISK_DB_PORT= +ASTERISK_DB_DATABASE= +ASTERISK_DB_USERNAME= +ASTERISK_DB_PASSWORD= + SESSION_DRIVER=database SESSION_LIFETIME=120 SESSION_ENCRYPT=false diff --git a/app/Http/Controllers/HeadquartersDashboard/CumulativeCentersStatsController.php b/app/Http/Controllers/HeadquartersDashboard/CumulativeCentersStatsController.php new file mode 100644 index 0000000..2f027d6 --- /dev/null +++ b/app/Http/Controllers/HeadquartersDashboard/CumulativeCentersStatsController.php @@ -0,0 +1,62 @@ +successResponse($data); + } +} diff --git a/app/Http/Controllers/HeadquartersDashboard/CumulativeKeypressStatsController.php b/app/Http/Controllers/HeadquartersDashboard/CumulativeKeypressStatsController.php new file mode 100644 index 0000000..809af22 --- /dev/null +++ b/app/Http/Controllers/HeadquartersDashboard/CumulativeKeypressStatsController.php @@ -0,0 +1,66 @@ +successResponse($data); + } +} diff --git a/app/Http/Controllers/HeadquartersDashboard/CumulativeMessageRatingStatsController.php b/app/Http/Controllers/HeadquartersDashboard/CumulativeMessageRatingStatsController.php new file mode 100644 index 0000000..dadaad3 --- /dev/null +++ b/app/Http/Controllers/HeadquartersDashboard/CumulativeMessageRatingStatsController.php @@ -0,0 +1,51 @@ +successResponse($data); + } +} diff --git a/app/Http/Controllers/HeadquartersDashboard/CumulativeVoiceRatingStatsController.php b/app/Http/Controllers/HeadquartersDashboard/CumulativeVoiceRatingStatsController.php new file mode 100644 index 0000000..dc37863 --- /dev/null +++ b/app/Http/Controllers/HeadquartersDashboard/CumulativeVoiceRatingStatsController.php @@ -0,0 +1,44 @@ +successResponse($data); + } +} diff --git a/app/Http/Controllers/Setad/CumulativeCentersStatsController.php b/app/Http/Controllers/Setad/CumulativeCentersStatsController.php deleted file mode 100644 index 6cea4ba..0000000 --- a/app/Http/Controllers/Setad/CumulativeCentersStatsController.php +++ /dev/null @@ -1,23 +0,0 @@ -json($data); - } -} diff --git a/app/Http/Controllers/Setad/CumulativeKeypressStatsController.php b/app/Http/Controllers/Setad/CumulativeKeypressStatsController.php deleted file mode 100644 index 47cdec0..0000000 --- a/app/Http/Controllers/Setad/CumulativeKeypressStatsController.php +++ /dev/null @@ -1,23 +0,0 @@ -json($data); - } -} diff --git a/app/Http/Controllers/Setad/CumulativeVoiceRatingStatsController.php b/app/Http/Controllers/Setad/CumulativeVoiceRatingStatsController.php deleted file mode 100644 index 15802b4..0000000 --- a/app/Http/Controllers/Setad/CumulativeVoiceRatingStatsController.php +++ /dev/null @@ -1,23 +0,0 @@ -json($data); - } -} diff --git a/app/Models/Cdr.php b/app/Models/Cdr.php new file mode 100644 index 0000000..1146aac --- /dev/null +++ b/app/Models/Cdr.php @@ -0,0 +1,11 @@ + env('DB_TRUST_SERVER_CERTIFICATE', 'false'), ], + 'asterisk' => [ + 'driver' => 'mysql', + 'url' => env('DB_URL'), + 'host' => env('ASTERISK_DB_HOST', '127.0.0.1'), + 'port' => env('ASTERISK_DB_PORT', '3306'), + 'database' => env('ASTERISK_DB_DATABASE', 'laravel'), + 'username' => env('ASTERISK_DB_USERNAME', 'root'), + 'password' => env('ASTERISK_DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => env('DB_CHARSET', 'utf8mb4'), + 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'), + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], ], /* diff --git a/database/factories/CountryMessageRatingReportFactory.php b/database/factories/CountryMessageRatingReportFactory.php index 475dd76..65b3f55 100644 --- a/database/factories/CountryMessageRatingReportFactory.php +++ b/database/factories/CountryMessageRatingReportFactory.php @@ -24,12 +24,15 @@ class CountryMessageRatingReportFactory extends Factory return Province::query()->find($attributes['province_id'])->name; }, 'date' => $this->faker->date(), - 'very_good' => $this->faker->numberBetween(10, 100), - 'good' => $this->faker->numberBetween(10, 100), - 'average' => $this->faker->numberBetween(10, 100), - 'bad' => $this->faker->numberBetween(10, 100), - 'very_bad' => $this->faker->numberBetween(10, 100), - 'wrong_code' => $this->faker->numberBetween(10, 100), + 'total' => $this->faker->numberBetween(100, 1000), + 'listens' => $this->faker->numberBetween(10, 100), + 'not_listens' => $this->faker->numberBetween(10, 100), + 'review_average' => $this->faker->numberBetween(10, 100), + 'action1' => $this->faker->numberBetween(10, 100), + 'action2' => $this->faker->numberBetween(10, 100), + 'action3' => $this->faker->numberBetween(10, 100), + 'action4' => $this->faker->numberBetween(10, 100), + 'action5' => $this->faker->numberBetween(10, 100), ]; } } diff --git a/database/factories/CountryVoiceRatingReportFactory.php b/database/factories/CountryVoiceRatingReportFactory.php index e794741..544e34b 100644 --- a/database/factories/CountryVoiceRatingReportFactory.php +++ b/database/factories/CountryVoiceRatingReportFactory.php @@ -24,12 +24,10 @@ class CountryVoiceRatingReportFactory extends Factory return Province::query()->find($attributes['province_id'])->name; }, 'date' => $this->faker->date(), - 'voice_quality_ok' => $this->faker->numberBetween(10, 100), 'message_quality_ok' => $this->faker->numberBetween(10, 100), - 'voice_format_ok' => $this->faker->numberBetween(10, 100), - 'voice_quality_nok' => $this->faker->numberBetween(10, 100), + 'message_format_ok' => $this->faker->numberBetween(10, 100), 'message_quality_nok' => $this->faker->numberBetween(10, 100), - 'voice_format_nok' => $this->faker->numberBetween(10, 100), + 'message_format_nok' => $this->faker->numberBetween(10, 100), ]; } } diff --git a/database/migrations/2025_07_21_062738_create_country_voice_rating_reports_table.php b/database/migrations/2025_07_21_062738_create_country_voice_rating_reports_table.php index b31a6c5..ad54226 100644 --- a/database/migrations/2025_07_21_062738_create_country_voice_rating_reports_table.php +++ b/database/migrations/2025_07_21_062738_create_country_voice_rating_reports_table.php @@ -16,12 +16,10 @@ return new class extends Migration $table->foreignId('province_id')->constrained('provinces'); $table->string('province_name'); $table->date('date'); - $table->integer('voice_quality_ok'); $table->integer('message_quality_ok'); - $table->integer('voice_format_ok'); - $table->integer('voice_quality_nok'); + $table->integer('message_format_ok'); $table->integer('message_quality_nok'); - $table->integer('voice_format_nok'); + $table->integer('message_format_nok'); $table->timestamps(); }); } diff --git a/database/migrations/2025_07_21_072211_create_country_message_rating_reports_table.php b/database/migrations/2025_07_21_072211_create_country_message_rating_reports_table.php index 1f92bfb..3c8604f 100644 --- a/database/migrations/2025_07_21_072211_create_country_message_rating_reports_table.php +++ b/database/migrations/2025_07_21_072211_create_country_message_rating_reports_table.php @@ -16,12 +16,15 @@ return new class extends Migration $table->foreignId('province_id')->constrained('provinces'); $table->string('province_name'); $table->date('date'); - $table->integer('very_good'); - $table->integer('good'); - $table->integer('average'); - $table->integer('bad'); - $table->integer('very_bad'); - $table->integer('wrong_code'); + $table->integer('total'); + $table->integer('listens'); + $table->integer('not_listens'); + $table->float('review_average'); + $table->integer('action1'); + $table->integer('action2'); + $table->integer('action3'); + $table->integer('action4'); + $table->integer('action5'); $table->timestamps(); }); } diff --git a/routes/web.php b/routes/web.php index 371e4fe..b65918b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -8,9 +8,10 @@ use App\Http\Controllers\CallController; use App\Http\Controllers\CategoryController; use App\Http\Controllers\ProfileController; use App\Http\Controllers\ProvinceController; -use App\Http\Controllers\Setad\CumulativeCentersStatsController; -use App\Http\Controllers\Setad\CumulativeKeypressStatsController; -use App\Http\Controllers\Setad\CumulativeVoiceRatingStatsController; +use App\Http\Controllers\HeadquartersDashboard\CumulativeCentersStatsController; +use App\Http\Controllers\HeadquartersDashboard\CumulativeKeypressStatsController; +use App\Http\Controllers\HeadquartersDashboard\CumulativeMessageRatingStatsController; +use App\Http\Controllers\HeadquartersDashboard\CumulativeVoiceRatingStatsController; use App\Http\Middleware\SuperAdminCheck; use Illuminate\Support\Facades\Route; @@ -119,4 +120,12 @@ Route::prefix('server')->group(function () { ->group(function () { Route::get('/', 'index')->name('index'); }); + + Route::middleware('auth') + ->prefix('cumulative_message_ratings') + ->name('cumulativeMessageRatings.') + ->controller(CumulativeMessageRatingStatsController::class) + ->group(function () { + Route::get('/', 'index')->name('index'); + }); });